Arming Sequence & Safety
Switch arming
The AUX channel configured for arming will choose a default value that falls outside of the configured arm range (as configured in the "Modes" configurator tab), this value is either 1 "step" (25us) above or below the configured range. This is a safety feature to ensure the default value would not cause accidental arming.
Note that this default value is overwritten by the first values data from the receiver, therefore bad RX initial states or failsafe settings can still cause issues.
Arming Prevention
Betaflight 3.2 (and above) includes more detailed troubleshooting information for the case when a craft will not arm.
This information is available via:
- the CLI
- Betaflight OSD
- beep patterns
- Betaflight Configurator
Several of these conditions are to assist in preventing accidental arming via bad radio system configuration, unreliable/poor quality receivers and user mistakes.
These reasons for not arming are encoded as a set of flags (see runtime_config.h).
CLI
Flags can be viewed via the status
command.
Some targets with limited flash space will only provide the hexadecimal representation of these flags, in which case the active flags must be derived from the armingDisableFlags_e
enum in runtime_config.h
(ensure the version of the file you are looking at matches that of your firmware).
Beeper
When arming is attempted and fails, if a beeper is connected to the flight controller it will emit a warning signal indicating the most important (lowest number) reason why disarming is disabled.
The signal is as follows:
- five short 'attention' beeps;
- a number of long beeps (may be 0);
- a number of short beeps with long intervals (may be 0).
The arming prevention condition that is active can be calculated as (5 * <number of long beeps>) + <number of short beeps>
. For example:
- 1 long and 2 short beeps = 7
- 2 long beeps = 10
Description of arming prevention flags
What each flag means and what you should do to (probably) fix the issue.
This list should be kept up to date with the code in master
(armingDisableFlags_e
in src/main/fc/runtime_config.h) so can be used to find what flag corresponds to a certain index, however if you run an older version you'd have to check this manually as mentioned above.
Name | Description | Beep code | Required Actions | |||||
---|---|---|---|---|---|---|---|---|
3.2 | 3.3 | 3.4/3.5 | 4.0 | 4.1 | 4.2+ | |||
NOGYRO | A gyro was not detected | 1 | 1 | 1 | 1 | 1 | 1 | You may have a hardware failure, if a previous firmware version works then it may be a firmware issue. Or you might have flashed a wrong target. |
FAILSAFE | Failsafe is active | 2 | 2 | 2 | 2 | 2 | 2 | Rectify the failure condition and try again. |
RXLOSS (1) or RX_FAILSAFE | No valid receiver signal is detected | 3 | 3 | 3 | 3 | 3 | 3 | Your receiver is either faulty or has no link to the transmitter. |
BADRX (1) | Your receiver has just recovered from receiver failsafe but the arm switch is on | 4 | 4 | 4 | 4 | 4 | 4 | Switch the arm switch off. |
BOXFAILSAFE | The 'FAILSAFE' switch was activated | 5 | 5 | 5 | 5 | 5 | 5 | See FAILSAFE |
RUNAWAY | Runway Takeoff Prevention has been triggered | 6 | 6 | 6 | 6 | 6 | Disarm to clear this condition. | |
CRASH | Crash Recovery has been triggered | 7 | 7 | Disarm to clear this condition. | ||||
THROTTLE | Throttle channel is too high | 6 | 7 | 7 | 7 | 8 | 8 | Lower throttle below min_check . |
ANGLE | Craft is not level (enough) | 7 | 8 | 8 | 8 | 9 | 9 | Level craft to within small_angle degrees (default 25). |
BOOTGRACE | Arming too soon after power on | 8 | 9 | 9 | 10 | 10 | 10 | Wait until pwr_on_arm_grace seconds (default 5) have elapsed. |
NOPREARM | Prearm switch is not activated or prearm has not been toggled after disarm | 9 | 10 | 10 | 10 | 11 | 11 | Toggle the prearm switch. |
LOAD | System load is too high for safe flight | 10 | 11 | 11 | 11 | 12 | 12 | Revisit configuration and disable features. |
CALIB | Sensor calibration is still ongoing | 11 | 12 | 12 | 12 | 13 | 13 | Wait for sensor calibration to complete. |
CLI | CLI is active | 12 | 13 | 13 | 13 | 14 | 14 | Exit the CLI. |
CMS | CMS (config menu) is Active - over OSD or other display | 13 | 14 | 14 | 14 | 15 | 15 | Exit the CMS (or OSD menu). |
OSD | OSD menu is active | 14 | 15 | 16 | Exit OSD menu. | |||
BST | A Black Sheep Telemetry device (TBS Core Pro for example) disarmed and is preventing arming | 15 | 16 | 16 | 15 | 16 | 16 | Refer to the manual for your hardware. |
MSP | MSP connection is active, probably via Betaflight Configurator | 16 | 17 | 17 | 16 | 17 | 17 | Terminate the Betaflight Configurator connection (disconnect). |
PARALYZE | Paralyze mode has been activated | 18 | 17 | 18 | 18 | Power cycle/reset FC board. | ||
GPS | GPS rescue mode is configured but required number of satellites has not been fixed | 19 | 18 | 19 | 19 | Wait for GPS fix, enable arming without GPS fix, or disable GPS rescue mode. | ||
RESCUE_SW | GPS Rescue switch is in an unsafe position | 19 | 20 | 20 | Turn off the GPS Rescue switch to arm. | |||
RPMFILTER (2) or DSHOT_TELEM | Motor RPM-based filtering is not functioning | 21 | 21 | 21 | One or more ESC's are not supplying valid RPM telemetry. | |||
REBOOT_REQD | Reboot required | 22 | 22 | Reboot the flight controller for settings changes to take effect. | ||||
DSHOT_BBANG | DSHOT Bitbang is not working | 23 | 23 | (3) | ||||
NO_ACC_CAL | Accelerometer calibration required | 24 | Calibrate the accelerometer or disable features that use it | |||||
MOTOR_PROTO | ESC/Motor Protocol not configured | 25 | Select the ESC/Motor protocol to use on the Configuration tab. | |||||
ARMSWITCH | Arm switch is in an unsafe position | 17 | 18 | 20 | 21 | 24 | 26 | Toggle the arm switch to arm. |
(1) This may appear on the Betaflight OSD during flight, take it as a sign that your radio system is either faulty or you are flying at the edge of your range. Treat it the same you would an "RSSI critically low" warning.
(2) RPM-based filtering is enabled but one or more ESC's are not supplying valid DSHOT telemetry. Check that the ESC's are capable of and have the required firmware installed to support bidirectional DSHOT telemetry.
(3) Bitbang DSHOT is not working properly and the motors can't be controlled. Likely caused by a timer conflict with other features enabled on the flight controller.