Arming & Safety¶
A helicopter rotor is dangerous. Rotorflight has several layers of protection between "battery plugged in" and "rotor spinning" -- this page explains them, and how to read what the flight controller is telling you.
Blades off
Remove the main and tail blades for any setup work that can spin the motor: motor or mixer override, governor and ESC setup, arming tests.
Arming is not throttle hold¶
You need two separate switches on your radio:
| Arm switch | Throttle hold | |
|---|---|---|
| Lives in | The flight controller (the ARM mode) | The radio (sets the throttle channel to its minimum) |
| What it does | Enables the flight controller's outputs to the motor, and starts the stabilisation | Keeps the motor stopped, or stops it in flight for an autorotation |
| When you use it | Once before take-off, once after landing | Whenever you need the motor to stop -- including in flight |
| In flight | Never switch it off -- disarming stops the motor and the stabilisation, and the helicopter will crash | Safe to use; the governor can bail out of an autorotation |
Put the arm switch where you can't knock it by accident. Put throttle hold where you can reach it instantly.
Setting up the arm switch¶
-
On the radio, put the arm switch on a spare channel so it sends about 1000 µs when disarmed and 2000 µs when armed.
ELRS / CRSF receivers
Use AUX1 (channel 5) for the arm switch. ExpressLRS sends AUX1 at full rate and uses it to know when the model is armed. See ExpressLRS switch configs.
-
On the Modes tab, add a range for ARM on that channel, covering the upper end of its travel.
- Save, then flip the switch: the marker should move into the range and the ARM mode lights up.
The arming sequence¶
The flight controller arms only when every check passes. The usual order at the field:
- Throttle hold on, arm switch off.
- Plug in the battery and keep the helicopter still and level while the gyro calibrates.
- Wait for the ready wiggle (below) -- the flight controller is happy to arm.
- Arm.
- Release throttle hold to spool up.
After landing: throttle hold on, wait for the rotor to stop, disarm, unplug.
Swashplate wiggle¶
Before the first arming after power-on, the flight controller "talks" by moving the swashplate:
| Wiggle | Meaning |
|---|---|
| One short wiggle when arming becomes possible | Ready. Nothing is preventing arming. |
| Short collective bounce every 3 s while the arm switch is on | Can't arm yet -- something temporary, such as throttle not at zero, the helicopter not level, failsafe, or the RX not connected. Fix it and toggle the arm switch. |
| Long collective bounce every 5 s while the arm switch is on | Configuration error -- something that needs fixing on the bench: no gyro, CPU load too high, governor or RPM filter without an RPM signal, accelerometer not calibrated, no motor protocol, or reboot required. |
| One brief movement on arming | Armed (off by default). |
The wiggles only happen before the first arming of a flight, never in flight. They're configured from the CLI:
| Setting | Default | |
|---|---|---|
wiggle_enable_ready |
ON |
Ready wiggle |
wiggle_enable_error |
ON |
Short error bounce |
wiggle_enable_fatal |
ON |
Long error bounce |
wiggle_enable_armed |
OFF |
Wiggle on arming |
wiggle_strength |
50 |
How far the swashplate moves (0-100) |
wiggle_frequency |
10 |
How fast it moves (2-50) |
Arming disable flags¶
When the flight controller refuses to arm, the reason is shown as one or more arming disable flags. You can read them:
- On the Status tab of the Configurator.
- On the radio, in the Rotorflight Lua suite.
- In the CLI, with the
statuscommand.
| Flag | Meaning | What to do |
|---|---|---|
NO_GYRO |
No gyro detected. | Check the board selection; the gyro may be faulty. |
FAILSAFE |
Failsafe is active. | Check the receiver link. |
RX_FAILSAFE |
No valid signal from the receiver. | Check wiring, protocol and UART on the Receiver tab, and that the radio is bound. |
BAD_RX_RECOVERY |
The receiver has just recovered from failsafe while the arm switch was on. | Toggle the arm switch. |
BOXFAILSAFE |
The FAILSAFE mode switch is on. | Turn it off. |
GOVERNOR |
The governor is enabled but has no usable RPM signal. | Set up RPM measurement. |
RPM_SIGNAL |
A required RPM signal is missing. | Check the motor pole count and the RPM source on the Motors tab. |
THROTTLE |
Throttle is not at zero. | Turn throttle hold on, or lower the throttle. |
ANGLE |
The helicopter is not level. | Level it (within 25° by default). |
BOOT_GRACE_TIME |
Too soon after power-on. | Wait a moment and arm again. |
NOPREARM |
A PREARM mode is set up but not switched on. | Switch PREARM on before arming. |
LOAD |
CPU load is too high. | Lower the PID loop frequency on the Configuration tab, or turn off features. |
CALIBRATING |
Sensor calibration is still running. | Keep the helicopter still until it finishes. |
CLI |
The CLI is open. | Leave the CLI. |
CMS_MENU |
An on-screen menu is open. | Close it. |
BST |
A Black Sheep Telemetry device is preventing arming. | See the device's manual. |
MSP |
The Configurator is connected. | Expected while connected -- see below. |
PARALYZE |
PARALYZE mode was triggered. | Power cycle the flight controller. |
GPS |
A GPS fix is required but missing. | Wait for a fix. |
RESC |
The RESCUE mode switch is on. | Switch rescue off. |
RPMFILTER |
RPM filtering is enabled but an RPM signal is missing. | Set up RPM measurement, or turn off the RPM filter. |
REBOOT_REQ |
Settings were changed that need a reboot. | Reboot the flight controller. |
DSHOT_BITBANG |
DShot bitbang failed. | Check the board's timers and DMA, or set dshot_bitbang = OFF. |
ACC_CALIB |
The accelerometer needs calibrating. | Calibrate it on the Setup tab, or turn off the features that use it. |
MOTOR_PROTO |
No motor protocol is selected. | Select the ESC protocol on the Motors tab. |
OVERRIDE |
Servo, motor or mixer override is on. | Turn off all overrides. |
ARM_SWITCH |
The arm switch is on but something else is blocking arming, or it was on at power-up. | Fix the other flags and toggle the arm switch. |
Arming with the Configurator connected¶
The MSP flag stops the helicopter arming while the Configurator is
connected. For bench tests you can lift it with Enable Arming on the
Status tab. Blades off -- with arming enabled, releasing throttle hold
spools the motor up.
Failsafe¶
If the receiver loses the radio link, the flight controller holds the controls for a short time, then goes into failsafe. Set up what happens -- and test it, blades off, by switching the radio off -- on the Failsafe tab. Your receiver must be set to send no pulses (or the flight controller's own failsafe values) on signal loss, not to hold the last throttle position.