The safety switch has not been pressed
What ArduPilot says:
- PreArm: Hardware safety switch
- PreArm: Safety Switch
The board's safety lock is on. While it is on, the motor and servo outputs are held off (all but those listed in BRD_SAFETY_MASK), so nothing can spin, and arming is refused. A board that starts with the lock on (BRD_SAFETY_DEFLT 1) waits for its safety button: the button's light flashes while the lock is on and stays lit once it is off. Copter tests it again at the moment of arming, as “Safety Switch”.
What to do, most likely first
The safety button has not been pressed since power-on.
CheckLook at the button's light: flashing means the lock is still on.
FixProps off or the aircraft held down, press and hold the button for about a second, until its light stays on.
BRD_SAFETYOPTIONsays when the button is obeyed; by default it works in both directions while disarmed and not at all while armed.The board has no safety button, but
BRD_SAFETY_DEFLTis 1: often from a parameter file made for a Pixhawk or a Cube.CheckIf the board has no safety connector (most all-in-one FPV boards) and no GPS module with a button is plugged in, nobody can press it.
FixSet
BRD_SAFETY_DEFLTto 0 and reboot: the board then starts with the lock off. This is how a board without the button is meant to run, and its default there.The lock comes back on at every disarm:
BRD_SAFETYOPTIONbit 3 asks for that.FixPress the button before each arming, or clear bit 3 of
BRD_SAFETYOPTIONif you did not mean it.The button, its cable, or the GPS module that carries it is unplugged or broken.
CheckOn Pixhawk-style boards the button is often on the GPS module: check that connector. The ground station can release the lock by command; if that works, the button is at fault.
FixRepair the cable or replace the button. Until then the ground station can release the lock for one session, props off.
With the lock on, the flight controller is fully awake but cannot turn a motor: it is the last barrier between a mistaken arm and a spinning prop. If your board has the button, keep using it.
Parameters to look at
| Parameter | What it is |
|---|---|
BRD_SAFETY_DEFLT | Sets default state of the safety switch |
BRD_SAFETYOPTION | Options for safety button behavior |
BRD_SAFETY_MASK | Outputs which ignore the safety switch state |
Where to do it:Setup & Tuning GuideBoard & Wiring Planner
The code that sends it
PreArm: Hardware safety switch
libraries/AP_Arming/AP_Arming.cpp AP_Arming::hardware_safety_check() · Open in ArduPilot Copter-4.7.1
PreArm: Safety Switch
ArduCopter/AP_Arming.cpp AP_Arming_Copter::arm_checks() · Open in ArduPilot Copter-4.6.3
ArduCopter/AP_Arming_Copter.cpp AP_Arming_Copter::arm_checks() · Open in ArduPilot Copter-4.7.1