# Compilation Options This page documents the CMake options available when building EdgeTX firmware. Most options have sensible defaults set by the target's CMakeLists.txt — you only need to override them when you have a specific reason to. ## Target Selection These are the most important options to set, as they determine which radio you are building for. ### `PCB` Selects the radio target. | Value | Radio | |-------|-------| | `X7` | FrSky Taranis Q X7 / X7S and Jumper / RadioMaster variants (see `PCBREV`) | | `X9LITE` | FrSky Taranis X9 Lite | | `X9LITES` | FrSky Taranis X9 Lite S | | `XLITE` | FrSky X-Lite | | `XLITES` | FrSky X-Lite S | | `X9D` | FrSky Taranis X9D | | `X9D+` | FrSky Taranis X9D+ (see `PCBREV`) | | `X9E` | FrSky Taranis X9E | | `X10` | FrSky Horus X10 / X10S and RadioMaster / Jumper variants (see `PCBREV`) | | `X12S` | FrSky Horus X12S | | `PL18` | Flysky PL18 and variants (see `PCBREV`) | | `TX15` | RadioMaster TX15 | | `TX16SMK3` | RadioMaster TX16S Mark III | | `T15PRO` | Jumper T15 Pro | | `ST16` | Siyi ST16 | | `PA01` | FrSky PA01 | ### `PCBREV` Selects a specific variant within a `PCB` target. Valid values depend on the selected `PCB`: === "X7" | Value | Radio | |-------|-------| | `TX12` | RadioMaster TX12 | | `TX12MK2` | RadioMaster TX12 Mark II | | `ZORRO` | RadioMaster Zorro | | `BOXER` | RadioMaster Boxer | | `MT12` | RadioMaster MT12 | | `GX12` | RadioMaster GX12 | | `POCKET` | RadioMaster Pocket | | `T8` | RadioMaster T8 | | `COMMANDO8` | RadioMaster Commando 8 | | `T12` | Jumper T12 | | `T12MAX` | Jumper T12 Max | | `TPRO` | Jumper T-Pro | | `TPROV2` | Jumper T-Pro V2 | | `TPROS` | Jumper T-Pro S | | `T14` | Jumper T14 | | `T20` | Jumper T20 | | `T20V2` | Jumper T20 V2 | | `TLITE` | Jumper T-Lite | | `LR3PRO` | Jumper LR3 Pro | | `BUMBLEBEE` | Jumper Bumblebee | | `ACCESS` | FrSky Q X7 Access | | `V12` | FrSky Q X7 V1.2 | | `V14` | FrSky Q X7 V1.4 | === "X9D+" | Value | Radio | |-------|-------| | `2014` | X9D+ (original, default) | | `2019` | X9D+ 2019 | === "X10" | Value | Radio | |-------|-------| | `STD` | FrSky Horus X10 (default) | | `EXPRESS` | FrSky Horus X10 Express | | `T16` | RadioMaster TX16S | | `TX16S` | RadioMaster TX16S Mark II | | `F16` | Flyzone F16 | | `V16` | VolantexRC V16 | | `T18` | Jumper T18 | | `T15` | Jumper T15 | === "PL18" | Value | Radio | |-------|-------| | `PL18` | Flysky PL18 (default) | | `PL18EV` | Flysky PL18EV / Paladin EV | | `PL18U` | Flysky PL18U | | `EL18` | Flysky EL18 | | `NV14` | Flysky NV14 | | `NB4P` | Flysky NB4+ | ### `TRANSLATIONS` Firmware language. Default: `EN` Valid values: `CN` `CZ` `DA` `DE` `EN` `ES` `FI` `FR` `HE` `HU` `IT` `JP` `KO` `NL` `PL` `PT` `RU` `SE` `SK` `TW` `UA` --- ## Feature Options These options enable or disable firmware features. Defaults are typically set by the target, so you only need to override them if you want to add or remove a feature for a specific build. | Option | Default | Description | |--------|---------|-------------| | `AUTOSOURCE` | ON | Automatic source detection in menus | | `AUTOSWITCH` | ON | Automatic switch detection in menus | | `BLUETOOTH` | varies | Bluetooth module support | | `BOOTLOADER` | ON | Include bootloader | | `CURVES` | ON | Curves support | | `DANGEROUS_MODULE_FUNCTIONS` | OFF | Enable RangeCheck / Bind / Module OFF functions | | `DBLKEYS` | ON | Double key shortcuts | | `DISK_CACHE` | ON | SD card disk cache (color screen targets) | | `FAI` | OFF | Competition mode — disables telemetry | | `FLIGHT_MODES` | ON | Flight modes | | `FLYSKY_GIMBAL` | varies | Flysky serial gimbal support | | `GVARS` | ON | Global variables | | `GUI` | ON | GUI | | `HELI` | ON | Helicopter mixer menu | | `INTERNAL_GPS` | varies | Internal GPS support | | `KCX_BTAUDIO` | OFF | KCX BT audio emitter support | | `LUA` | ON | Lua scripting | | `LUA_COMPILER` | ON | Pre-compile and cache Lua scripts on the radio | | `LUA_MIXER` | ON | Lua mixer / model scripts | | `MODULE_PROTOCOL_D8` | ON | FrSky D8 module protocol | | `MODULE_PROTOCOL_FCC` | ON | FCC module protocol | | `MODULE_PROTOCOL_FLEX` | OFF | Non-certified FLEX module protocol | | `MODULE_PROTOCOL_LBT` | ON | EU / LBT module protocol | | `MODULE_SIZE_STD` | ON | Standard size external module bay | | `MULTIMODULE` | ON | DIY Multiprotocol TX Module | | `OVERRIDE_CHANNEL_FUNCTION` | ON | OverrideChannel function | | `PPM_CENTER_ADJUSTABLE` | ON | PPM centre adjustable | | `PPM_LIMITS_SYMETRICAL` | OFF | PPM limits symmetrical | | `RAS` | ON | RAS (SWR) measurement | | `SPACEMOUSE` | OFF | SpaceMouse support (Horus only) | | `TEMPLATES` | OFF | Model templates menu | | `UNEXPECTED_SHUTDOWN` | ON | Unexpected shutdown warning screen | | `USB_SERIAL` | ON | USB serial (CDC) | | `WATCHDOG` | ON | Hardware watchdog | --- ## Hardware Configuration These string options configure hardware behaviour and are normally set by the target. ### `PWR_BUTTON` How the power button works. Default is target-specific. | Value | Description | |-------|-------------| | `PRESS` | Momentary press to power on/off (most radios) | | `SWITCH` | Toggle switch | ### `PPM_UNIT` PPM display unit. Default is target-specific. | Value | Description | |-------|-------------| | `PERCENT_PREC1` | Percentage with one decimal place (e.g. 100.0%) | | `PERCENT_PREC0` | Percentage with no decimal places (e.g. 100%) | | `US` | Microseconds | ### `DEFAULT_MODE` Default sticks mode. Leave blank to use the firmware default. | Value | Description | |-------|-------------| | `` | Use firmware default | | `1` | Mode 1 | | `2` | Mode 2 | | `3` | Mode 3 | | `4` | Mode 4 | ### `INTERNAL_GPS_BAUDRATE` Baud rate for the internal GPS, where supported. Default: `9600` ### `LUA_SCRIPT_LOAD_MODE` Controls how Lua scripts are loaded and compiled. Leave blank to use the firmware default (`bt` on radio, `T` on simulator/debug builds). Accepts a combination of the following flags: | Flag | Description | |------|-------------| | `b` | Load binary (pre-compiled) scripts | | `t` | Load text scripts | | `T` | Pre-compile scripts | | `x` | Execute on load | | `c` | Compile only | | `d` | Decompress | ### `POPUP_LEVEL` Controls the verbosity of popup notifications. Default: `2` (set to `3` for `FRSKY_RELEASE` builds). --- ## Debug & Tracing These options are for development and debugging. All default to `OFF`. | Option | Description | |--------|-------------| | `ASTERISK` | Show asterisk icon to identify test-only firmware | | `DEBUG_SEGGER_RTT` | Route debug output to Segger RTT | | `DEBUG_WINDOWS` | Trace UI window activity | | `DEBUG_YAML` | Trace YAML parser activity | | `DEBUG_LABELS` | Trace label activity | | `JITTER_MEASURE` | Enable ADC jitter measurement | | `SEMIHOSTING` | Enable debugger semihosting | | `TEST_BUILD_WARNING` | Show a warning banner on test builds | | `TRACE_AUDIO` | Trace audio subsystem | | `TRACE_LUA_INTERNALS` | Trace Lua VM internals | | `UI_PERF_MONITOR` | Overlay frame rate and CPU usage on screen | | `WARNINGS_AS_ERRORS` | Treat compiler warnings as errors (`-Werror`) | --- ## Simulator Options | Option | Default | Description | |--------|---------|-------------| | `SIMU_DISKIO` | OFF | Enable disk I/O simulation using a `sdcard.image` file | | `SIMU_LUA_COMPILER` | ON | Pre-compile and cache Lua scripts in the simulator | | `SIMU_TARGET` | ON | Build the simulator target | | `DISABLE_COMPANION` | OFF | Skip building Companion and simulators | --- ## Release Build Options These options are used to produce official manufacturer-specific firmware releases and are not needed for general development builds. | Option | Manufacturer | |--------|-------------| | `FRSKY_RELEASE` | FrSky (also sets `POPUP_LEVEL=3`) | | `IMRC_RELEASE` | IMRC | | `TBS_RELEASE` | Team BlackSheep | | `JUMPER_RELEASE` | Jumper | | `RADIOMASTER_RELEASE` | RadioMaster | | `RADIOMASTER_RTF_RELEASE` | RadioMaster RTF | | `IFLIGHT_RELEASE` | iFlight | | `BETAFPV_RELEASE` | BetaFPV | --- ## Compiler & Build Flags | Option | Default | Description | |--------|---------|-------------| | `OPT` | `s` | Optimisation level (`0`, `1`, `2`, `s`) | | `FIRMWARE_C_FLAGS` | `` | Additional C compiler flags | | `FIRMWARE_CXX_FLAGS` | `` | Additional C++ compiler flags | | `WARNINGS_AS_ERRORS` | OFF | Treat all compiler warnings as errors | | `VERBOSE_CMAKELISTS` | OFF | Show extra information when processing CMake files |