- Betaflight - As a best practice, it is recommended to use the most recent stable release of Betaflight to obtain the best possible results;
- Telemetry - Telemetry has to be enabled in Betaflight Receiver tab and supported by the TX / RX for the scripts to be able to communicate with the flight controller;
- OpenTX - 2.3.12 or newer;
- EdgeTX - 2.4.0 or newer;
- ExpressLRS - 2.0.1 or newer;
- TBS Crossfire/Tracer TX / RX - v2.11 or newer;
- FrSky TX / RX with support for SmartPort - While most receivers with SmartPort support work fine, it is recommended to update the receiver to the most recent firmware version to correct any known bugs in telemetry.
- ImmersionRC Ghost RX module - Latest firmware and module set to RF Mode "Race250" - see (Ghost receiver manual pg 36-38) (Other RF Modes have issues or do not have telemetry to allow Betaflight LUA to work).
- Baud rate - Set to 400K in EdgeTX/OpenTX for Crossfire, Tracer, ExpressLRS.
!! IMPORTANT: DON'T COPY THE CONTENTS OF THIS REPOSITORY ONTO YOUR SDCARD !!
Download a zip file containing the latest version from the releases page.
Unzip the files from the link above and drag the contents of the obj folder to your radios SD card. If you do this correctly, the SCRIPTS directory will merge with your existing directories, placing the scripts in their appropriate paths. You will know if you did this correctly if the bf.lua file shows up in your /SCRIPTS/TOOLS directory.
Navigate to the TOOLS menu in OpenTX, select "Betaflight setup" or "Betaflight CMS" and press the [ENTER] button. The first time the script is launched after a clean install or upgrade it will go through it's compile procedure and exit back to the TOOLS menu when it's done.
The "Betaflight setup" script lets you configure Betaflight through the MSP protocol.
On a colour radio running EdgeTX 2.11.7 / 2.12.1 or newer the script uses the radio's own LVGL widgets — dropdowns, toggles and number editors in a standard EdgeTX page, with page navigation in the header. Everything else is the same script: the same settings, the same pages, the same protocol. Colour radios on other firmware versions, and every monochrome radio, keep the layout they have always had.
Monochrome radios, and colour radios on other EdgeTX versions:
- [+] / [-] / [ROTARY ENCODER] - Used to navigate.
- [PAGE] - Press to move to the next page. Long press to move to the previous page.
- [ENTER] - Press to access the selected element. Long press to open the function menu.
- [EXIT] - Press to go back or exit the script.
Colour radios on EdgeTX 2.11.7 / 2.12.1 or newer:
- [ROTARY ENCODER] - Move between controls. Press [ENTER] to edit one, and again to accept.
- [PAGE] - Move to the next or previous page. The header's arrow buttons do the same.
- [EXIT] - Go back, or exit the script from the main menu.
There is no function menu on a colour radio. "Save page" is the last row of every settings page, and the actions that concern the flight controller rather than the page you are on — reboot, accelerometer calibration, and the VTX table and board info downloads — are listed on the main menu under "Flight Controller".
Any changes to parameters in the script will not take effect until a save is manually initiated. Change the parameters you want to change, then send them back to the flight controller:
- Colour radios on EdgeTX 2.11.7 / 2.12.1 or newer - select "Save page", the last row of the page.
- Monochrome radios, and colour radios on other firmware versions - long press [ENTER] to open the function menu, then select "save page".
Leaving a page without saving discards the changes on it.
If you are using a VTX that supports the SmartAudio or Tramp protocols then bands and channels etc. are managed using VTX tables since Betaflight version 4.1.0. The script will be downloading and storing the current VTX table for every model the first time the model is connected and the script is run. If you change the VTX table, you have to re-load the updated VTX table in the script: on a colour radio running EdgeTX 2.11.7 / 2.12.1 or newer, select "Download VTX Tables" under "Flight Controller" on the main menu; on monochrome radios and other firmware versions, choose the 'vtx tables' option in the function menu.
Depending on the size of the vtx tables and the telemetry protocol used, downloading the vtx tables can take a while.
Please note that if the "VTX" feature wasn't included in your Betaflight firmware build, the downloading of the VTX tables will be skipped and the VTX menu item won't be available. The initial setup of the VTX/VTX tables must be done using the Configurator.
!! IMPORTANT: TBS Crossfire/Tracer only !!
"Betaflight CMS" lets you access the same CMS menu that is available in the OSD.
- [PITCH] - Navigate the current menu.
- [ROLL] - Enter menu or change selected parameter.
- [YAW] - Left to go back and right to enter the "SAVE / EXIT" menu.
- [+] / [ENTER] - Manual refresh. Press if the script doesn't update.
- [EXIT] - Close CMS menu and exit script. !! IMPORTANT: Single press only. Long press will exit the script without closing CMS and as a result you will not be able to arm !!
The optional background script offers RTC synchronization and RSSI through MSP. RSSI will only be sent if no other RSSI source is detected. It can be setup as a special or global function in OpenTX. The image below shows how to run the background script as a special function.
Unstable testing versions of the latest builds of the Lua Script can be downloaded from here.
Be aware that these versions are intended for testing / feedback only, and may be buggy or broken. Caution is advised when using these versions.
- Open this repository in VS Code
- Run
Dev Containers: Reopen in Container - The same
.devcontainersetup is used by GitHub Codespaces, thus you can also click the "Open in GitHub Codespaces" badge above - The container includes
make,lua/luac5.2,zip,git, andbash - Run
makefrom the root folder
- Be sure to have
makeand Lua 5.2 (luac) installed in the path - For
make release, you also needgitandzipinstalled - Run
makefrom the root folder - The installation files will be created in the
objfolder. Copy the files to your transmitter as instructed in the 'Installing' section as if you unzipped from a downloaded file.










