ExpressLRS and EdgeTX Setup

From RobotCombatWiki
Revision as of 17:01, 17 October 2026 by RobotRobot (talk | contribs) (New page: step-by-step ELRS + EdgeTX setup for combat robots)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

ExpressLRS (ELRS) and EdgeTX are now a common radio setup for combat robots. Radios such as the RadioMaster Pocket, Zorro, Boxer, TX16S and MT12, Jumper T-Lite and T-Pro, and BetaFPV LiteRadio 3 Pro come in ELRS versions running EdgeTX.[1] They are cheap and very flexible, but nothing is set up for a robot out of the box. This page walks through a typical setup with an ELRS PWM receiver (the kind with servo-style output pins) driving your ESCs. For general radio background see Radios, and for choosing hardware see the Radio List.

Test with the robot blocked up or in a test box, and with the weapon locked or its belt removed, until the failsafe has been checked. See Safety and Failsafes.

What ELRS and EdgeTX are

  • EdgeTX is the open-source operating system on the transmitter. It handles models, mixing, rates, switches and screens. As of October 2026 the current stable release is 2.12.x.[2] The EdgeTX User Manual has separate sections for color-screen and black-and-white radios.
  • ExpressLRS is the open-source radio link: the RF module inside (or plugged into) the transmitter, and the receiver in the robot. EdgeTX talks to the ELRS module using the CRSF protocol, so ELRS shows up as "CRSF" in EdgeTX menus.[3]
  • ELRS settings (packet rate, power, receiver outputs and failsafe) are changed with the ELRS Lua script on the radio, or through a web page served by the module or receiver over WiFi.

All-in-one boards: the popular Malenki and Repeat Robotics Catalyst boards have FlySky AFHDS 2A receivers built in, not ELRS. An ELRS-only radio can't drive them. Either use a separate ELRS PWM receiver with your ESCs, or buy a radio with a 4-in-1 multi-protocol module that can talk AFHDS 2A. As of 2026 there's no widely available all-in-one robot board with an ELRS receiver built in. See the Radio List.

Receivers: small ELRS PWM receivers such as the RadioMaster ER4 (4 outputs) and ER3C-i (3 outputs, built-in ceramic antenna, voltage telemetry) cost about $15–17 from RadioMaster as of October 2026.[4][5] Make sure you buy a PWM receiver, not a serial (CRSF) receiver meant for a drone flight controller.

Step 1: Check and match firmware versions

The first number of the ELRS version must match on the transmitter module and the receiver. For example, 3.x talks to 3.x, but a 3.x receiver won't connect to a 4.x transmitter at all, and no binding method will fix it.[6] ELRS 4.0 (February 2026) was a new major version that doesn't work with 3.x, and 4.1.0 is the current release as of October 2026.[7][8] The 3.6 line was still getting bug-fix releases in 2026, so new gear may ship with either.[9]

  • Check the transmitter: run the ELRS Lua script. The version line near the bottom shows the version, the regulatory domain and a code.[10] The regulatory domain must also match (for example, FCC/ISM 2.4 GHz vs EU "LBT" versions; some receivers are sold in both).
  • Check the receiver: once connected, the Lua script shows it under Other Devices. If it won't connect, put it in WiFi mode and look at its web page.[11]
  • Update: use the ExpressLRS Configurator (a desktop app) or the Web Flasher.[12] Pick the release, your exact device target and regulatory domain, and (optionally) a binding phrase, then build. Most ELRS PWM receivers and internal RadioMaster modules are updated over WiFi: the device makes a hotspot called "ExpressLRS RX" or "ExpressLRS TX" (password expresslrs), and you upload the file at http://10.0.0.1/.[13] Follow the ELRS page for your exact hardware, since a few older modules need extra steps.[14]
  • Update the Lua script too. Copy elrs.lua into the radio's SD card folder SCRIPTS/TOOLS. When moving to 4.x, delete the old elrsV3.lua/elrsV3.luac so you don't get two ExpressLRS entries.[15]
  • EdgeTX itself can be updated with EdgeTX Buddy. ELRS needs at least EdgeTX 2.4, and the 4.x "arm using a switch" option needs 2.11 or newer.[16]

Step 2: Bind

ELRS has two ways to pair a transmitter and receiver:[17]

  • Binding phrase (recommended): enter the same phrase in the Configurator (or the web page) when you flash both devices, and they connect automatically on power-up. The phrase isn't a password; it just keeps your link from colliding with other people's. Use something unique (ELRS suggests 8+ characters, such as your team name), not "robot" or "1234". From ELRS 4.1 you can also set the phrase from the radio with a Lua tool.[18]
  • Button binding: put the receiver in bind mode (power it on and off three times, or hold its button about 1.5 seconds on 3.4 and newer). The LED double-blinks. Then select [Bind] in the Lua script. A solid LED means bound.

Check the connection in the Lua script: a C in the top-right corner means connected.

Step 3: Create a model in EdgeTX

Make a separate model for each robot. Long-press MDL to open the model list and create a new model. Then, in Model Setup:

  • Name the model after the robot.
  • Internal RF: set it to CRSF/ELRS and give it a unique Receiver No. (used for Model Match, below).
  • Pre-start checks: turn on switch warnings so the radio complains if the weapon switch isn't off when you load the model or power on.[19]

Almost all robot setup happens on three screens: Inputs (rates and expo), Mixes (which controls drive which channels) and Outputs (reversing, end points and subtrim), in that order. Team Run Amok's EdgeTX programming guide walks through each one with screenshots from a Zorro, and is the best companion to this page.

Step 4: Drive mixing

EdgeTX has no ready-made "elevon" mix, so you build one yourself. For single-stick (arcade) drive, with the left drive ESC on CH1 and the right on CH2, the Run Amok guide uses:[20]

Channel Mix lines
CH1 (left drive) Ail at +100, plus Ele at +100
CH2 (right drive) Ail at +100, plus Ele at −100
  • Tank steering: skip the mix and put one stick axis on each channel (for example, CH1 = Thr, CH2 = Ele). On most Mode 2 radios the throttle stick doesn't spring back to center, so check your radio's manual for converting it.
  • If your dual ESC has its own mixing, turn mixing off in either the ESC or the radio, never both. With both on, forward drives only one motor.[21]
  • If the robot spins when you push forward, or turns the wrong way, use Run Amok's Mixer Fixer. More background is on Radios/Mixing.

Step 5: Reversing, rates and expo

  • Reversing: on the Outputs screen, set a channel's Direction to INV to reverse it.[22]
  • Invert switch: for a robot that drives upside down, add a second Ele line on the Inputs screen with weight −100, and make the first line active only when a switch is up. The Run Amok guide shows exactly how.[23]
  • Dual rates: lower the Ail weight on the Inputs screen (50–70% is a common start for steering). Add a second line on a switch to get full rate back.
  • Expo: also set on the Inputs screen. Positive expo softens the stick near center for finer control.[24]
  • End points (Min/Max on Outputs) limit how far a servo travels, which is handy for lifters. See Servos.

Step 6: Weapon on a switch, stick or slider

  • On a switch: on the Mixes screen, set the weapon channel's source to a switch. A 3-position switch gives −100 / 0 / +100. On a forward-only weapon ESC, that's off / about half / full.
  • On the throttle stick or a slider for proportional control. Many builders put the weapon on CH3 (the non-centering throttle stick on Mode 2), because ELRS's default failsafe for output 3 is already low throttle (see below).
  • Avoid CH5 for the weapon. In the normal switch modes CH5 (AUX1) is the 1-bit "arm" channel and only has two positions.[25] Use CH6 or higher, or map a different input channel to the output pin in the receiver's Output Mapping.[26] AUX channels have lower resolution than CH1–4. If you need more than four smooth proportional channels, use a "Full" packet rate (100Hz Full or 333Hz Full).[27]

Step 7: Packet rate, telemetry and power

Arenas are small, so range is rarely the problem, but a metal chassis and a crowded 2.4 GHz band at events do cut signal. Higher packet rates mean lower latency but less sensitivity.[28]

  • A mid-range rate such as 150Hz or 250Hz is a sensible default for a robot. Use 100Hz Full or 333Hz Full if you need extra full-resolution channels. Very fast rates (500Hz, F1000) gain little for driving.
  • Telem Ratio "Std" is fine. Telemetry lets receivers such as the ER3C-i report battery voltage.
  • Change packet rate only with the robot disabled. Changing it forces a disconnect.[29]
  • Place the antenna as described on Radios (near a non-metal panel or opening).

Step 8: Set and test the failsafe

This step is required. SPARC rules require all motion to stop on signal loss.[30] ELRS failsafe is set in the receiver, not in EdgeTX; the EdgeTX CRSF settings have no failsafe option.[31]

A PWM receiver goes into failsafe after one second without a valid packet (or right away if link quality drops to zero). By default every output is set to 1500µs (center) except output 3, which is 988µs (low).[32] Center stops a bidirectional drive ESC, but a forward-only weapon ESC on any output other than 3 would get about half throttle. The receiver sends no pulses at all at power-up until it hears the transmitter.

Each output has three failsafe modes in the receiver's web page (Connections tab):[33]

Mode What it does Safe for robots?
Set Position (default) Goes to a fixed pulse width you choose Yes, if the value really means "stopped": center for bidirectional drive, low for a forward-only weapon. The stored value ignores the receiver's own Invert setting.
No Pulses Stops sending a signal Only if the ESC stops when the signal disappears. Many do, but test it.
Last Position Keeps sending the last command No. Never use it for drive or weapons.

Two ways to set it:

  1. Lua script (simplest): finish mixing and trims first. Center the drive stick, put the weapon switch or stick in its off position, open the Lua script, go to Other Devices → your receiver, and press [Set Failsafe Pos]. This stores the current position of every channel.[34]
  2. Web page: put the receiver in WiFi mode (Lua → WiFi Connectivity → Enable RX WiFi), connect to its hotspot, open http://10.0.0.1/, and set each output's mode and value directly.[35]

Then test it as described on Failsafes: with the robot blocked up and drive and weapon running at low speed, switch the transmitter off. Everything must stop and stay stopped. Re-test after any firmware update, rebind, receiver swap, or change to trims, mixing or outputs.

Multiple robots and Model Match

With a binding phrase, every receiver flashed with your phrase connects to your radio, whatever model is selected. If two of your robots are on at once, both will respond. Driving a robot with the wrong model's mixing is also a common pit accident.

Model Match fixes this. Give each EdgeTX model its own Receiver No., power up that robot with its model selected, and set Model Match: On in the Lua script. That receiver will then only output signals when its own model is selected; with any other model it connects but stays silent.[36] Packet rate, telemetry ratio and power are also stored per Receiver No., so each robot can have its own.

Common problems

See also Troubleshooting.

  • Won't bind or connect: almost always a major version mismatch (3.x vs 4.x) or a different regulatory domain. Check both versions first.[37] A receiver with a binding phrase on firmware older than 3.4 won't enter button-bind mode.
  • Lua script stuck on "Loading...": the model's RF module isn't set to CRSF/ELRS, or the baud rate is too low.[38]
  • Receiver LED blinking fast, robot dead: the receiver has gone into WiFi mode. This happens automatically if it's powered for a while (about 60 seconds by default) without hearing the transmitter, for example a robot left on in the pits.[39] Power-cycle the robot with the transmitter on. The "Auto On" interval can be changed on the receiver's web page.
  • Connected but no response, LED three quick blinks: Model Mismatch. Select the right model, or turn Model Match off and on again to re-pair it.[40]
  • Servo jitter: ESP8285-based PWM receivers generate PWM in software, and ELRS 3.6.4 and 4.1.0 included fixes for this, so update first.[41] Also check for a weak or noisy BEC, and set the output rate to what the servo supports (50Hz is the safe default).
  • "Telemetry Lost" callouts: these mean some telemetry packets were missed, not that you've failsafed. ELRS 4.1 reduced them.[42]
  • Robot hums, creeps, or the controls are reversed: see the trim and mixing advice on Radios, then redo the failsafe.

See also