Flight Controllers


This blog is an attempt to understand the options available when choosing a flight controller for your RC drone.

See also RC Transmitters, and RC Receivers, for information on SBUS and APM.

See also the separate blogs on the KK Mini, and the SP3 Racing F3.

Flight controllers

There are many types of flight controller available, with different hardware and firmware options.

Three low cost options (KKMulticopter, the now defunct ArduCopter and OpenPilot (which is actually, now defunct, software that runs on a variety of boards)) are discussed in the article, My different multicopter flight controllers compared:

Another succinct, simplistic and easy to understand guide to the six most popular boards (Naze32, CC3D, Flip32, KKMulticopter 2.1.5, Naza-Lite and APM) is Which flight controller should I buy?

Additional flight controller boards include:

Ebay examples


From What’s the difference between NAZA-M Lite/ NAZA-M V1/ NAZA-M V2


Target Customer



Function Extension Ability

Major Components

NAZA-M Lite AP/RC entry level Based on NAZA V1 platform; no extension ability NAZA lite Independent assistant software and firmware; 1.GPS (Optional)
2.No extended function (does not support NAZAV2-PMU, Zenmuse H3-2D/NAZA OSD/NAZA BT module/IOSD)
BEC/LED(Will have independent BEC and LED in the future)
NAZA-M V1 AP/RC hobbyist Can be connected to the NAZA V2-PMU, and will have the NAZA-M V2 expansion function; Share the same NAZAM V2 assistant software and firmware; 1.GPS (Optional)
2.Function extension through NAZAV2-PMU: such as Zenmuse H3-2D/NAZA OSD/NAZA BT module/IOSD/Ground Station
NAZA-M V2+GPS Combo AP/RC hobbyist Optimized hardware structure;
Independent PMU module with amazing function extension ability;
Independent LED module;
Amazing function extension:such as Zenmuse H3-2D/NAZA OSD/NAZA BT module/IOSD/Ground Station MC


From Naze 32 versions explained and what to look out for:

4 Core Versions in Revision 6

There are currently four core versions of the naze 32 flight controller. These are referred to as Acro346, 6 DOF, 10 DOF, and Full995. All the versions use the same basic hardware such as the STM32F103CBT6 CPI running at 72Mhz with 16Mb of flash memory. The sensors is where each of the versions differ as shown in the table below. The different sensors on the various versions mean that the boards can be manufactured more cheaply which appeals to certain applications.

Naze 32 6 DOF – this is the cheapest level naze 32 flight controller and does not include a magnetometer sensor or a barometer. Ideal for experianced FPV pilots who want a cheap but capable flight controller

Naze 32 Acro346 – this version adds a BMP280 barometer to the board which only increases the price by £1-2. However the added barometer means that the flight controller can perform altitude hold functions which is particularly useful for less experienced pilots.

Naze 32 10 DOF – This board includes both the BMP280 barometer and a HMC5833 [Edit: This should be HMC5883, as in the table above] compass sensor. Adding a compass sensor helps with getting better aircraft heading measurements while you are flying, but most importantly it allows you to add a GPS module to enable position hold flight mode with your drone.

Naze 32 Full995 – The full version is the same as the 10 DOF except that it uses much better quality sensors, the MS6511 barometer and MHC5983 compass are much more accurate. However these sensors cost more so the Naze 32 full flight controller is the most expensive option, but has the best performance.

Built in SPI Dataflash

All the revision 6 boards include a built in black box flight data recorder which is great. The 6 DOF, Acro and 10 DOF naze boards have 16Mbit onboard SPI flash. However the Full version includes 128Mbit onboard SPI flash so this just means you can store more flight logs on your full board.

The difference between the 6DOF and 10 DOF boards, visually, is the lack of two ICs on the 6 DOF (as well as a few discrete surface mount components):

The 6 DOF Naze32 lacks two ICs, and a few discrete surface mount discrete components, that are present on the 10 DOF Naze32
The 6 DOF Naze32 lacks two ICs, and a few discrete surface mount discrete components, that are present on the 10 DOF Naze32

Note that the Naze32 is nearing its end-of-life, from Instructables, How to build a ZMR250 racing quadcopter:

The Naze32 is coming close to obsolescence with its STM32F1 processor. Although there are F3 boards available at twice the price, the naze should do fine with Betaflight until Raceflight for the STM32F4 is stable. The F3 boards do not have that much of an edge over the Naze as the F3 is just the F1 with a floating point coprocessor. The additional UART may be useful for some but i will hold off until I can buy an F4. Some would suggest that most pilots can’t even feel the difference but I am mentioning this for people looking to be at the cutting edge of racer tech.

Be sure to get the Revision 6, and not the earlier revisions. See Naze 32 Revision 6 Flight Controller Guide:

What’s new in Revision 6?
  • USB port has been moved to the right of the board so you dont need to mount the board sideways anymore!
  • IMU sensors upgraded to MPU 6500 (Rev 5 uses older MPU 6050)
  • Receiver connectors are no longer solder pads but common pin hole headers style. This means that you no longer need to directly solder your receiver wires to the flight controller. Also older revisions had issues of pads delaminating when board got too hot.
  • Fully pin compatible with Rev 5 boards for accesories such as OSD.
  • Integrated SBUS inverter, now you can connect your FRsky SBUS receivers directly with no extra inverter!
  • Dedicated Spectrum Satellite port.
  • Additional Flash memory so you can use blackbox recording directly. With the Acro version you get 2Mb (16Mbit) and the Full version you get 16Mb (128Mbit). To learn more check our guide on Naze 32 versions.
Naze 32 Revision 6 Pinout
Naze 32 Revision 6 Pinout


The OpenWii platform is rather complex. See MultiWii SE V2.5 vs OpenPilot CC3D

If you want to learn to program a computer to fly, go MultiWIi.


  • 6 input channels for standard receiver and PPM SUM receiver
  • Up to 8-axis motor output
  • 2 servos output for PITCH and ROLL gimbal system
  • A servos output to trigger a camera button
  • A FTDI/UART TTL socket for debug, upload firmware or LCD display
  • A I2C socket for extend sensor,I2C LCD/OLED display or CRIUS I2c-GPS NAV board
  • Separate 3.3V and 5V LDO voltage regulator
  • ATMega 328P Microcontroller
  • ITG3205 3-axis MEMS gyro
  • MPU6050 6 axis gyro/accel with Motion Processing Unit
  • HMC5883L 3-axis digital magnetometer
  • BMP085 digital pressure sensor
  • On board logic level converter

Flight modes:

  1. One of the following basic mode
  2. Acro
  3. Level
  4. Alt Hold
  5. Head Lock
  6. Optional mode
  7. HeadFree (CareFree)
  8. GPS Hold (Need GPS receiver + I2C-GPS NAV Board)
  9. GPS Return to home position (Need GPS receiver + I2C-GPS NAV Board)

CC/CC3D/CC3D Evo/CC3D Revolution

These boards all run OpenPilot firmware, although OpenPilot seems to be End-Of-Life and LibrePilot is, currently, the way to go.

The CC is a very basic board, and as such is probably not worth considering, with analogue gyros and STM F1 processor.

The CC3D is great for 3D, or aerobatic flight, with a MPU6000 and STM F1 processor. For a great overview for dronetrest, see CC3D Flight Controller Guide.

The CC3D Evo is a minor upgrade to the CC3D, and a bit of a marketing scam, with a socket for a Spektrum DSM2/DSMX/Orange satellite receiver (not GPS), from Reddit: CC3D EVO, and CC3D EVO: Any idea?

CC3D versus CC3D EVO
CC3D versus CC3D EVO

The CC3D Revolution (or CC3D Revo) is a later generation board, with more features than the previous two, with STM F4, MPU6000, HMC5883 & MS561101BA03.

For further informatino on the differences between the similar boards, see Openpilot CC/CC3D/Revo tech thread, Warning: At least some sellers are selling Revos with bad baros, as well as CC3D Revolution? Revo Racer? CC3D Evo? Confusion….

Note that CC3D does not support GPS, with OpenPilot firmware, from How to configure a GPS for CC3D

CC3D or Atom flight controllers do not support GPS functions such as Return to base or Position Hold. The original CopterControl (CC) board does not have memory left for GPS use.

The only purpose for GPS use is telemetry using radio modems (OPLink) or GPS position send to OSD device.

NMEA is not supported anymore because is less memory efficient, this page only refers to UBlox GPS and UBX protocol.

However, both guides (1 and 2) suggest that waypoint flight, using GPS, is possible, however, they are referring to the Revo.

To clarify the confusion with respect to GPS capabilty:

  • CC boards do not support GPS at all
  • CC3D boards support GPS for telemetry only, and does not supprt Return to Home, nor Position Hold.
  • CC Revo supports GPS: Return to Home and Position Hold

See also Oscar Liang’s comparison of the Naze32 and CC3D, NAZE32 vs CC3D | Flight controller difference comparision.


There seems to be two versions of the KKmulticopter:

  • Version 5.5 (Blackboard) which does not have an LCD display nor the four buttons.
KKmulticopter version 5.5
KKmulticopter version 5.5
  • Version 2.1, has the onboard LCD and buttons for simple control
KKmulticopter version 2.1
KKmulticopter version 2.1

Confusingly, version 2.1 is better, and a later design, than version 5.5. In actual fact version 5.5 is for the first KK board, and version 2.1 (2.15) is the KK2 board.  It is recommended to steer away from the v5.5 and to plump for the V2.1 instead, as it is much easier to program. See KKmulticopter V5.5 Board V2.2 Program + USB Programmer Firmware Loader.

1. Use whatever programmer for which you downloaded drivers. You mentioned the fischl USBasp, so just click that one.

2. You must look at the chip on your board through a magnifying glass. It will most likely say 168P or 168PA, seeing as you have a KK5.5. Click the “KK Blackboard 168P/168PA (16KB flash)” option.

3. Once you select the proper FC, you will have a choice of firmware in the repository. My KK5.5 that I no longer use came stock with v2.9. I tried flashing v4.7, but I encountered too many problems, so I reflashed my board to v2.9, which I felt was more stable.

As a side note, I would recommend that you save up a little money and buy a KK2.1 board if you want a good, easy to program FC with auto-level. That’s the board I now use, and let me just say that I never want to even think about having to tune the KK5.5 after flying the KK2.1. The KK5.5 was a true headache to get dialed in, with all of the pot turning craziness, and I always had to use ridiculous amounts of trim on my Tx just to get my quad off the ground. Even when I thought I had it set up properly, the board was sketchy at best. Definitely not a good board to learn on. With the KK2.1, all I did was flash to the latest firmware, and my quad flew instantly and hovered almost perfectly without any trim on my Tx, and only the slightest SL trims (but that’s just because I’m a perfectionist). Good luck!!


Then you definitely don’t want to fly with the stock firmware, because it’s infested with bugs. You definitely want to flash to at least v1.11S2. I wouldn’t feel comfortable recommending it if I didn’t believe in it 100%. That’s also what I wanted, a stable quad, and with the KK2.1, it’s not an exaggeration when I say that my quad is absolutely LOCKED IN. I can set my Tx down on the ground and watch my quad hover in one place. You’ll love the Self-Level function, too.

And just to be clear, the bugs are in the stock v1.5 and v1.6 of the KK 2.1 HobbyKing (hexTronik) firmware, not in the updates. That’s the reason people like Steveis, RC911, and HappySundays put out firmware updates–to correct HobbyKing’s screwups. A lot of the bad stuff you read, I would venture to say most of it, is user error. For instance, people being ignorant of the gyro settings while messing with a bunch of other values, and then overflying the gyro rate. Most of the time, it’s not the KK’s fault. If you program a stupid value into a microcontroller and it performs exactly as you instructed it to but results in a failure (i.e., a crash), you can’t really blame the microcontroller. So that’s a lot of the “negative” stuff you’re seeing about the KK 2.1. I don’t give it any consideration, because the proof is in my quad’s stability.

In addition, the 2.1.5 comes in two sizes – there is the standard size (50.5 mm x 50.5 mm) and there is a mini version of the 2.1.5 (36 mm x 36 mm). The standard KK,

KKMulticopter 2.1.5
KKMulticopter 2.1.5

and the Mini KK – see KK Mini for more details on connections.

Mini KK2
Mini KK2

The difference between verison 2.1 and 2.1.5 from KK 2.1.5 released – wait what?

“added polarity protection to the voltage sense header and a fuse protected buzzer outputs, in case something is accidentally plugged in incorrectly. The voltage sense line has been updated for better accuracy. The board is clearly labeled and the voltage sense line color has been changed to red for easy identification, making installation and connections a snap.”

It may seem to be a minor upgrade, but this will both increase reliabilty and reduce brown outs due to user error (incorrectly powered).

eBay examples

There is obviously a price difference between the basic V5.5 and superior V2.1:

 Arduino Mega based solutions


This is a Open Source project, similar to ArduPilotMega (APM). These are shields for the Arduino Mega and Uno, and there is the AeroQuad, which offers 9 DOF, and AeroQuad Mini, which offers 6DOF, respectively. Here is the AeroQuad Manual.


The shield for the Arduino Mega

AeroQuad shield
AeroQuad shield

and the mini shield for the Arduino Uno

AeroQuad mini shield
AeroQuad mini shield




From What are 9 degrees of freedom in robotics?

  • 3 gyros (orientation) +
  • 3 accelerometers +
  • 3 magnetic field sensors = 9


There used to be an ArduPilot controller which used an onboard ATmega2560, but it is no longer supported, see ArduPilot Mega – Arduino Mega compatible UAV Controller.


For both the ArduPilot and the shield/oilpan below, see the ArduPilot Mega 2560 Full Kit

ArduPilot Shields (not shields for Arduino Mega):

Use Arduino Mega as ArduPilot

If you want to use an Arduino Mega then the only option, still available, seems to be the AeroQuad shield above. However, as with most projects that used the Arduino Mega (ArduPilot, APM and AeroQuad), the ATmega IC no longer seems to be powerful enough to run the firmware, and so no further development of the hardware or software is ongoing. From Github: AeroQuad

AeroQuad software is not maintained actively anymore!

The Aeroquad 32 bit boards are supported by other more active flight softwares like dRonin (http://dronin.org/).

See below for notes about dRonin.


As usual, the Arduino Forums are pretty much useless and typically unhelpful

But diydrones has some useful information

Yes you can. It works. Just make sure of the INT0 and INT1 interrupt pins. It works the just the same.

I tried it on my friend Matrice 100 quadcopter from Cannykart and it worked. Arduino is designed in that way.

ArduPilotMega (APM)

The APM, like the ArduPilot, does not use a Arduino Mega board, per se, but rather it is an all-in-one board, which is based around the Arduino Mega.

With damper, APM 2.8 Flight Control Module Damping Plate For RC MultiCopter ArduPilot MEGA PK, £19.64, the damper alone Anti-vibration Plate Pixhawk APM 2.5 2.6 2.8 Shock Absorber RC Flight Controller, £4.75

There are also the MiniAPM (MiniAPM V3.1 Mini ArduPilot Mega 2.6 External Compass APM GPS Flight control PK, £21.59) and MicroAPM variants of the APM.

APM Notes

End of Life

Note that APM 2.5 is rather old and out of date now (although perfectly serviceable), see Archived:APM 2.5 and 2.6 Overview


The APM2.6 board is no longer supported for Copter. From Copter 3.3 firmware (and later) no longer fits on APM boards. The last firmware builds that can be installed (AC v3.2.1) can be downloaded from here: APM2.x and AMP1.x


The APM2.6 board is no longer supported for Plane. The last firmware build that fits on the APM is Plane 3.3.0.

Seeing that the APM is [almost] at the end of its life cycle, and the PixHawk is much more powerful, see Pixhawk vs. APM 2.6, for a future proof design, it is better to get the more expensive PixHawk, even though it costs around twice as much (£40 vs. £20).

Octocopters and APM

Warning about APM2.x performance on Octocopters

Additional Required Extras

Both a GPS and a Power Module are required for the APM.

Power Module

3dr-current-sensor-topFrom 3DR Power Module (as recommended by Ardupilot):


The Pixhawk and APM 2.x have a dedicated connector for attaching the 3DR Power Module (PM). This is useful because it:

  • Provides a stable 5.37V and 2.25Amp power supply which reduces the chances of a brown-out
  • Allows monitoring of the battery’s voltage and current and triggering a return-to-launch when the voltage becomes low or the total power consumed during the flight approaches the battery’s capacity
  • Allows the autopilot firmware to more accurately compensate for the interference on the compass from other components

The PM accepts a maximum input voltage of 18V (up to 4S Lipo battery) and maximum current of 90Amps. When used with an APM the full 90Amp current sensing range can be used, with the PX4/Pixhawks up to 60Amps can be measured.

Examples from eBay,

However, be very wary of buying a cheap clone Power Module (PM), as seen here, Safetly use CLONE APM Power Modules – Instructables:

Ok so if you have bought a power module from ebay or somewhere else and its not an official 3DR module, it may not work exactly as it should. It may fry your flight controller.

Removing the power supply pins could be the answer, and using it just to monitor voltage and current… although beware of high voltages on the current monitor. I am not sure if this is true or just scaremongering, but the official 3DR PM is essentially a switch mode power supply (SMPS) with some monitoring capability. However, certain clones may be missing both the large tantalum capacitor and the switching regulator and using just a regular heat dissipating and inefficient, linear voltage regulator.

External GPS

See the blog Global Navigation Satellite Systems.

Optional Extras

OnScreen Display

(Micro Mini OSD Naze 32 APM Flip CC3D with KV Team MOD Module For OCDAY Rotor BF, £4.93).


There is the choice between XBee telemetry and the cheaper 3DR 433MHz telemetry kits:


Note that 900MHz systems can not be used in Europe, use 868MHz instead. See the blogs XBee 868, XBee 900, XBee 868 and RC and XBee and video for further information.


Refer to the PDF3dr-radio-v2-doc1


  • Band: 433MHz
  • Antenna connectors: SMA Female connector
  • Output power: 100mW (20dBm), adjustable between 1-20dBm
  • Sensitivity: -117dBm sensitivity
  • Interface: Standard TTL UART
  • Connection status: LED indicators

Package includes:

  • Ground Radio Telemetry base station (USB Connection)
  • Air Module Telemetry Transceiver (Pin Header)
  • 1x PixHawk Cable
  • 1x APM Y-cable
  • 2x Antenna SMA Male

Airspeed meter

Ardupilot Arduplane APM2.5 2.6 Airspeed Meter for RC Airplane, £13.65

Ultrasonic sensor

or the branded versions:

Optical flow sensor


Stabilised Camera Gimbal

Gimbals, both two and three axis, consist of three components:

  • The gimbal frame itself (carbon fiber, aluminium, ABS);
  • The motors, and;
  • The controller (2 axis and 3 axis)
Gimbal frame
DJI Zenmuse H3-3D 3-Axis Gopro Gimbal
DJI Zenmuse H3-3D 3-Axis Gopro Gimbal



The main brands appear to be BGC, Storm, EvvGC, AlexMov. There seems to be a confusing situation w.r.t. the BGC websites:

From BaseCam (AlexMos) SimpleBGC,

This controller is outdated and is no more sold.

This is the original BaseCam SimpleBGC 8-bit controller board (formerly also called AlexMos). While this board has been superseded by the 32-bit version, this 8-bit version is still available in the marketplace and is actively used and supported. It still produces outstanding results. Without the extension board this controller can be used for building high-quality 2-axis camera stabilizing systems. The controller can also be used for 3-axis control systems with the addition of the extension board. In either case, from a functional perspective the newer 32-bit board is 100% backward compatible with this board, and users of this board can freely upgrade systems from this board to the newer 32-bit board. In addition the management software is backward compatible, so it is possible (or preferred) to use a new version of the GUI (SimpleBGC’s management software) with this board- giving an improved experience with this board and also further making upgrade to the 32-bit board as easy as possible.

Ebay examples:



Battery Alarm

1-8S Lipo/Li-ion/Fe Battery Voltage 2IN1 Tester Low Voltage Buzzer Alarm UP, £0.99


From the home page

dRonin supports several flight control boards including: BrainFPV, BrainFPV RE1, DTFc, Sparky 1, Sparky 2, Revo, CC3D, AeroQuad32, Quanton, LUX and Naze32.

5 thoughts on “Flight Controllers”

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s