Updated December 2017 – Brought the guide up to date for the end of 2017.
Flight Controller History
The Flight Controller, commonly referred to by the acronym “FC”, is the brain of your quadcopter. It contains a sensor that detects changes in orientation and computes the changes to propeller speed needed to correct any orientation errors it perceives.
The history of digital flight controllers is rich, though brief. When Nintendo’s Wiib Motion Plus accessory took off around the world in 2009, an enterprising maker going by the handle Alexinparis decided to try to hook it up to an Arduino board to make it control a drone. This is the origin on the Multiwii project, which eventually developed its own flight controller board that worked on an 8-bit Atmel processor.
As any gamer who was alive in the 90s will tell you, 8 bit is never the endgame. Another developer out of Japan named timecop developed a flight controller board using an ARM 32 bit processor and ported the multiwii source code to it. This port was named “Baseflight” and the board it ran on is called the Naze32. The Naze32 is the granddaddy of all miniquad flight controller boards. It is largely responsible for solidifying the 35mmx35mm form factor and still is relevant today!
But there was no competition. The Baseflight firmware was held hostage to the Naze32 flight controller board – timecop made his money by selling Naze32 boards and as such had no interest in porting the Baseflight software so that it could work on different electronics configurations. As a result, another developer going by the handle “hydra” picked up the code and began modifying it so that it would be compatible with flight controller boards developed by other manufacturers. This new firmware was called “Cleanflight”.
The rise in the popularity of Cleanflight and it’s sibling Betaflight spawned a veritable explosion in the 32 bit ARM flight controller market. Manufacturers came out of the woodworks to develop their own variant of FC because the margins were high. Everyone won because of this – different manufacturers competed by offering tons of variations on the theme, adding in new features and tweaking the form factor in the unending effort to having the “best” product.
Flight Controller Features
Processor (F1, F3, F4)
The processor on your flight controller is similar to the CPU in your computer – it is the brain of the whole operation. It is a programmable microchip that communicates with all of the other components on and off the board to make your miniquad fly.
There are currently three relevant types of processors on the market: F1, F3 and F4 processors. Performance increases as you go up in number, so F4 processors are the most powerful while F1 processors are the least. A faster processor generally means that you can run a faster “looptime”, resulting in a smoother flight experience. This has diminishing returns, though, and the general consensus these days is that an F3 processor gives just as much performance as an F4 processor. F1 processors are starting to fall behind, and we recommend you stay away from them unless you are getting a heck of a deal. Check out our article on F3 vs F4 to read more on why more power is not always better.
What Gyro is mounted on the FC and how it is connected to the processor is probably the most important performance-oriented aspect of the flight controller. The trick for optimal performance is to get as many accurate gyro readings as quickly as possible so that the flight controller has the maximum amount of data to base its computations on. The fastest readings are accomplished by Gyros which are connected to the processor via SPI and are capable of an 8Hz update rate.
As of 2017, almost every popular flight controller on the market is using the MPU6000 gyro. This is great news for pilots as it means software development for quadcopters can focus on this gyro. We highly recommend first time pilots purchase a flight controller with the MPU6000. Experienced pilots or tinkerers can attempt to gain more performance by buying flight controllers with different gyros (or two gyros on a single board!) – but you should expect to do a lot of tuning to get it to work.
Onboard flash memory should be a must-have for anyone who is serious about racing or acro. This is because the Blackbox logging feature requires some sort of permanent memory to be usable, and flash is by far the most convenient. Blackbox is hands down the best way to tune the PIDs on your quadcopter. It is also extremely useful in getting help when starting out – often a blackbox log will allow experts to help you diagnose an issue almost immediately.
You do not need a lot of flash memory, just some. 1MB is a reasonable number, and will allow you to fly a couple of full sessions with Blackbox enabled without losing any logs. Most newer flight controllers have much, much more memory. Above 16MB you can log more flights than you’ll possibly ever want to analyze.
Many new flight controllers on the market also have a built in SD card port. I have tried them and have been tremendously unimpressed. The root of the problem is that the SD cards too easily become unseated and/or corrupted in crashes or just regular flight. They also cause the flight controller to operate in an inefficient way. I discuss this in more detail in my Betaflight F3 Flight Controller review.
Connectors refers to the options you have available for connecting accessories to your flight controller. At a bare minimum, you can expect to connect your ESCs and radio control receiver to the flight controller. Many flight controllers have a mixture of different connection options available for you to use. For example, the same output might be able to be connected with both a through-hole slot and a JST-SH connector. To learn more about connectors, including how to identify them and use them, check out our quadcopter connector guide.
There are currently 3 major types of connectors available on flight controllers on the market:
These are the simplest way to hook things to your flight controller. They are basically just holes in the board. You can either solder in pins so that you can connect peripherals with servo connectors or you can solder the wires directly into the holes. This type of connection is favored by many for it’s simplicity. They require some work as you need to do some soldering, but you have more options in how you actually make the connection. They are also very robust.
Since the SPRacing F3 came out, these have become more popular. They are a specialized set of connectors which plug into the side of the board. When you buy the board, the manufacturer will package in a set of connectors with loose wires with it. You can then solder these wires to your peripherals. They are great for peripherals which you can solder wires to, but they really suck when your peripheral already has a wire coming out of it or uses a crimped connector. In this case, you will end up needing to make a wire splice, which looks messy and adds a weak joint to the wire. The upside of these is they are very compact and they are super simple to disconnect from the FC board. If you’re considering a flight controller that uses connectors, check out our guide to quadcopter connectors for information on crimping and how to find parts.
These showed up first in the KISS and Luminier Lux flight controllers. They are designed to have wires or pins soldered directly to them coming out of the side of the flight controller. In many ways they are a compromise between the JST-SH and the through hole types: they are compact like JST-SH but are customizeable like the through holes and do not require you to make splices. The big downside of this style of connector is that the pad you solder to has a tendency to tear out when stressed, ruining the flight controller in the process. This downside can be improved by perforating the pad, which drives spikes of metal into the silicone and anchors it to the board. Look for small holes in the pad like those seen in the picture on the right when buying flight controllers that use pads.
As manufacturers stuff more and more “things” onto flight controller boards, they are running out of space for connectors. Where flight controllers from 2015 would have 20-30 outputs for everything from 6 motors to analog RX inputs, modern flight controllers have as few as 10 I/O pins available to builders.
This isn’t always a bad thing – for many pilots those 10 pins will be exactly what is needed and nothing more. For others who like to hook up tons of gadgets to their quadcopters, it may be a limitation, however. Before deciding on a flight controller, think about what you want features you want. Most features hook into the flight controller via UART pins. UART refers to a digital communications protocol which allows your flight controller to talk to external devices. These devices include RC receivers, OSDs, telemetry devices, GPS receivers and much more. A UART is also sometimes used to control the USB port you connect to your computer on many flight controllers. The UART count is largely determined by the type of processor you have (although other factors can come into play).
In general, F3 and F4 flight controllers have 3 UART ports while F1 flight controllers will only have 2. If you own an F3 or F4 flight controller and need more than 3 UARTs, you can “map” non-UART pins to what is called a “software UART”. Check out our guide on Betaflight resource remapping for more information.
If you want to have many peripherals, then this may be a deciding factor for you. Here are some important peripherals that use UARTS:
- Serial radio control receiver / Telemetry (pretty much required for all miniquads)
- OSD (Not including Betaflight OSD)
- VTX control
- Some race transponders
- External blackbox logger
RX Support (Spektrum/PWM/Serial Inverter)
Every flight controller will support every serial receiver (e.g. SBus, Spektrum Satellite, etc). However, if you want to plug your X4R-SB into some flight controllers, such as the Naze, you will need to first run them through an inverter. This is because the UART logic from FrSky is inverted. For this reason, many flight controllers come with an inverted UART for plugging in your serial RX. This means you can plug your X4R-SB directly into your flight controller. All F3 flight controllers have serial inverters built into the processor chip. F1 and F4 flight controllers will need to have an inverter explicitly added to the board, which is often placed on a pin labeled “SBUS”.
On the other hand, if you are a Spektrum user, you may want to look for a flight controller that has a spectrum satellite socket, so that you can simply plug the satellite directly into the board with the stock connector.
Finally, if you are using a really old receiver that only has PWM outputs (one pin per radio control channel), you will want to make sure your flight controller supports this. Many do not.
A boot button is simply a button that you can hold down while powering your flight controller to force it into bootloader mode. In bootloader mode, the flight controller can receive a firmware update.
Here’s the deal with the boot button: Sometimes when you are flashing firmware updates to your flight controller, you will need to force it to go into bootloader mode first, for whatever reason. This is the first step when a normal flash doesn’t work. When you need to get the board in bootloader mode, you need to short two “boot” pads on the PCB together. Many flight controller manufacturers opt to just expose the pads and leave it to you to short them together with metal tweezers or something similar. This is a gigantic pain in the ass and needs to be a thing of the past. Many boards now have a button you can press that accomplishes the same thing. This is a great design, give these guys your money!
You may notice that I don’t deem any of the above factors as “gamebreaking”. This is because really, choosing a flight controller is all about preference. Most flight controllers do not perform any better than their competition – they just offer you convenience.
To further this theme, many of the FCs on the market package in features that would normally be incorporated on separate parts on your quadcopter, like PDBs or video transmitters.
PDB / Voltage Regulators
Many flight controllers will come with the voltage regulators needed to power the FC directly from battery voltage. This saves you from having to buy and mount a Polulu, going a long way to cleaning up your build. This feature is included on most modern flight controllers as of 2017 and I suggest it as a mandatory feature for anyone building their first quadcopter.
Others go one step further and become full-fledged PDBs. On these flight controllers, you will generally solder the ESC power leads directly to the flight controller. These are particularly nice because they can have electrical current sensors onboard. This means you will be able to see exactly how much of your battery has been consumed at any given time.
Some flight controllers have built in OSD chips. On these controllers, one of the UARTs will be hooked up the OSD so that the FC computer can pass on flight data to the OSD chip. These are the way to go if you want to have an OSD but don’t want the rats nest of wires that normally comes with it.
Betaflight OSD is another option, released with the Betaflight 3.1 release in January 2017. Currently, only a few flight controllers support this feature, but if you are interested in an OSD you really owe it to yourself to check them out. We wrote up a guide on setting up the feature where you can find more information.
The Singularity FC released in early 2016 packaged an FC with a robust VTX. The purported benefit of this, besides weight savings, is the ability to control the VTX channel and power output directly from your RC controller. Other flight controllers, like the SirinFPV have since added this as a feature as well.
This is something I’ve seen pop up on one or two boards recently that is really nice. It’s a programmable race transponder that frees you up from having to buy an external one (that saves $40-$50!). When installed, this feature can be programmed directly from Betaflight. Even better – if your FC supports Betaflight OSD, you can program it right from your transmitter!
Barometer / Compass
Many flight controllers are offered in two models, “Acro” and “Plus” (or normal). The “Acro” variant is normally cheaper. The difference between these two is generally that the “Plus” model will have a barometer and sometimes an onboard compass. The barometer will allow your FC to read accurate altitude information, while the compass will allow it to obtain a heading. This information can be useful if you are interested in making your quadcopter semi-autonomous, but if you are only interested in FPV flight, we recommend you save the $10.
Motor Speed Controllers
In the latest drive to simplicity and lightness, some manufacturers have taken it upon themselves to pack every piece of electronics you could conceivably want on a miniquad into the flight controller board. This includes the ESCs. On these flight controllers, the only wiring you have to do is for your radio control receiver and your motors – everything else is already built in and working. Right now, it is most common among micro-quadcopters like the Tiny Whoop or the QX90, but I have seen a few examples of it making it’s way into the bigger quadcopters.
Buyer beware though! These flight controllers will generally cost over $120 and if anything fails, you can expect to replace the entire thing.
A number of great flight controllers supporting the Raceflight firmware hit the market in 2017. Unfortunately, none of the editors of this site has any experience with Raceflight, so we cannot comment on it or the flight controllers that support it.
On the Market
There are a lot of flight controllers on the market. In our experience, there are definitely some stinkers out there too. The following list of flight controllers are ones we have first or second hand experience with and can recommend. Furthermore, we think the controllers in the below list have features on par with what you should expect as of early 2017. There are certainly other good ones on the market – just make sure you do your research. At the bottom, we have a comparison table for the specs which includes a purchasing link.
This flight controller was developed in a joint effort with famed miniquad personality Joshua Bardwell. As such, it has impeccable pad placement and a great featureset, including a built-in PDB, OSD and current sensor. We don’t love the soldering pads placed in the center of the FC, or the SD card over built-in flash memory, but we think this is a solid option nonetheless.
Betaflight F4 – Propwashed Best Value Pick
The Betaflight F4 flight controller is the successor to the Betaflight F3. It keeps the fantastic pad layout and featureset that came with the original. This includes built-in PDB, OSD and current sensor. It also improves on some things over the Betaflight F3. Notably, they’ve gotten rid of the SD card slot, pushing us over the edge to mark this as our “recommended” best value FC.
This is a really well thought out, designed and manufacturered board made in the USA. It includes a ton of features and support for more advanced flight controller software that can be used in professional (non-racing drones). I’m a big fan of the design and layout – my one issue with the board is that it uses a gyro that is not typically found in the miniquad racer space. As Betaflight gets more and more optimized, most FC manufacturers are using the MPU6000 gyro since this seems to be the gyro that Betaflight was tuned for. The Bosch gyro found in the Brain RE1 is undoubtedly comparable technology, but you do run the risk of not getting every bit of performance out of your quadcopter if you run Betaflight with it.
This is the offering from Flyduino, maker of KISS ESCs. It uses closed-source software that will only run on this flight controller. It is popular because of its association with many pro pilots and because its configuration user interface is supposedly much simpler than CleanFlight. The hardware and software capabilities, however, are severely lacking. I would recommend against locking yourself into the KISS environment. That’s a discussion for another article, however.
Luminier Lux V2
This board has a funky H shape and edge-mounted connectors like the KISS. I think of all the flight controllers on the market, this one has my favorite pin layouts. Version 2 has all the standard bells and whistles you’d expect from a flight controller these days too – notably 5 UART ports, an SD card for Blackbox and a gyro hooked up with SPI. This is a really solid offering.
The Matek F405 is a great option for an all-in-one flight controller, coming with a built in PDB, OSD and current sensor. We particularly like this board because it has a large array of pin breakouts for extra accessories you can add to your quad. The downsides with it are the SD card slot and the inboard pads which are hard to solder to and easy to tear off.
Omnibus F4 (DYS F4 / HGLRC Flame F4)
This was one of the first flight controllers on the market to support Betaflight OSD and rocks a F4 processor – completely future-proofing it. Its flexibility and low price is what makes this our recommended pick. It is easily among the top three flight controllers on the market in terms of features and performance and costs half as much as many comparable ones. There are a ton of different variants on the market – make sure you shop around. We listed our two favorites above. We recommend you buy one that does not have an SD card port unless you specifically want that feature – see our review on the SD card feature above.
|FC||Price||Processor||Gyro||Onboard Flash||Connector Type||Voltage Reg||SD Card||Extras||Link|
|Bardwell F4||$35||F4||MPU6000||N/A||Through Hole & Pad||Yes||Yes||Betaflight OSD & PDB w/ Current Sensor||Here|
|Betaflight F4||$34||F4||MPU6000||N/A||Edge & Through Hole||Yes||No||Betaflight OSD & PDB w/ Current Sensor||Here|
|Brain RE1||$55||F4/ dRonin||Bosch BMI160||128MB||Through Hole||No||No||Betaflight OSD & Infrared Racing Lights||Here|
|DYS F4||$36||F4||MPU6000||8MB||Edge & Through Hole||Yes||No||Betaflight OSD & PDB w/ Current Sensor||Here|
|HGLRC F4 Flame||$34||F4||MPU6000||16MB||Through Hole||Yes||No||Betalifgh OSD & PDB||Here|
|KISS FC||$25||F3||MPU6050||N/A||Edge||No||No||KISS Telemetry||Here|
|Luminier Lux V2||$30||F3||MPU6000||N/A||Edge||No||Yes||N/A||Here|
|Matek F405||$40||F4||MPU6000||N/A||Through Hole & Pad||Yes||Yes||Betaflight OSD & PDB w/ Current Sensor||Here|
|Omnibus F4||$25||F4||MPU6000||128MB||Edge & Connectors||Yes||No||Betaflight OSD||Here|
Extra parts: wiring and other odds and ends
For the most part, the flight controllers on this list will come with a ton of extra cables and pin headers for you to use on your build. However, certain components we feel are necessary for a clean build, servo extension cables for example, are likely not included. If you read our flight controller installation guide and wondered where we got some of the odds and ends to complete our build, this is the place for you!
Servo extension cables – great for tying components together. These cables will allow you to create all the wiring variations that you need to connect everything to your flight controller.
Pin headers – We love using pin headers rather that direct soldering or using the flight controller ports because it makes repairs and swapping out components a breeze. Most flight controllers will come with a healthy supply, however these are always useful to have on hand.
Like many of our articles, many of the links above are affiliate links. We urge you to shop around, but if you do decide to buy from the vendors above, we would really appreciate it. It doesn’t cost you a dime more, but it sends us a few cents every time a purchase is made. Thanks!