Firmware Limitations on AutoPilot Hardware¶
The ArduPilot firmware in some configurations exceeds 1 MB in size. Some autopilots may not have enough flash memory to store the full firmware.
For the affected autopilots, a reduced firmware is generated. This firmware omits less-commonly used features in order to reduce the firmware size to less than 1 MB.
The missing features are listed below. If you require any of these features, you can try to create a build with them in it (at the expense of other non-needed features) using the Custom Firmware Build Server.
Limitations Common to all 1MB Boards¶
Exclusions for: KakuteF4, Sparky2, OMNIBUSF7V2, KakuteF7, KakuteF7 Mini, older versions of the Pixhawk (with the RevA, RevY and Rev1 of the STM32F427 chip), BeastF4, F35Lightning, F4BY, MambaF405v2, MazzyStarDrone, OmnibusNanoV6, VRBrain-v51, VRBrain-v52, VRCore-v10, VRUBrain-v51, airbotf4, crazyflie2, mini-pix, revo-mini, skyviper, speedybeef4.
- EFI Controller Support
- External AHRS
- FETtec ESCs
- INA2XX Battery Monitors
- Plane Deep Stall Landing
- Torqeedo Motor Control
- MAVLink frame rate control from SD file
- INS Temperature Calibration
- SOLO Gimbal Support
- Visual Odometry
- Airspeed Drag Compensation
- Plus Code Location Support
- Object Avoidance using Proximity Sensors
- CRSF Text Display (Telemetry is included)
- Bootloader inclusion in main code base
- EKF2 (EKF3 only)
- LUA scripting support
- In-Flight FFT control of Harmonic Notch
Additional Limitations for Certain 1MB and Other Boards¶
Additional Feature Exclusions for: Sparky2, OMNIBUSF7V2, KakuteF7, and older versions of the Pixhawk (with the RevA, RevY and Rev1 of the STM32F427 chip)
- Common to all vehicles
- Aux function for testing IMU failover (KILL_IMU)
- LTM, MSP, CRSF, Spektrum, Devo and Hott telemetry formats
- Piccolo CAN
- Oreo LED lights
- NCP5623 LED lights
- NMEA output format
- Solo Gimbal
- In Flight FFT support
- MTK, SIRF GPS support
- AK09916 on ICM20948 compass
- Runcam Control
- External I2C barometers
- DLVR Airspeed sensors
- CAN Tester
- KDE CAN
- External AHRS
- GPS moving baseline
- MSP Rangefinders
- Camera Mount Control
- OSD Parameter Editor
- OSD Scrolling Sidebars
- Copter only
- Guided, Follow, Sport, Guided_noGPS, SystemID, Zigzag and Autorotate modes
- Optical Flow
- Plane Only
- Landing Gear
- Qautotune mode
- Off-board Guided
- Rover Only
- Sub Only
Additional exclusions for: Matek F405, Matek F405-Wing/F405-SE, OmnibusF4/F4Pro
- SMBUS battery
- Precision Landing
- Baro Wind Compensation *
- Gripper *
- enabled in OmnibusF4/F4Pro
Also for MatekF405-Wing:
- Wind Compensation
- RunCam Control
- Spektrum Telem
Additional exclusions for: SuccexF4
There may be insufficient RAM available in some flight controllers to support all enabled firmware features. Some possible symptoms are:
- MAVFTP does not work. Parameter downloads to GCS are delayed starting while the GCS tries to establish a MAVFTP link which cannot be setup, and then proceed slowly to download parameters using the normal download method.
- Compass Calibration will not start
- Logging will not start
- Terrain downloading from GCS will not start
- Interfaces will not initialize, such as CAN: “Failed to initialise CAN Interface xx”
If this occurs, several possible options are available to allow temporary use of MAVFTP, download terrain tiles, allow a driver to be loaded, and/or Compass Calibration. All require a reboot to take effect:
- Make sure IMU Batch Sampling (used for FFT analysis) is not running by setting INS_LOG_BAT_MASK = 0.
- Try temporarily disabling logging by setting LOG_BACKEND_TYPE to 0, then returning to 1 (default) after calibrating.
- Reduce the size of LOG_FILE_BUFSIZE . However, lowering below 16KB can introduce small gaps in the log. This may be used temporarily to download terrain or calibrate compass.
- Disable Terrain Following temporarily by setting TERRAIN_ENABLE to 0.
- Disable SmartRTL on Copter by setting SRTL_POINTS = 0.
- If using DroneCAN, try reducing the memory allocation from the default of 16KB (for two nodes) using the
in Mission Planner’s STATUS tab, you can monitor the “freemem” status for current free RAM. Be aware, that its a total of unallocated memory and that everything that requires a memory allocation needs it to be one, contiguous block. But the status will give an indication of what is available. For example, MAVftp needs ~ 12K contiguous block to start.