Flight Control Software

From FPVwiki
Jump to navigation Jump to search

The software that is flash to the Flight Controller's (FC) MCU is called Flight Controller firmware. As FC software goes through the compile process, '.Hex' files are exported for specific Flight Control hardware called targets. This page will first go over the history of Flight Control software projects, then highlight the main projects still used today.


The most utilized Flight Control Software (FCS) in FPV (typically Quadcopter, mini-quads, racing drones) today is BetaFlight. No other project has as many contributors, forks, and/or support community members then BetaFlight. Not to mention the amount of Flight Controllers that BetaFlight supports. Before there was a BetaFlight, there is a LONG history of software development communities that came before, and even to this day, BetaFlight still has residual remains from the very beginning. Like MSP or InFlight Accelerometer Adjustments. Ever wonder what MSP stood from when working in the BetaFlight Configurator? MultiWii Serial Protocol.

Types of Flight Control software

Between 2009-2010 there were many flight control related software projects that had started. Mainly due to the explosion of Open-Source Hardware projects like Raspberry PI and Arduino releasing powerful single-board microcontrollers. These hardware projects started using pretty remarkable Microcontrollers Unit (MCU) chips and made programming of these MCUs easier than ever before. One great feature of these boards was the amount of Input/Output ports (IO pins), that programmers can configure to do anything their hearts desired. Like sending PWM signals or talking to gyroscopes (IMU).

Note: Before going further, a brief explanation about 'Flight Modes' is in order. Modes change how and the way the drone is controlled. The control difference is between Operator (Pilot via TX) or FC command. At one extreme end is Rate/Arco mode used by FPV Racers were 100% of flight control is done by the operator. At the other end is what Aerial Photography drones (AP) use. Like DJI Phantoms where the flight control is mostly done by the FC and the Operator has about ~20% of the control. This is done by applying multiple modes at once (Altitude Hold, AutoLevel, obstacle avoidance, and more). This line of control can be dialed back giving the operator more control and in turn, giving the FC less.

All Open-Source flight control software projects had similar but different goals for their projects. They all wanted to get multi-rotor drones flying and to give the hobbyist the ability to have stable flight control. Where these projects differed was the type of flight control itself. This boiled down to AutoPilot and Acro/FPV racing.


AutoPilot projects put more emphasis on the use of more sensors (GPS, lidar, etc), and Ground Control Software (called Ground Control Station- GCS) to achieve autonomous flight. Typically AutoPilot firmware has several added modes then typical Acro based firmware, like Altitude Hold, Heading Hold, Return to Home, etc. AutoPilot firmware is commonly used for Aerial Photography drones (AP). As the firmware has support for controlling Gimbals and DLSR Cameras. Another highlight of AutoPilot based projects is the use for GCS to map out a flight plan with waypoints. As the Operator, you arm the drone and the FC does everything else for you. The projects commonly support a high number of RC applications like airplanes, many different types of multi-rotor drones, traditional helicopters, boats, submarines, and rovers. Some popular AutoPilot Projects:

  • ArduPilot
  • OpenPilot/LibrePilot


The other non-AutoPilot flight control projects go by many phrases Acro, FPV Racing, or maybe Drone Racing. Whatever the name, the principal focus of these projects is to obtain the best flight performance possible. Using higher speed MCUs, and IMUs on smaller "mini-quads" to fly fast as humanly possible at the same time provide users the ability to fly FreeStyle (Art form base flying with the goal of getting amazing footage using HD cameras like GoPros). Often these projects try to achieve these goals by improving IMU data using filters, making improvements to the PID controllers and support faster MCU's. Other features are ESC communication protocols and a long list of support functions for FPV itself, examples like SmartAudio, or FPV Camera Control.

More and more Modes are being added to Arco base projects, but traditionally this type of firmware has very few modes, Rate (Acro)

These are the projects we are a costume too in FPV and will be the biggest focus for the rest of this page and this wiki. Some popular Acro Projects:

  • BetaFlight
  • ButterFlight
  • KISS
  • FlightOne

Some FC project jumping tracks

It is very common for Flight Control software projects to be forked to another project that differs from the original firmware type. Two projects in the FPV industry exist today. iNAV and dRonin.

iNAV (a BetaFlight Acro Based Fork) adds support for more sensors and flight Modes. iNAV supports a number of GCS's today and with the upcoming added support of MAVLink makes the project more like AutoPilot type Firmware.

dRonin - OpenPilot/LibrePilot a AutoPilot Fork. Focus on FPV racing and PID tuning, producing firmware gear towards Acro/FPV racing flying.

Note: To understand what Project Forks click here

Projects may release FCs

BetaFlight Firmware and the BetaFlight F4 Flight Controller are not the same things. In fact, not all projects release their own Flight Controllers. Many projects do have strong ties to Flight Controllers release in the industry and some projects do release their own branded FC. Examples of this were BetaFlight started and became widely adopted before BetaFlight released a branded Flight Controller. ButterFlight hasn't released an FC at the time of this edit but is closely tied with HelioRC Flight Controllers. Projects like CleanFlight, OpenPilot had both released branded Flight Controllers pretty earlier in the lifespan of the project.

Point to remember is that it's easy to associate software with hardware together. But in reality, there isn't any technical link between them at all. You can take an OpenPilot Flight Controller and flash BetaFlight firmware, take KISS FC and flash CleanFlight firmware. As long as the project supports the Flight Controller (normally referred to as a target), you can do almost anything you like.

Acro Firmware History

Multiwii > Baseflight > CleanFlight > BetaFlight > iNAV
> CleanFlight 2.x
> Butterflight



MultiWii was the beginning of it all. Project creator was Alexinparis. When the project first started in Dec. of 2010 there wasn't even Flight Controllers. The main premise of the project was to develop software to be used on Arduino based boards and the gyroscopes/accelerometers sensors from Nintendo Wii Remote Controls called "Wii Motion Plus" and "Wii Nunchuk". Not only was MultiWii the Start to Acro flight control software, but it was also the start of Flight controllers as we know them today.

A short time after MultiWii started, hardware started purposely being manufactured to support the firmware, we now know these as Flight Controllers. So instead of having to put the FC together and deal with the firmware. You would just purchase the FC, and flash the firmware. These early FCs supported the same MCU as the Arduino microcontrollers, the Atmel Mega328p. The FCs would have the IMU soldered to the board and pins breakouts for Motors and RX. Saving lots of time and frustration for end users that didn't have experience dealing with hardware.

Flyduino early MulitWii FC.

Before the project released their own FC, a company was created and started manufactured FCs based on the MultiWii Software know as Flyduino (That's right, the Creator of KISS, and ESC Protocols). Soon after MultiWii released their line of FCs named Crius.

MulitWii Crius SE.

The project is now obsolete. Successor was BaseFlight

MultiWii GUI (Configurator)
  • Meet the very first "Configurator"
  • Another achievement the MultiWii project overcame and still a constant with FCS projects today was the development of Easy to Use GUI based Management software loosely called the Configurator (Called MultiWii GUI for the project). Before the GUI, CLI base terminal was used to configure all the parameters and settings of the firmware using command lines. Even though the CLI also still exists and used today, for most users the GUI is the only way to fly (pun intended).




    MultiWii provided the FPV/Drone racing community with many features and a great platform over the existing FCS projects for the time. The biggest downside was the project was based on using the Atmel Mega328p (MCU) an 8-bit microcontroller with a very low amount of available resources. In order to take this hobby to where it is today, 8-bit processors weren't going to work. That was the problem BaseFlight was attempting to solve by porting (forking) the MultiWii project to support STM 32-bit MCUs. The first processor used was STM32F1, (32bit ARM Cortex M3, 72MHz, 64K/128K flash). Compare to the Atmega328p (8-bit AVR RISC-based, 20Mhz, 2K/32K). Truth be told during this edit we are starting to see STM32-bit F3 MCUs on ESCs.

    Naze32 Rev.6 by AfroFlight

    Timecop the developer that started BaseFlight in Feb. 2012, had also started AfroFlight and AfroFlight32.Template:Citation needed These hardware projects aimed at porting MultiWii to STM8 and STM32 based FCs respectfully.Template:Citation needed AfroFlight32 is well known in the industry for releasing the very popular FC called the Naze32.

    BaseFlight Configurator
  • BaseFlight Configurator, now starting to look like the "Configurator"
  • BaseFlight project members had also updated the MultiWii GUI and called it BaseFlight Configurator. As you can see, the GUI is very similar to another FC project during that time, mainly talking OpenPliot.




    The project (and AfroFlight projects) are now obsolete. The successor was CleanFlight.


    CleanFlight, fork of BaseFlight

    CleanFlight was forked from BaseFlight in mid-2013 by Dominic Clifton (aka Hydra). The main reason for the fork was coding principles and styles. Hydra first tried cleaning up the code base for BaseFlight to improve the project moving forward. Hence the name CleanFlight. This led to disagreements with the developer of BaseFlight, TimeCop. See for yourself what he felt about "others" making improvements to the project: https://github.com/multiwii/baseflight#license

    After the project was forked, and the code was cleaned up. CleanFlight started adding many new features making it the go-to firmware for FC a short time after. Regardless of what team you were on Team-Timecop or Team-Hydra / Team-BaseFlight or Team-CleanFlight, CleanFlight was quickly adopted by the community. Naze32 running CleanFlight was very common for many years after the fork of CleanFlight.

    Seriously Pro Racing
    SP Racing F3 Acro, One of the first F3, and the number one Cloned Flight Controller.

    Later Dominic started a company called Seriously Pro Racing and began to manufacture SP Racing Flight Controllers. Mid-2015 SP Racing was one of the first companies to initially use STM32F3 MCU on their FCs called SP Racing F3.Template:Citation needed SP Racing F3 was later renamed F3 Acro and to this day is one of the most cloned Flight Controllers in the industry. Ready to Fly (RTF) mini-quads sold in 2017 still had these clone SP Racing F3 FCs. A trustworthy choice for FC for several years. SP Racing F3 Deluxe expanded on the Acro to support more sensors onboard like a Barometer and Magnetometer (Maybe the first FCs in the FPV/Mini-quad market to have these onboard sensorsTemplate:Citation needed). Early-2016 they released a few other F3 FCs, The Mini, and EVO.

    CleanFlight Configurator
  • CleanFlight Configurator starting to look like what we are used to.
  • The CleanFlight project forked the BaseFlight Configurator with the same community drama that came with the BaseFlight fork. They made minor improvements.

    AutoPilot Firmware History

    OpenPilot > LibrePilot > dRonin
    > TauLabs


    Started into 2010 gave birth to AutoPilot software OpenPilot Revolution (Revo) OpenPilot CopterControl (CC3D) Ground Station Control (GSC)

    dRonin (OpenPilot FPV Racing Firmware)



    BetaFlight Forks



    CleanFlight >2.0