There is a central subsystem used to control LED status notifications and buzzers called the “annunciator” subsystem.

Adjusting alarm destinations

There is primitive support within the GCS for controlling where alarms are annunciated. It can be found in Configuration → Modules → Annunciators.

By default, all alarms blink on the “heartbeat” LED if the hardware has one. Everything of severity “warning” or worse blinks on the “alarm” LED as well. Finally, alarms having to do with the radio subsystem beep through an attached buzzer on supported hardware, but only after arming has taken place (this avoids nuisance alarm beeps on powerup).

The following are the blink codes supported by the hardware:

Sequence Meaning
— , — , — … Normal (disarmed)
•• , •• , •• … Normal (armed)
•—• , •—• , •—• … No connection to radio (failsafe)
—••• , —••• , —••• … Battery status alarm
—•—• , —•—• , —•—• … System configuration issue:
attempting to arm in illegal mode (like AutoTune)
or flight modes configured without associated module running
——• , ——• , ——• … GPS alarm
•— , •— , •— … Other alarm not otherwise specified (connect GCS)

There are also panic codes that happen at startup. For these, generally only the error LED will blink. They are repeated three times and then the flight controller reboots. These usually indicate a hardware problem:

Sequence Meaning
2 blinks ( •• ) Failed to communicate with gyro
3 blinks ( ••• ) Failed to communicate with magnetometer (compass)
4 blinks ( •••• ) Failed to communicate with barometer (altimeter)
5 blinks ( ••••• )
or 6 blinks ( •••••• )
Flash chip or flash filesystem problem
7 blinks ( ••••••• )
or 8 blinks ( •••••••• )
Problems with I2C (internal or external)
9 blinks ( ••••••••• ) Failure to communicate via SPI
10 blinks ( •••••••••• ) Failure to communicate via CAN
11 blinks ( ••••••••••• ) Failed to initialize ADC
12 blinks ( •••••••••••• ) Failed to initialize On-Screen Display