Every flag on the list has to clear before the quad arms. Fixing one and still getting no motors usually means a second flag was hiding behind it.
Four places to read the flags
CLI. Connect USB, open the CLI tab and type status. The Arming disable flags: line lists every active reason by name. On some targets with little flash space Betaflight prints only a hexadecimal value; the Betaflight wiki says to decode it against the armingDisableFlags_e enum in runtime_config.h, using the file from the same firmware version you are running.
Two flags show up there simply because you are connected: CLI (the CLI is open) and MSP (the Configurator is talking to the board). They clear once you exit the CLI and disconnect. It also means the quad will not arm on the bench while the USB cable is plugged into the Configurator, which is a common first-build surprise.
OSD. In the OSD tab, enable the Warnings element and, in the warnings list, turn on Arming Disabled. When you try to arm, the goggles show the reason by name, for example THROTTLE. For field troubleshooting this is the most convenient option, because you do not need a laptop.
Setup tab. The Configurator also shows the arming disable flags on the Setup tab. Oscar Liang notes they often appear as numbers there, which you then look up in the table from the Betaflight wiki.
Beeper. If a buzzer is connected, a failed arm attempt produces a code for the most important active flag, meaning the one with the lowest number:
- five short "attention" beeps, which you can ignore;
- a number of long beeps, each worth 5;
- a number of short beeps with long gaps, each worth 1.
The flag number is 5 × long beeps + short beeps. One long and two short beeps is 7; two long beeps and no short ones is 10. Check the number against the column for your firmware version, because the numbering has shifted between releases. The current Betaflight source on GitHub adds CRASHFLIP, ALTHOLD and POSHOLD before ARMSWITCH, so on the newest firmware the last numbers may not match the wiki table. Flag names are reliable everywhere; numbers depend on the version.
The flags you will actually meet
Names and fixes below come from the Betaflight wiki table, with practical notes from Oscar Liang's arming guide.
| Flag | What it means | What to do |
|---|---|---|
THROTTLE |
Throttle is above min_check |
Lower the stick fully. The default min_check is 1050, so the Receiver tab should show less than that at stick-low. If it does not, fix the radio endpoints |
ANGLE |
The quad is tilted more than small_angle (default 25°) |
Put it on a level surface. The same limit is Maximum Arm Angle in the Configuration tab |
ARMSWITCH |
Arm switch is in an unsafe position | Switch it off and on again |
RXLOSS or RX_FAILSAFE |
No valid receiver signal | Check binding, wiring and the Receiver tab |
NOT_DISARMED or BADRX |
The receiver just came back from failsafe with the arm switch on | Switch arm off first |
FAILSAFE |
Failsafe is active | Fix the cause of the failsafe and try again |
BOOTGRACE |
You tried too soon after power-on | Wait pwr_on_arm_grace seconds (default 5) |
CALIB |
Sensor calibration is still running | Keep the quad still and wait |
NOPREARM |
A prearm switch is configured and was not toggled | Toggle the prearm switch, then arm |
RUNAWAY, CRASH |
Runaway Takeoff Prevention or Crash Recovery has triggered | Disarm to clear |
GPS |
GPS Rescue is configured but there is no satellite fix yet | Wait for the fix, allow arming without a fix, or disable GPS Rescue |
RESCUE_SW |
The GPS Rescue switch is on | Turn it off |
RPMFILTER or DSHOT_TELEM |
RPM filtering is enabled but one or more ESCs send no RPM telemetry | Check that the ESCs and their firmware support bidirectional DShot |
MOTOR_PROTO |
No ESC protocol is selected | Pick one on the Configuration tab |
REBOOT_REQD |
A setting needs a reboot | Reboot the flight controller |
LOAD |
CPU load is too high | Reduce load (see below) |
NO_ACC_CAL |
The accelerometer needs calibrating | Calibrate it or disable features that use it |
CMS |
The OSD or other config menu is open | Exit the menu |
NOGYRO |
No gyro detected | Possible hardware failure, a firmware problem, or firmware built for the wrong board |
DSHOT_BBANG |
Bitbang DShot is not working | Usually a timer conflict with another enabled feature |
PARALYZE |
Paralyze mode was activated | Power cycle the flight controller |
A few of these need more than one line.
THROTTLE with the stick already down. Oscar Liang recommends channel ranges of roughly 1000-2000. Slightly outside that, such as 988 or 990 at the bottom and 2010-2012 at the top, is fine. If the lowest throttle value sits inside the range and above 1050, recalibrate the gimbals and endpoints on the radio rather than raising min_check.
ANGLE on a flat surface. Oscar Liang lists three options: level the quad, raise Maximum Arm Angle (he mentions 45° or 60°), or set it to 180° to disable the check. Some pilots disable it so they can arm a quad stuck in a tree and try to shake it free; that is a safety feature you are switching off, so decide deliberately. If the flag stays on even when the quad is level, he suspects the accelerometer. Disabling the accelerometer also disables Angle, Horizon, GPS Rescue and Position Hold, because they all depend on it.
CALIB that never finishes. Some boards have sensitive gyros and refuse to complete calibration after power-up. Oscar Liang suggests raising gyro_calib_noise_limit in the CLI to 100 or even 120.
LOAD. Check the CPU load at the bottom of the Configurator. Oscar Liang cites the Betaflight 4.5 recommendation of staying below 75% and suggests dropping the PID loop from 8 kHz to 4 kHz or disabling unused features such as LED_STRIP and soft serial.
RXLOSS or BADRX in flight. The Betaflight wiki notes that these can appear on the OSD while flying. Treat that as a sign of a faulty radio system or the edge of your range, the same way you would treat an "RSSI critically low" warning.
No flags, still no arming
If status shows nothing that blocks arming, the problem is usually elsewhere:
- Is ARM assigned at all? In the Modes tab, assign ARM to an AUX switch; with ExpressLRS this is usually AUX 1, which is channel 5. Flip the switch on the bench and watch the mode range respond. The Betaflight wiki also notes that a bad receiver initial state or failsafe setting can still cause problems with switch arming.
- Does the receiver map correctly? In the Receiver tab, move each stick and check that the matching channel moves. If they are mixed up, try a different channel map.
- Are the ESCs alive? With a battery plugged in, the motors should beep as the ESCs start. Choose DShot300 or DShot600 as the protocol, then remove the props and spin each motor from the Motors tab.
If you are still stuck after that, post the full status output when you ask for help on a forum. It answers the first question anyone will ask.