Some flight controllers include additional sensors such as a magnetometer (electronic compass), a barometer for altitude, or they allow connecting a GPS module for navigation features. For typical FPV flying, however, the basic IMU — gyro plus accelerometer — is sufficient.
The firmware is the software running directly on the controller’s microprocessor that determines how the drone behaves. It processes sensor data, communicates with the receiver, ESCs and video system, and defines how the quad responds to stick inputs. In FPV there are several major firmwares — the most common are Betaflight, INAV and ArduPilot, described below. Betaflight typically runs on almost any FPV flight controller. ArduPilot and INAV support only certain microcontroller families.
The microprocessor determines the controller’s compute performance, the number and type of peripheral interfaces, and overall system latency. Today the most widely used chips are STM32 from STMicroelectronics, optimised for real-time control and well supported by Betaflight, INAV and ArduPilot. Entry-level, often AIO, boards use STM32F411 — adequate but limited in performance and usually only 2 UARTs. The very common STM32F405 has enough performance for most FPV uses; it is broadly compatible and supports ArduPilot, but offers less headroom. STM32F722 is a faster class with higher clocks and more hardware interfaces; due to smaller memory the F722 is not supported by ArduPilot. STM32H743 is a modern high-end MCU up to 480 MHz — ideal for demanding apps, GPS navigation and advanced telemetry. Boards often carry dual IMUs for reliability. H743 is supported by all major firmwares. STM32G4 is a newer generation optimised for motor control, often used on AIO boards that integrate the ESCs. AT32 (Artery Technology) is an alternative MCU line appearing on budget boards with very good price/performance.
The IMU (Inertial Measurement Unit) is a key component of every controller. The gyroscope measures angular rate and the accelerometer measures acceleration. The firmware uses these signals for flight stabilisation and attitude estimation. The quality and type of IMU sensor strongly affect stick feel, vibration rejection and overall stability. The most common FPV sensors are MPU6000, ICM42688 and BMI270. The MPU6000 is long regarded as the most robust IMU with excellent noise/vibration tolerance, making it ideal for freestyle and racing; downsides are price and availability. The ICM42688 is a newer-gen sensor with higher precision and faster response; it offers fine measurements and high refresh rates, great on powerful FCs, but it’s more sensitive to noise and vibrations, so it needs good software filters and a well-designed build. It’s currently the most widely used IMU in FPV. BMI270 (Bosch) has a lower max sampling rate, which can reduce responsiveness, and is thus used more on smoother-flying builds.
Other components connect to the FC via UART, I2C and CAN. UART is the most common in FPV — for the receiver, video transmitter (VTX), GPS, telemetry or blackbox. I2C is a bus for lower-bandwidth sensors such as the magnetometer or barometer. CAN is a modern, noise-resistant interface used in advanced systems — e.g., for digital ESCs, GPS modules, sensors or telemetry devices on ArduPilot or INAV rigs. CAN is available on boards with H7 processors.
A useful FC feature is the blackbox — internal or external storage that logs flight data. These logs are used to tune PID, adjust filters and diagnose issues. Some controllers have onboard storage, others log to an SD card, and on budget models this feature may be absent.
When choosing an FC, consider the wiring/connectivity. Modern boards often provide connectors for ESC harnesses, digital and analog video, LEDs and other peripherals, greatly simplifying building and servicing. Pin order in these connectors varies by brand, so double-check before plugging in.
Flight controllers are often combined with other components to reduce weight and simplify builds. Some boards have an integrated ELRS receiver, Bluetooth/Wi-Fi for wireless setup, a power switch or camera switcher. AIO boards integrate the FC and ESCs; smaller whoop-class AIO boards often include a VTX — you only add a camera.
Board sizes are defined by the mounting hole spacing and should match your frame. The largest format, 30.5×30.5 mm, is used on classic 5″ and larger quads with room for a standard stack of separate components (FC, ESC, VTX). The mid format 20×20 mm is typical for smaller 3–4″ and racing builds where weight matters but performance is still needed. AIO boards with 25.5×25.5 mm mounting are mainly for tinywhoops, toothpicks and smaller 2–3″ quads. Always verify your frame supports the spacing and has clearance for connectors.
Betaflight is an open-source firmware for FPV racing, freestyle and micro quads. It’s designed to provide the fastest possible response between your stick movement and motor reaction. Thanks to optimised code and high control-loop rates (up to 8 kHz), it delivers extremely precise, smooth control even at high motor RPM.
Betaflight uses PID control that can be finely tuned to achieve your desired flight feel. It includes advanced digital filters that remove sensor noise and vibrations, improving stability and efficiency. The firmware supports bidirectional DShot, enabling two-way FC↔ESC communication to read live motor RPM and auto-optimise filtering.
Betaflight is flown mainly in fully manual (acro) modes where you control angular rate, or in Angle mode where you command the craft’s tilt. Throttle is always manual. With GPS, Betaflight can perform Return-to-Home (RTH), useful for long-range.
In practice, Betaflight suits all manual FPV quads (from tiny whoops to 10″ long-range) where response speed, precise control and stability are key. It’s not intended for fully autonomous or waypoint missions — that’s the domain of INAV or ArduPilot.
Betaflight is configured via the desktop app Betaflight Configurator, covered in a separate chapter.
INAV shares roots with Betaflight and in some regards they are similar. INAV focuses on stability, accurate navigation and autonomous control. It works with GPS, magnetometer, barometer and more, enabling modes like Altitude Hold, Position Hold and Return to Home (RTH).
INAV uses classic PID control augmented by navigation loops processing GPS and IMU data. It can hold course, stabilise in wind and respond precisely to heading changes. It supports autonomous waypoint missions and auto-landing. Everything is configured on PC via the INAV Configurator, with detailed setup of sensors, filters, mixes and modes.
Unlike Betaflight, INAV is much more universal and is used not only on multirotors but also on fixed-wing, gliders and VTOL. It’s especially popular for long-range quads and FPV wings.
ArduPilot is the most advanced open-source flight firmware for multirotors, fixed-wing aircraft, ground robots and boats. Unlike Betaflight (acro-focused) and INAV (adds basic navigation), ArduPilot provides a full autopilot system with extensive sensor support, precise navigation and powerful automation. It enables fully autonomous missions, real-time control via a ground station (GCS on a laptop, for example) and detailed management of flight modes and safety features. With this capability comes setup complexity, so ArduPilot is best suited to experienced builders. You can also attach an external onboard computer (e.g., Raspberry Pi) for additional features.
The firmware supports selected FPV controllers with F4 and H7 microcontrollers. ArduPilot is also common on more sophisticated professional-grade FCs. It can control virtually anything and offers many modes — from manual (Acro, Stabilize) and semi-autonomous (AltHold, Loiter, PositionHold) to fully autonomous (Auto with waypoints, Guided, RTL, AutoTune). Every mode is highly configurable. ArduPilot supports advanced sensors like multi-band GNSS/GPS, precision barometers, compasses, and peripherals over UART, I2C or CAN.
The failsafe logic in ArduPilot is among the most comprehensive. You can define actions on RC loss, low voltage, GPS loss, or leaving a defined area (geofence): auto-land, RTL, mode switch or custom actions. ArduPilot also logs detailed flight data to internal memory or an SD card for advanced analysis of vibrations, motor control, power consumption and errors.
ArduPilot features dynamic and notch filtering to suppress vibrations from large props. It can be used from small 2″ quads up to 30″ and beyond — wherever stability and smoothness matter more than extreme agility. Tuning can be accelerated by AutoTune, which automatically adjusts PID based on the craft’s response.
Configuration is done via Mission Planner (Windows) or QGroundControl (Windows/macOS/Linux/Android). These apps provide full setup, calibration, updates and mission planning, and are commonly used in flight for telemetry and control.
ArduPilot is ideal for pilots who want reliable navigation, long flights, repeatable missions and maximum safety. It suits long-range platforms (7–10″, Li-ion/LiPo), large industrial drones and fixed-wing. For pure freestyle or racing, where instant response and simplicity are paramount, Betaflight remains a better fit, while INAV sits in between.