I am using the APM 2 for both my quads and it is tricky to get the barometer covered to avoid errant airflow since it is below the daughterboard. To solve this, I ended up pretty much filling up my stack cover with breathable foam. But once that was done, I could barely see the on-board LED indicators.

Fortunately, the current code supports remote indicators without too much trouble.

If you look at the pin-out images on the Wiki, you will see that the AN pins are labeled Motor LEDs. They really don’t have a lot to do with the motors – but they do serve as pretty handy indicators.


If you look in the code, you will find defines for these pins as follows:

AN4 – Motor or Aux LED

AN5 – Motor or Beeper

AN6 – Motor or GPS

AN7 – Motor

AN8 – Motor

For my purposes, I focused on AN5 for the Beeper, AN6 for GPS indicator and AN7 as an Armed indicator.

The default seems to be to have the beeper enabled and the LEDs on. That is easy to change however. The different possibilities are set using bit masks to build the LED_mode parameter. A bit mask (if you already know, feel free to skip ahead) is simply a way of packing a bunch of on/off settings into one byte of data. A Byte is 8 bits, so you can have 8 different switches in one byte.  If you look at the following table, you will see a single bit is set to ‘1’ and the rest to ‘0’ in each row. To build the mask, you just add all the rows together and convert to a decimal number (or convert then add).

Bit Number

7              6              5              4              3              2              1              0

0              0              0              0              0              0              0              1      =      1              Motor LEDs On/Off

0              0              0              0              0              0              1              0      =      2              GPS On/Off

0              0              0              0              0              1              0              0      =      4              AUX Function On/Off

0              0              0              0              1              0              0              0      =      8              Beeper On/Off

0              0              0              1              0              0              0              0      =      16            Low Battery Flash – fast/slow

0              0              1              0              0              0              0              0      =      32            Motor LEDs NAV blink On/Off

0              1              0              0              0              0              0              0      =      64            GPS LEDs Nav Blink On/Off

1              0              0              0              0              0              0              0      =      128          Not used


Note that the NAV settings cause the LEDs (either the motor LEDs, the GPS LED, or both) to blink 3 times when you hit a waypoint in AUTO flight.

The low battery flashing defaults to fast flash so setting that bit to 1 will enable slow flash. 


I really only want the beeper, the GPS and the Motor LEDs on, so I set the mode to decimal value 11 (which is binary 00001011). This should equate to: GPS Nav blink off, Motor LED Nav blink off, low battery flash fast, beeper on, AUX off, GPS on, Motor LEDs on..


The way you set this to be the value used is through the Mission Planner.


Establish a connection with the APM and the Mission Planner software. Go to the parameters list and find LED_Mode. It should be set to something like 9. Change that to 170 (or whatever you decide to use) and write the settings to the APM.

The outputs on the APM are 5V, so for most LEDs, you’ll need a resistor on the positive lead (the longer leg of the LED). In my case, the blue LED I was using required a 100 Ohm resistor and the red one required a 150 Ohm resistor (note – not going to explain it here, but there are a ton of online resources and calculators to figure out the resistor values needed for a given LED). I soldered up the resistors and LEDs to leads and cemented them at the edge of my stack cover’s base. For the beeper, I just used a 5V piezo beeper I happened to have lying around. Radio shack sells one that will work, but it isn’t very loud. If you want volume, you may need to shop around,


When you connect to the AN outputs, you need to run the negative lead to the ground pin (the one nearest the edge of the board) and the positive lead goes to the signal pin (the one farthest from the edge of the board). The middle pin is always 5 Volts so if you plugged in there, the LED or beeper would be always on.


Beeper goes to AN5, GPS to AN6 and the ARMED light goes to any other motor LED output, but I chose to just use AN7.


That’s all there is to it. When you turn on the APM, you the LEDs will stay off until it is booted, then will flash the same as the on-board ones. When a GPS lock is achieved, the GPS LED will stay lit. When the bird is armed, the red LED will blink out and once it is fully armed, it will light a solid red. The beeper will beep twice on arming, and once on disarm.


E-mail me when people leave their comments –

You need to be a member of diydrones to add comments!

Join diydrones


  • Hello, just one question... I don't know if it's possible to change the mapping to the outputs channels, for example, use the beeper on A6, the Arm in A7 and the GPS on A5,
    I would like to install 3 strobe led's(http://www.hobbyking.com/hobbyking/store/__26240__LED_PCB_Strobe_Re...) that work when armed (If possible, without making any joint) I Just want to use the beeper an that 3 strobe arm leds... That means that I need the output to be 0 when not armed, if not it will blink always because the capacitors are charging if the output blinks... Is it possible to have that output off when not armed?

  • I have added the beeper from the T9x Radio that I removed to my Quadcopter and just wrapped it in foil... i have had no such issues... strange. It works great... 

  • Watch out when adding beepers to the APM.


  • I'm using ArduCopter V3.0.1 on an APM 2.5 and trying to get external status lights working. 

    I was planning on using a ULN2803 Darlington transistor array controlling the LEDs (and a piezo buzzer) directly from the signal pins 4-11 on my APM. 

    I have the parts I thought I wanted and have been testing the display modes with bitmaps in the LED_MODE and can't seem to get a display pattern that matches what I want. 

    In general I want blinking to indicate that things are not in a flyable state. I wouldn't mind having one item blinking just drive a single set of LEDs but the primary settings I want are:

    GPS: Lock=Solid No_GPS_Lock=Blink

    Motors: Armed=Solid Not_Armed=Blink

    Battery/PiezoBuzzer: Good=Off Bad=Solid or Blink

    I saw a code segment a few pages ago that sounded pretty close to my description. Am I going to have to build my own version of the firmware to be able to get the status indicators that I want?

  • You can join multiple AMC7135 - each giving 350mA. They are not for 12V but LED is current-driven so if you have 10W/12V LED that means 0,83A for it. You could use two AMC or three with PWM driving to cut the current below maximal for that particular LED.

    IO-Board or directly APM could drive even 100W or 1kW with proper driver between. Just use APM/IO-Board output as driving pin - not current source.

  • What about high-output multi-color strobe... 

  • Developer

    Currently IO-Board max current is 500mA/12V per pin but me and Stefan we are working on the electronics that you can pull up to 10W/12v. 

    jD-IOBoard v1.1, MCU controlled IO Board for driving LEDs, Relays, Servos
    R/C UAV and ArduCopter manufacturer and one stop shop. We make your FPV come true.
  • I will bite... 

  • Fire them up with auto land mode. Useful especially in planes while descending :)

  • Developer

    Just got some 10W really bright LEDs to play with. Anyone interested to see how we can integrate them on APM ??

This reply was deleted.