A collection of Lua widgets for EdgeTX-based radios.
A widget that lets you annotate each physical switch on your radio with a custom label, so you always know what role each switch plays in your current model.
Supported radios: RadioMaster TX15 series, TX16 series.
- Displays all switches in a grid layout, grouped by rows matching the radio's physical layout.
- Each switch box shows the switch name and your custom label.
- Empty switches are visually distinct from labelled ones (inverted colours).
- Labels are saved per model — switching models loads the correct set of labels automatically.
- Fullscreen / edit mode: tap any switch box to enter a label directly on the radio.
| Radio | Rows |
|---|---|
| TX15 | SE S1 S2 SF / SA SB SC SD / SW1 SW2 SW3 / SW4 SW5 SW6 |
| TX16 | SE SF SH SG / SA SB SC SD / LS S1 S2 RS / SW1 SW2 SW3 / SW4 SW5 SW6 |
-
Copy the
Widgets/SwitchInfo/folder to theWIDGETS/directory on your radio's SD card. -
On the radio, add the Switch Info widget to a fullscreen zone.
-
Open the widget in fullscreen to enter your switch labels.
- long touch on widget to enter edit mode
- tap any switch box to edit its label
- use the keyboard to enter a label (max 10 characters)
- press the back button to save the label and return to the main view
Labels are saved automatically to /MODELS/<modelname>.switches on the SD card whenever a label is edited.
A two-player Pong game for EdgeTX colour LCD radios, using the LVGL rendering API.
Supported radios: Any EdgeTX radio with a colour LCD and EdgeTtx 2.11 or later
- Two-player local game — each player controls their paddle with a gimbal stick.
- Ball accelerates slightly on each paddle hit, capped at a maximum speed.
- Paddle angle influences the ball's deflection angle.
- First to 7 points wins.
- Title screen, pause, scored, and game-over states with on-screen overlays.
- Automatically adapts to stick mode (modes 1–4).
| Action | Input |
|---|---|
| Player 1 paddle | Left gimbal vertical axis |
| Player 2 paddle | Right gimbal vertical axis |
| Start / Pause / Resume | ENTER |
| Quit | EXIT |
- Copy
GAMES/pong.luato theGAMESdirectory on your radio's SD card. - Access it from the radio's SD navigator.
or
- Copy
GAMES/pong.luato theSCRIPTS/TOOLS/directory on your radio's SD card. - Access it from the radio's Tools menu.
A mix script that reads LiPo pack voltage from a cells sensor and outputs a state-of-charge percentage (CelP) using a discharge lookup table.
Requires: Radiomaster ERS-CV01 (or similar) configured as Cels.
- Converts per-cell average voltage to a percentage via a 101-point discharge curve (Robbe table, origin 3.0 V).
- Works with both table output (FLVSS multi-cell) and single numeric output (auto-detects cell count).
- Tracks per-cell min/max voltages and pack-level min/max percentage across the flight.
- Publishes
CelPas a custom telemetry value, available for use in other scripts, widgets, and audio triggers. - Resets automatically when no sensor data is received (e.g. battery disconnected).
| Output | Range | Description |
|---|---|---|
CelP |
0–100 | Pack state of charge (%) |
The mix output is scaled to the EdgeTX internal range (0–1024), mapping directly to 0–100%.
- Copy
SCRIPTS/MIXES/ccalc.luato theSCRIPTS/MIXES/directory on your radio's SD card. - In EdgeTX, go to Model → Mix and add a new mix on the
CelPchannel with source set to Lua → ccalc. - Ensure your FLVSS sensor is bound and named
Celsin the telemetry screen.
- Power on your model and confirm that the
Celssensor is showing the correct voltage. - Go to telemetry sensors discovery to discover
CelPthat will contain the percentage remaining in the battery.
A mix script that reads a total LiPo pack voltage from any named sensor and outputs a state-of-charge percentage using a discharge lookup table. Unlike ccalc, it works with any voltage sensor.
Requires: Any telemetry sensor reporting total pack voltage (default: RxBt).
- Converts total pack voltage to a per-cell average, then maps it to a percentage via a 101-point discharge curve (Robbe table, origin 3.0 V).
- Auto-detects cell count from the measured voltage.
- Sensor name and output name are configurable at the top of the file.
- Publishes the result as a custom telemetry value, available for use in other scripts, widgets, and audio triggers.
| Output | Range | Description |
|---|---|---|
BatP |
0–100 | Pack state of charge (%) |
The mix output is scaled to the EdgeTX internal range (0–1024), mapping directly to 0–100%.
Edit the two lines at the top of bcalc.lua to match your setup (if needed):
local myBatSensorName = "RxBt" -- name of your total pack voltage sensor
local myBatPercentName = "BatP" -- name of the telemetry value to create- Copy
SCRIPTS/MIXES/bcalc.luato theSCRIPTS/MIXES/directory on your radio's SD card. - In EdgeTX, go to Model → Mix and add a new mix on the
BatPchannel with source set to Lua → bcalc. - Ensure your voltage sensor is bound and visible in the telemetry screen.
- Power on your model and confirm that the
Celssensor is showing the correct voltage. - Go to telemetry sensors discovery to discover
CelPthat will contain the percentage remaining in the battery.
A telemetry screen script for black-and-white 128×64 displays that shows individual LiPo cell voltages, per-cell percentage bars, total voltage, cell delta, and overall pack state-of-charge.
Supported radios: Any EdgeTX radio with a BW 128×64 display.
Requires: Radiomaster ERS-CV01 (or similar) configured as Cels.
- Displays up to 8 cells in a 2-column grid, each showing cell index, voltage, and a percentage bar.
- Summary row shows total pack voltage (
T:) and cell delta (D:), with the delta displayed inverted as a warning when it exceeds 0.1 V. - Overall state-of-charge percentage shown large and centred at the bottom.
- Chemistry indicator (
LP/HV) shown in the summary row. - [ENTER] toggles between LiPo (4.20 V max) and LiPo-HV (4.35 V max) discharge curves.
- Publishes
%batas a virtual telemetry sensor.
- Copy
SCRIPTS/TELEMETRY/cells.luato theSCRIPTS/TELEMETRY/directory on your radio's SD card. - On the radio, open the telemetry screen list and select cells as a telemetry page.
- Navigate to the telemetry screen on your radio.
- Press [ENTER] to toggle between LiPo and LiPo-HV chemistry if needed.
- Press [EXIT] to leave the telemetry page.
A Special Function script that drives the RGB LED ring lights on the radio to reflect gimbal stick positions in real time.
Supported radios: TX15, TX16S MK3.
- Maps each gimbal stick position to an angle on its corresponding LED ring.
- Lights up LEDs with a Gaussian spread (±2 LEDs) around the stick direction.
- Brightness scales with stick magnitude and speed of movement for responsive visual feedback.
- Skips LED updates when sticks are stationary (dead zone of 3 units) to reduce noise.
- Supports stick modes 1 and 2.
- Copy
SCRIPTS/RGBLED/gimbal.luato theSCRIPTS/RGBLED/directory on your radio's SD card. - In EdgeTX, go to Model → Special Functions and add a new function with:
- Trigger: your preferred activation switch (or
ONto always run) - Function:
RGB leds - Value: select
gimbal - Repeat:
ON - Enable:
ON
- Trigger: your preferred activation switch (or
Activate the assigned Special Function switch. The LED rings will reflect the position of each gimbal stick.
A Special Function script that colours the RGB LED rings based on battery percentage, with a smooth green-to-red gradient.
Supported radios: TX15, TX16S MK3.
- All 20 LEDs reflect battery state of charge at a glance.
- Smooth colour gradient between the configurable thresholds:
- ≥ 90 % — pure green.
- 90 % → 30 % — gradual transition from green through yellow/orange to red.
- ≤ 30 % — solid red.
- < 20 % — blinking red.
- Sensor name and thresholds are configurable at the top of the file.
Edit the constants at the top of batt.lua to match your setup:
local SENSOR_NAME = "%bat" -- telemetry percent sensor name
local GREEN_THRESHOLD = 90 -- >= this → pure green
local RED_THRESHOLD = 30 -- <= this → pure red
local BLINK_THRESHOLD = 20 -- < this → blinking red- Copy
SCRIPTS/RGBLED/batt.luato theSCRIPTS/RGBLED/directory on your radio's SD card. - In EdgeTX, go to Model → Special Functions and add a new function with:
- Trigger: your preferred activation switch (or
ONto always run) - Function:
RGB leds - Value: select
batt - Repeat:
ON - Enable:
ON
- Trigger: your preferred activation switch (or
Activate the assigned Special Function switch. The LED rings will reflect battery level.


