Drone do not arm. How to solve?

A very common problem when you are a beginner is to not be able to make the drone arm. Usually this happens for some simple to solve problem. I will demonstrate below the main causes and how to solve.

This article is intended only for drones that use BetaFlight or CleanFlight flight controllers. If you have an APM, Naza, OpenPilot, LibrePilot or any other that does not run BetaFlight or CleanFlight, this article is not for you.

The drone will not arm only in the following situations:

  • The arming command is not being recognized by the flight controller (radio switch or command on the levers).
  • The drone is not on a level surface.
  • The accelerometer has never been calibrated.
  • The throttle is not fully lowered.
  • The CPU load is too high.

I will detail each of these problems:

The arming command is not being recognized by the flight controller

Note: If you arm your drone using lever (throttle lever down and right), swap immediately by a switch command. This type of command is dangerous and should be avoided at all costs.

You probably have a radio channel dedicated to the task of arming and disarming the drone. Normally you use channel 5 of the radio (AUX 1 in BetaFlight) for this. Then all you have to do is connect the drone to the computer, and on the BetaFlight, on the Receiver tab, check if your arming switch is being recognized by the controller.

Move the switch on the radio and watch which channel is moving. Then go to the “Modes” tab and check that the ARM mode is set to the same channel. Also check that the value of the key is always between 1000 and 2000. If it falls below 1000 or above 2000, you will need to adjust the Endpoints on the radio to avoid this and stay within these limits.

The drone is not on a level surface.

Every time you plug the battery on the drone, the controller will try to calibrate the gyro. And for that, the drone will need to stand on a level surface for about 2 seconds. If you plug the battery into the drone and hold it on your hand, you will not allow it to calibrate the gyro, and it will not arm until it does this.

In addition, by default, BetaFlight only allows you to arm the drone if it is on a flat, level surface (exactly aligned with the horizon). So if the drone is tilted or on an uneven surface, it will not allow arming. To solve this you have two options: either you turn off the accelerometer, or you inform the maximum incline angle that BetaFlight will tolerate to arm.

Turning off the accelerometer will make BetaFlight run faster, but will prevent you from using Stabilized mode (ANGLE). To turn off the accelerometer, go to the CLI and enter the following commands:

set acc_hardware = 1

If you want to keep the accelerometer turned on, but you want to allow the tilted drone to arm, then the commands are as follows:

set small_angle = 180

180 is the maximum inclination (in degrees). With 180 the drone will arm even if it’s upside down. So use it caution.

The accelerometer has never been calibrated.

If you keep the accelerometer turned on, you need to calibrate it at least once. Place the drone on a level surface (on the floor, preferably), and with it connected to the computer, click on “Calibrate Accelerometer” (it is on the first tab, “Setup”).

Or just turn off the accelerometer using the CLI command I taught in the previous topic.

The accelerator is not fully lowered.

To arm, the throttle lever must be fully lowered. The drone will not arm if the throttle value exceeds 1050.

If even with the accelerator on the lowerest position the drone does not arm, connect the drone to the computer, open BetaFlight, in the “Receiver” tab, check the value of the “Throttle” channel. If it is greater than 1050, you probably need to adjust the endpoints of your throttle lever. Check all channels.

All of them should look like this:
Minimum 1000
Max 2000
Middle 1500

Avoid using Dual Rate, Endpoints and Expo on the radio. On drones you always adjust these parameters on the flight controller, and never on the radio transmitter.

The CPU Load is too high

You can check CPU usage on the BetaFlight status bar (at the bottom). If the CPU Load is above 30%, the controller is too busy to control the flight. This happens when your controller is doing too many tasks, or it needs to do the tasks very quickly (faster than it can do).

The first thing you can do is to reduce the frequency of the loop. If you are with 4k, put 2k. If you have 2k, put 1k. If it is already in 1k and the Load CPU still is above 30%, then you have another problem, since 1k has to work even in the older flight controllers.

Make sure you are using “Led Strip”, “CPU Based Serial Ports”, “Telemetry”, “Blackbox”, and turn off if you are.

If CPU usage is still high, turn off the accelerometer. Turn off the barometer and magnetometer if your flight controller has these sensors too.

See also