Skip to main content

Build Options

Betaflight firmware has many optional parts. A build option adds one part to the firmware when the firmware is built. Each build option is a USE_ flag in the firmware source code.

Flash memory on a flight controller is limited. Thus, the firmware does not contain all parts at the same time. You select the parts that you need before you flash the firmware.

There are two types of build options that a user can select:

  • Selectable build options: These options show in the Firmware Flasher tab of the Betaflight App. You select them from the lists.
  • Manual build options: These options do not show in a list. You type them in the Custom Defines field. This field shows only in expert mode.

The board configuration adds the hardware drivers for the parts on the flight controller (for example the gyro, the flash chip and the OSD chip). You do not add these. The Defines page in the development section gives the full list of flags, which includes the flags that a user cannot set.

How To Read the Tables​

  • Flag: The name of the option without the USE_ prefix. Type this name in Custom Defines. You do not have to type the USE_ prefix, because the build server adds it.
  • Default: "Yes" if the app selects the option by default.
  • Also adds: The build server adds these flags automatically when you select the option.
  • Introduced: The first firmware release that has the flag. "< 2025.12" means that the flag was in Betaflight 4.5 or earlier. "2026.12" means that the flag is only in the development (master) version at this time. "(app X)" means that the app shows the option in its list from release X.

Selectable Build Options​

The Betaflight App shows these options in the Firmware Flasher tab. The list comes from the cloud build server, so it can change between releases.

Radio Receiver​

Select the protocol that your receiver uses. Most protocols also add their telemetry.

OptionFlagDefaultAlso addsDescriptionIntroduced
CRSFSERIALRX_CRSFYesTELEMETRY_CRSF, TELEMETRY, SERIALRXAdds the TBS Crossfire (CRSF) serial receiver protocol. ExpressLRS receivers also use it. The build server also adds CRSF telemetry.< 2025.12
FPORTSERIALRX_FPORTNoTELEMETRY_SMARTPORT, TELEMETRY, SERIALRXAdds the FrSky FPort serial receiver protocol, which carries RC and telemetry on one wire. The build server also adds SmartPort telemetry. RP2350 targets remove it.< 2025.12
GHOSTSERIALRX_GHSTNoTELEMETRY_GHST, TELEMETRY, SERIALRXAdds the ImmersionRC Ghost (GHST) serial receiver protocol. The build server also adds Ghost telemetry. RP2350 targets remove it.< 2025.12
IBUSSERIALRX_IBUSNoSERIALRXAdds the FlySky iBUS serial receiver protocol. RP2350 targets remove it.< 2025.12
JETIEXBUSSERIALRX_JETIEXBUSNoTELEMETRY_JETIEXBUS, TELEMETRY, SERIALRXAdds the Jeti EX Bus serial receiver protocol. The build server also adds Jeti EX Bus telemetry. ESP32 and RP2350 targets remove it.< 2025.12
MAVLINKSERIALRX_MAVLINKNoSERIALRXAdds the MAVLink serial receiver protocol, which reads RC channels from MAVLink messages. The firmware also turns on MAVLink telemetry, because this protocol needs it.2025.12
PPMRX_PPMNoPPMAdds support for a PPM receiver, which sends all channels on one wire.< 2025.12
SBUSSERIALRX_SBUSNoSERIALRXAdds the SBUS serial receiver protocol for FrSky and Futaba receivers.< 2025.12
SPEKTRUMSERIALRX_SPEKTRUMNoSERIALRXAdds the Spektrum DSM2, DSMX and SRXL serial receiver protocols. The firmware also turns it on when USE_TELEMETRY_SRXL is set. ESP32 and RP2350 targets remove it.< 2025.12
SRXL2SERIALRX_SRXL2NoSERIALRXAdds the Spektrum SRXL2 serial receiver protocol.< 2025.12
SUMDSERIALRX_SUMDNoSERIALRXAdds the Graupner HoTT SUMD serial receiver protocol. ESP32 and RP2350 targets remove it.< 2025.12
SUMHSERIALRX_SUMHNoSERIALRXAdds the old Graupner SUMH serial receiver protocol. ESP32 and RP2350 targets remove it.< 2025.12
XBUSSERIALRX_XBUSNoSERIALRXAdds the JR XBUS serial receiver protocol. ESP32 and RP2350 targets remove it.< 2025.12

Telemetry​

Select a telemetry protocol if your receiver protocol does not add telemetry.

OptionFlagDefaultAlso addsDescriptionIntroduced
FRSKY_HUBTELEMETRY_FRSKY_HUBNoTELEMETRYAdds FrSky Hub telemetry for older FrSky D-series receivers. Not available on ESP32 and RP2350 targets.< 2025.12
HOTTTELEMETRY_HOTTNoTELEMETRYAdds Graupner HoTT telemetry. Not available on ESP32 and RP2350 targets.< 2025.12
IBUS EXTENDEDTELEMETRY_IBUS_EXTENDEDNoTELEMETRYAdds FlySky iBUS telemetry with extended sensor types, for example GPS data. It also turns on USE_TELEMETRY_IBUS. Not available on ESP32 and RP2350 targets.< 2025.12
LTMTELEMETRY_LTMNoTELEMETRYAdds Light Telemetry (LTM) output for ground stations and antenna trackers. Not available on ESP32 and RP2350 targets.< 2025.12
MAVLINKTELEMETRY_MAVLINKNoTELEMETRYAdds MAVLink telemetry output for ground stations and long range radio links. The MAVLINK receiver protocol turns it on automatically. Not available on ESP32 and RP2350 targets.< 2025.12
SMARTPORTTELEMETRY_SMARTPORTNoTELEMETRYAdds FrSky SmartPort telemetry for FrSky X-series and ACCESS receivers. The FPORT receiver protocol turns it on automatically. Not available on ESP32 and RP2350 targets.< 2025.12
SRXLTELEMETRY_SRXLNoTELEMETRYAdds Spektrum SRXL telemetry. It also turns on USE_SERIALRX_SPEKTRUM. The firmware removes it when neither SPEKTRUM nor SRXL2 receiver support is present. Not available on ESP32 and RP2350 targets.< 2025.12

Motor Protocol​

Select the protocol that your ESCs use. DShot is the default.

OptionFlagDefaultAlso addsDescriptionIntroduced
BRUSHEDBRUSHEDNoAdds support for brushed motors on small brushed quads.< 2025.12
DRONECANDRONECAN_ESCNoDRONECANAdds motor control of DroneCAN ESCs over the CAN bus. The build adds USE_DRONECAN automatically. Only MCUs with a CAN peripheral get it.2026.12
DSHOTDSHOTYesAdds the DShot digital motor protocol. Most ESCs use DShot. Without it, the build also removes DShot telemetry, bidirectional DShot and the RPM filter.< 2025.12
MULTISHOTMULTISHOTNoAdds the Multishot motor protocol for older analogue ESCs.< 2025.12
ONESHOTONESHOTNoAdds the Oneshot125 and Oneshot42 motor protocols for older analogue ESCs.< 2025.12
PROSHOTPROSHOTNoAdds the ProShot1000 motor protocol.< 2025.12
PWMPWM_OUTPUTNoAdds standard PWM motor output for older ESCs and servos. Most builds get it automatically through DShot or the beeper.< 2025.12

Other Options​

These options add functions to the firmware.

OptionFlagDefaultAlso addsDescriptionIntroduced
Acro TrainerACRO_TRAINERYesAdds Acro Trainer. This feature limits the angle of the quad in Acro mode to help new pilots learn. The firmware removes this feature when the build has no accelerometer.< 2025.12
AKK (SA FIX)AKK_SMARTAUDIONoAdds a fix for AKK and RDQ video transmitters that expect one extra byte in each SmartAudio packet. Use it only when your AKK or RDQ VTX does not respond to SmartAudio commands.< 2025.12
Altitude HoldALTITUDE_HOLDNoAdds Altitude Hold mode. The quad or wing keeps its current altitude with the barometer or GPS. A barometer or a GPS is necessary for this mode to work.2025.12
Batt. ContinueBATTERY_CONTINUENoAdds Battery Continue. If you reconnect the same battery, the mAh used count continues from the last value. A current sensor is necessary for a correct mAh count.< 2025.12
Cam. ControlCAMERA_CONTROLNoLets you control the menu of an FPV camera from the radio sticks through a camera control pin. The board must have a camera control pin, or you must set one with the CLI resource command.< 2025.12
ChirpCHIRPNoAdds a chirp signal generator flight mode for system identification and tuning analysis.2025.12
DashboardDASHBOARDNoAdds support for a small I2C OLED display that shows flight controller status. The board must have an I2C bus. Not available on SITL.< 2025.12
DroneCANDRONECANNoAdds the DroneCAN protocol stack on the CAN bus. Use it to connect DroneCAN devices to the flight controller. Only MCUs with a CAN peripheral get it (STM32H7, STM32G4, some STM32C5, X32). The build removes it on other MCUs.2026.12
EMFAT (AutoRun, Icon)EMFAT_TOOLSNoEMFAT_AUTORUN, EMFAT_ICONAdds an icon and a drive label to the USB mass storage drive that shows the Blackbox flash contents. The build server adds USE_EMFAT_AUTORUN and USE_EMFAT_ICON. It has an effect only on boards with USB mass storage support.< 2025.12
ESC Serial (SK) inc. 4wayESCSERIAL_SIMONKNoSERIAL_4WAY_SK_BOOTLOADERAdds ESC passthrough for SimonK ESCs, with the SimonK bootloader in the 4way interface. Use it only for old ESCs with SimonK firmware. BLHeli and Bluejay ESCs do not need it.< 2025.12
FLIGHT PLANFLIGHT_PLANNoAdds the flight plan, which flies the quad through a list of GPS waypoints. The build adds USE_GPS, altitude hold and position hold automatically.2026.6
GPSGPSYesGPS_PLUS_CODESAdds support for a GPS module. It adds GPS rescue, GPS OSD elements and GPS telemetry. The build server adds USE_GPS_PLUS_CODES. The build adds the NMEA and u-blox drivers and GPS rescue.< 2025.12
LED StripLED_STRIPYesAdds support for addressable RGB LED strips (WS2812), with up to 32 LEDs. Local builds on MCUs with 1 MB or more flash add it automatically.< 2025.12
LED Strip (64)LED_STRIP_64NoAdds support for addressable RGB LED strips with up to 64 LEDs. It also adds USE_LED_STRIP.< 2025.12
MagnetometersMAGNoAdds magnetometer (compass) support and all the compass drivers. Board configs also set it for on-board compass chips.< 2025.12
Optical FlowOPTICALFLOWYesAdds optical flow sensor support. Use it for position hold without GPS. It also turns on the MTF-01 and UP-T1 optical flow drivers.2025.12
OSD (Analog)OSD_SDYesOSDAdds OSD support for analogue video through the MAX7456 OSD chip. The build server adds USE_OSD with it. Without it, the build server removes USE_MAX7456.< 2025.12
OSD (Digital)OSD_HDYesAdds OSD support for digital HD video systems through MSP DisplayPort. Some ESP32 platform headers remove it.< 2025.12
OSD (FrSky)FRSKYOSDNoAdds support for the FrSky OSD module, which connects through a serial port. The build adds USE_OSD automatically.< 2025.12
Pin IOPINIOYesAdds PINIO outputs. These let a switch turn external devices on and off, such as a VTX power switch. The board config must give the PINIO pins, or you set them with the CLI resource command.< 2025.12
Position HoldPOSITION_HOLDNoAdds the Position Hold flight mode. The quad holds its position with GPS or optical flow. The build stops with an error if USE_GPS and USE_OPTICALFLOW are both missing.2025.12
Race ProRACE_PRONoAdds a race feature pack: RPM limit, OSD quick menu, RC stats and the spec prearm screen. Some parts need USE_DSHOT_TELEMETRY or USE_OSD.< 2025.12
Range FinderRANGEFINDERYesAdds rangefinder support to measure the distance to the ground. It also turns on all rangefinder drivers. One board config also sets it.< 2025.12
Soft SerialSOFTSERIALNoAdds software serial ports. These let you use extra serial devices on pins that have no hardware UART. Software serial uses timer pins and CPU time. Use it only for low baud rate devices. Not available on ESP32 and RP2350 targets.< 2025.12 (app 2025.12)
ServosSERVOSNoAdds servo outputs and servo mixer support. Use it for wings, tricopters, gimbals and other aircraft that use servos. The Wing option turns it on automatically.< 2025.12
VTXVTXYesAdds video transmitter control. You can change VTX band, channel and power from the radio, OSD or the app. ESP32 targets do not support it.< 2025.12
WingWINGNoMakes the firmware a fixed wing build. It adds wing features and removes some multirotor features. It removes yaw spin recovery, launch control and runaway takeoff prevention. Some wing board configs set it.2025.12

Manual Build Options​

You can add these options in the Custom Defines field of the Firmware Flasher tab:

  1. Set the app to expert mode.
  2. In Custom Defines, type the flag names. Put a space between each name. For example: RANGEFINDER TRANSPONDER. You do not have to type the USE_ prefix, because the build server adds it.
  3. Build and flash the firmware.

The build server does not add a prefix to ENABLE_ flags. Type each ENABLE_ flag in full, with its value. For example: ENABLE_OSD_CUSTOM_TEXT=0.

For a local build, add each flag with the USE_ prefix in OPTIONS. For example: make SPEEDYBEEF405V4 OPTIONS="USE_RANGEFINDER USE_TRANSPONDER". A local build does not use CLOUD_BUILD, so it already has many of these options.

caution

Manual build options are not tested on all boards. Each option uses flash memory. If the firmware is too large, the build fails. If an option needs a pin, set the pin with the CLI resource command.

Sensors​

FlagDescriptionRequiresIntroduced
BAROAdds the barometer subsystem. Altitude Hold, GPS Rescue and the variometer use barometer data. Board configs set it when the board has a barometer. For an external barometer, also add the driver flag for that part.the matching BARO_ driver flag< 2025.12
BARO_2SMBP_02BAdds the driver for the Omron 2SMPB-02B barometer on the I2C bus. Board configs also set it for barometers on the flight controller.BARO< 2025.12
BARO_BMP085Adds the driver for the Bosch BMP085 barometer on the I2C bus. Board configs also set it for barometers on the flight controller.BARO< 2025.12
BARO_BMP280Adds the driver for the Bosch BMP280 barometer on the I2C bus. Board configs also set it for barometers on the flight controller. The firmware removes it when the build has no I2C.BARO< 2025.12
BARO_BMP388Adds the driver for the Bosch BMP388 barometer on the I2C bus. Board configs also set it for barometers on the flight controller.BARO< 2025.12
BARO_BMP580Adds the driver for the Bosch BMP580 barometer on the I2C bus. Board configs also set it for barometers on the flight controller.BARO2026.6
BARO_BMP581Adds the driver for the Bosch BMP581 barometer on the I2C bus. Board configs also set it for barometers on the flight controller.BARO2026.6
BARO_DPS310Adds the driver for the Infineon DPS310 barometer on the I2C bus. This driver also reads the SPL07-003 and SPA06-003. Board configs also set it for barometers on the flight controller.BARO< 2025.12
BARO_LPS22DFAdds the driver for the ST LPS22DF barometer on the I2C bus. Board configs also set it for barometers on the flight controller.BARO< 2025.12
BARO_MS5611Adds the driver for the TE MS5611 barometer on the I2C bus. Board configs also set it for barometers on the flight controller. The firmware removes it when the build has no I2C.BARO< 2025.12
BARO_QMP6988Adds the driver for the QST QMP6988 barometer on the I2C bus. Board configs also set it for barometers on the flight controller.BARO< 2025.12
BARO_SPA06_003Adds support for the Goertek SPA06-003 barometer. It uses the DPS310 driver and shows the part name as SPA06_003. This flag turns on USE_BARO_DPS310 automatically. No board config uses it at this time.BARO2026.6
PITOTAdds pitot tube airspeed sensor support for wings. The sensor connects through I2C or DroneCAN. For an I2C sensor, also add PITOT_MS4525.2026.12
PITOT_MS4525Adds the driver for the TE MS4525DO I2C differential pressure sensor, used as a pitot airspeed sensor.PITOT2026.12

GPS and Navigation​

FlagDescriptionRequiresIntroduced
GPS_LAP_TIMERAdds the GPS lap timer, which measures lap times when the quad passes a saved GPS gate position. The build removes it when USE_GPS is not present.GPS< 2025.12

Receivers and Telemetry​

FlagDescriptionRequiresIntroduced
CRSF_OFFICIAL_SPECSets the CRSF serial speed to 416666 baud, as the TBS Rev10 specification gives. The default is 420000 baud. Do not use with ExpressLRS STM32 receivers.SERIALRX_CRSF2025.12
RX_PWMAdds support for a PWM receiver, which uses one wire for each channel. Each channel needs one timer pin. Set the pins with the CLI resource command. A firmware fault stops the RX_PARALLEL_PWM feature at this time. The feature list checks USE_PWM, not USE_RX_PWM.< 2025.12
TELEMETRY_IBUSAdds FlySky iBUS telemetry. The IBUS EXTENDED telemetry option also adds it. Not available on ESP32 and RP2350 targets.< 2025.12

OSD, VTX and Displays​

FlagDescriptionRequiresIntroduced
OSD_QUICK_MENUAdds the CMS quick menu for fast access to common settings. The Race Pro option also adds it.OSD< 2025.12
SPEC_PREARM_SCREENAdds an OSD screen that shows the spec settings before you arm. Race organisers use it to check that the quad obeys the race rules. The Race Pro option also adds it.OSD< 2025.12

Motors, ESCs and Servos​

FlagDescriptionRequiresIntroduced
RPM_LIMITAdds an RPM limiter that uses DShot motor telemetry to limit the maximum motor RPM. Spec racing classes use it. The Race Pro option also adds it. RP2350 and ESP32 targets remove it.DSHOT_TELEMETRY< 2025.12

Peripherals and Storage​

FlagDescriptionRequiresIntroduced
BLACKBOXAdds Blackbox flight data logging to on-board flash, an SD card or a serial port. Boards with a flash chip or an SD card already have it. On other boards, add it to log to a serial device such as OpenLog.< 2025.12
TRANSPONDERAdds an infrared race transponder. It supports the I-Lap, Arcitimer and ERLT systems. You must connect an IR LED to a timer pin. Set the pin with the CLI resource command. Not available on ESP32, RP2350, STM32N6, STM32C5 and X32 targets.< 2025.12

Flight Features and Other​

FlagDescriptionRequiresIntroduced
ELRSV4Changes the on-board SPI ExpressLRS receiver to the ExpressLRS 4 radio protocol. The default protocol is ExpressLRS 3. Use it only on boards with an on-board SPI ExpressLRS receiver. The transmitter must also use ExpressLRS 4. Serial ExpressLRS receivers do not need it.RX_EXPRESSLRS2026.6
GIMBALAdds control of the Caddx GM3 camera gimbal through a serial port. Stick inputs and quad attitude move the gimbal. Set the gimbal function on a UART with the CLI serial command, function value 262144.2025.12
RC_STATSAdds RC statistics, for example time at full throttle and average throttle, to the OSD post-flight statistics. The Race Pro option also adds it.OSD< 2025.12