Betaflight Arming Disable Flags Troubleshooting: CLI Status, MSP Debugging, and Pre-Arm Fixes — 2026 Guide

You plug in, hear the ESC tones, throttle up — nothing. The OSD flashes “ARMING DISABLE” but the flag list scrolls too fast to read. Every pilot hits this. The arming disable flag system is Betaflight’s most useful diagnostic tool and its most frustrating UI. Here’s how to decode every flag and fix the underlying problem.

Understanding the Arming Disable Flag System

Betaflight maintains a 32-bit bitmask where each bit represents one reason the flight controller refuses to arm. The OSD shows a human-readable list, but the real power is in the CLI where you can query each flag individually.

Step 1: Read Flags in the OSD

In Betaflight Configurator → OSD tab, add the “Arming Disable Flags” element to your display. Position it somewhere you can read before takeoff. When arming fails, this element shows which flags are active. The OSD shows up to 3-4 flags at a time — if you have more, they rotate.

Connect USB, open CLI, type status. Look for the “Arming disable flags” line. It shows the bitmask hex value and a decoded list. Example:

Arming disable flags: 0x104 CLI MSP

The hex value 0x104 means bits 2 (CLI=0x4) and 8 (MSP=0x100) are set, totaling 0x104. Here’s the full bitmask map:

Flag Name Hex Value Bit Meaning Fix
NO_GYRO 0x1 0 Gyro not detected Reflow FC, check ribbon cable
FAILSAFE 0x2 1 Radio link lost Check RX power, antenna connection
RX_FAILSAFE 0x4 2 RX failsafe active Bind RX, verify channel output
BAD_RX 0x8 3 No valid RX signal Check serial protocol, wiring
BOXFAILSAFE 0x10 4 Failsafe switch active Check mode tab, switch positions
THROTTLE 0x20 5 Throttle not at zero Lower throttle below min_check
ANGLE 0x40 6 Tilt angle exceeds limit Place quad level (small_angle default 25°)
BOOT_GRACE 0x80 7 Boot grace period active Wait 5 seconds after power
NOPREARM 0x100 8 Pre-arm switch not engaged Set up pre-arm in modes tab
LOAD 0x200 9 CPU load too high Reduce PID loop to 4kHz or disable features
CALIB 0x400 10 Sensor calibration in progress Wait for calibration, keep quad still
CLI 0x800 11 CLI is open Close CLI tab in Configurator
CMS 0x1000 12 CMS menu open Exit OSD menu (yaw left + pitch up)
BST 0x2000 13 Blackbox device not ready Wait for SD card init
MSP 0x4000 14 MSP connection active Disconnect USB/Configurator to arm
PARALYZE 0x8000 15 Crash recovery active Quad must be level and still
GPS 0x10000 16 GPS rescue count too low Increase GPS rescue min satellites
RESC 0x20000 17 GPS rescue switch active Disable GPS rescue mode
RPMFILTER 0x40000 18 RPM filter not ready ARM after ESC telemetry stabilizes
REBOOT_REQD 0x80000 19 Settings need reboot Save and reboot after config change
DSHOT_BITBANG 0x100000 20 DShot bitbang active Disable bidirectional DShot in config
ACC_CALIB 0x200000 21 Accelerometer calibrating Wait for calibration
MOTOR_PROTO 0x400000 22 Motor protocol mismatch Set correct ESC protocol
OVER_TEMP 0x800000 23 FC temperature too high Let cool down (>80°C triggers)
OSD_MENU 0x1000000 24 OSD menu active Exit OSD menu
CRASH_RECOVERY 0x2000000 25 Crash recovery mode Clear by disarming and re-arming
ARM_SWITCH 0x4000000 26 Arm switch in wrong position Check arm mode switch assignment

Step 3: Decode MSP Flag (Most Confusing for Beginners)

When you see MSP in the flags, it means the flight controller thinks a computer is connected. This disables arming as a safety measure — Betaflight won’t let you arm while you could be changing settings from the computer.

Three things trigger MSP flag:
1. USB cable connected (most common) — simply unplug USB
2. Bluetooth/WiFi module on a UART with MSP enabled — disable MSP on that UART
3. Open Configurator tab even after USB disconnect — close and reopen

Quick test: If status shows MSP and USB is unplugged, check the Ports tab for MSP enabled on UARTs that have nothing connected.

Step 4: The THROTTLE + ANGLE Combo — Most Common Field Problem

You land, disarm, walk to a new launch spot, try to arm — nothing. Flags show THROTTLE and ANGLE. Your throttle stick isn’t fully down (below min_check, default 1050) and the quad isn’t level within small_angle (default 25°).

Fix: Lower throttle to absolute zero AND place quad on level ground. If you’re on a slope (e.g., flying from a hillside), increase small_angle to 180 in CLI: set small_angle = 180 then save. This disables the angle check entirely — useful for launching from uneven terrain but disables the tip-over protection.

Common Mistakes & How to Avoid Them

Mistake 1: Not Setting Up a Pre-Arm Switch
Without a pre-arm, the arm switch alone can trigger accidental arming when you set the radio down. Pre-arm requires two deliberate actions — hold pre-arm, flick arm. Every quad I build has pre-arm on a momentary switch. In the Modes tab: add a range for “PREARM” on an aux channel. The pre-arm must be active for arming to work. If the pre-arm switch breaks in flight, you can still disarm normally.

Mistake 2: Forgetting to Close CLI Before Field Arming
You connect at home, tweak PIDs in CLI, type save, unplug, head to the field — and the quad won’t arm. CLI flag is set because the save command reboots with CLI still technically open in the session. Fix: After save in CLI, type exit before unplugging. Or just power cycle the quad after config changes.

Mistake 3: GPS Rescue Triggering GPS Flag
If you’ve configured GPS rescue but haven’t acquired enough satellites, the GPS flag blocks arming. Default gps_rescue_min_sats is 8. On overcast days or in urban canyons, GPS lock can take 2-3 minutes. Fix: Lower to 5-6 satellites in CLI (set gps_rescue_min_sats = 5) if you’re comfortable with reduced rescue accuracy, or wait for full lock. The wait is worth it — a rescue triggered with 4 satellites can land your quad 200m from its actual position.

Mistake 4: Crashing Without Understanding CRASH_RECOVERY
After a crash, Betaflight may enter crash recovery mode automatically. The quad won’t re-arm until it detects level attitude and zero throttle. If you crash into tall grass where the quad can’t self-level, the flag persists. Fix: Physically pick up the quad and hold it level for 2 seconds, or disable crash recovery in CLI: set crash_recovery = OFF (then re-enable it after).

Mistake 5: RPMFILTER Flag on First Boot After Flash
Fresh Betaflight 4.5+ flash, bidirectional DShot enabled, RPM filtering active — and the RPMFILTER flag blocks arming for the first 2-3 seconds after plug-in while ESC telemetry initializes. It’s not a bug, it’s a safety delay. Wait 5 seconds and try again. If it persists beyond 10 seconds, your ESCs don’t support bidirectional DShot — disable RPM filtering or upgrade ESCs.

⚠️ Regulatory Notice: The arming safety features described in this article are consistent with 2026 remote ID and flight safety requirements in most jurisdictions. In the United States, the FAA’s Remote ID rule requires that UAS not be capable of arming unless all required telemetry is broadcasting. Always verify your failsafe and pre-arm configurations comply with local regulations. The EASA (EU) Open Category requires a reliable means of immediately stopping the flight — Betaflight’s disarm switch fulfills this requirement.

If you’re wrestling with persistent RX-related arming flags, our ExpressLRS binding troubleshooting guide covers the radio side. For pilots who want the full CLI diagnostic toolkit, our Betaflight CLI power user guide details every command worth memorizing.

For pilots who want a flight controller with robust pre-arm handling and dual-stage arming built into the target defaults, the SpeedyBee F405 V4 Stack comes pre-configured with sensible arming safety defaults and excellent CLI documentation. Available at uavmodel.com under flight controllers.


Leave a Comment

Scroll to Top