Article

ExpressLRS binding: binding phrase, bind mode and what the receiver LED is telling you

Binding ExpressLRS is usually a 30-second job. When it drags on, the cause tends to be one of three things: the TX module and receiver run different major versions, the receiver never actually entered bind mode, or it is stuck in bootloader mode and only looks bound. Below are both bind methods, what each LED pattern means, and the checks to run when the Lua script shows no connection or the quad ignores the sticks.

Procedures follow the ExpressLRS documentation for 3.4 and later, plus the 4.0 and 4.1 release notes.

Check versions first

The first number of the version string has to match on the TX module and the receiver. A 3.1.2 module talks to a 3.0.1 receiver. A 3.2.0 module will not bind to a 2.4.0 receiver, whatever method you try. The same rule applies to 4.x: the 4.0.0 release notes say plainly that version 4 does not connect to 3.x, 2.x or 1.x at all. At the time of writing the current release is 4.1.0 (July 2026), and the 3.x line still gets maintenance releases (3.6.4 came out in June 2026), so mixed fleets are common.

You can read the receiver version in the ExpressLRS Lua script under Other Devices (this needs a working link) or in the banner of the receiver's Web UI. The Lua script shows the TX module version as well.

SPI receivers built into the flight controller are a special case, because their ELRS code lives inside Betaflight. Betaflight 4.4.0 and newer speak ELRS 3.x on SPI. Betaflight 2026.6 added ELRS 4 support for SPI receivers, but V3 remains the default build. To get V4 you set the ELRSV4 build flag in the firmware flasher, and from then on the receiver will not work with 3.x transmitters.

Version is not the only thing that has to agree. The Firmware Options page says options present on both TX and RX targets must match for a bind, and regulatory domain is the first on that list. On 2.4 GHz you choose between Regulatory_Domain_ISM_2400 and Regulatory_Domain_EU_CE_2400. The EU domain is the LBT (listen before talk) variant, so in Poland and the rest of the EU flash both devices with it.

Method 1: binding phrase

A binding phrase is a short text you enter in the ExpressLRS Configurator before flashing, or later in the Web UI on Wi-Fi capable hardware running 3.0 or newer. Since 4.1.0 you can also set it on a transmitter or receiver from a Lua script on the handset. The phrase is MD5 hashed into the UID built into the firmware. Any TX and RX with the same phrase connect on power-up, with no bind step at all.

The docs recommend at least 8 alphanumeric characters from the Latin alphabet, and suggest your pilot handle. It is not a password or an encryption key, and it does not need to be secret. Its job is to avoid collisions with other pilots: anyone using the same phrase can control your model, so a generic phrase shared by half the field is the real risk. A made-up example like kestrelfpv77 is the right kind of thing.

If you are flashing the receiver anyway, set a phrase. The docs call it a no-brainer: every receiver you flash with the same phrase connects without any bind ritual.

Do not use the phrase to lock one transmitter to one receiver. The docs say that is what Model Match is for (see below).

Method 2: bind mode and the Bind button

The traditional method puts the receiver into bind mode and then sends a bind pulse from the transmitter. On 3.4.0 and newer this works even if the receiver has a binding phrase. Older firmware with a phrase set ignores the procedure no matter how often you repeat it; you would have to reflash it with the phrase field disabled.

Ways to enter bind mode on 3.4.0 and newer:

  1. Power-cycle the receiver three times: apply power, wait for the LED to light, cut power within 2 seconds, repeat twice more. The docs suggest doing this with a flight pack, so check the wiring for shorts first and make sure the VTX gets some airflow.
  2. Click Bind Receiver in the Receiver tab of Betaflight Configurator 10.10 or newer (or type bind_rx in the CLI). This needs Betaflight 4.5.0 or newer on the flight controller.
  3. Hold the button on the receiver for 1.5 seconds, or short the boot pad to ground for that long if there is no button.

In bind mode the LED double blinks, pauses and repeats. With the radio on, open the ExpressLRS Lua script and press [Bind]. A popup appears briefly. When the LED goes solid, you are bound.

Bind mode ends when a bind succeeds or the receiver reboots. Reboot without binding and the receiver goes back to its previous bind. A successful bind stays until you run another one. If you lend quads or swap radios often, a Lua or Web UI option makes the bind volatile: it lasts only until the next power-cycle, after which the receiver boots straight into bind mode.

What the receiver LED means

LED (single colour) Meaning
Slow blink, 500 ms on/off Waiting for a transmitter
Double blink, pause Bind mode
Solid Connected to a transmitter, or in bootloader mode
Triple blink, pause Connected, but Model Match does not agree
Medium blink, 100 ms on/off Radio chip not detected
Fast blink, 25 ms on/off Wi-Fi mode

RGB receivers use colours: rainbow fade at startup, orange double blink for bind mode, orange triple blink for model mismatch, green heartbeat for Wi-Fi, solid colour when connected (the colour shows packet rate), and no light when off or in bootloader mode.

The row that catches people is "Solid". Switch the radio off: if the LED stays solid, the receiver was never bound. It is in bootloader mode.

Solid LED but no sticks: bootloader mode

The troubleshooting page puts it bluntly: a solid LED with no stick input and no RSSI on the radio means you are not bound. Typical causes:

  • The boot pads are still bridged after a passthrough flash.
  • The boot button is being pressed, for example by heat shrink, or it is damaged.
  • The flight controller UART pulls the RX pad low. A pull-down resistor fitted for SBUS inversion does this, and it is common on F4 boards.

To confirm, disconnect the receiver's TX and RX wires from the FC and power it again. If the LED now blinks slowly, the UART is the culprit. Move the receiver to another full UART, or fit a 300 Ohm to 1 kOhm resistor between the FC RX pad and a 3.3 V or 5 V pad. Lower values are more effective. If you use a DJI air unit (DJI FPV Air Unit, Caddx Vista, O3) with all six wires connected, remove the SBUS/DJI HDL wire.

If the LED stays solid even with the wires disconnected, a Wi-Fi flash was probably interrupted and the receiver is soft-bricked. Follow the unbricking procedure in the docs. To avoid this, wait for the slow blink after a Wi-Fi flash before cutting power.

Bound, but the quad does not respond

The C in the top-right corner of the Lua script means TX and RX are connected. If sticks still do nothing in the Receiver tab, use the telemetry sensor count on the radio to narrow it down (Model Setup, Telemetry, delete and discover sensors):

Symptom Likely cause
Bound, no stick input, only 10 sensors Wiring or FC setup: RX and TX swapped, wrong Serial RX port, inverted or half-duplex UART
Bound, no stick input, more than 10 sensors Model Match mismatch (LED triple blink), or RCVR_INVERT_TX enabled in receiver firmware
Sticks work, only 10 sensors Telemetry feature off in the FC, receiver RX wire not on the FC TX pad of the same UART, or old FC firmware without CRSFv2

On the Betaflight side ExpressLRS needs a full, uninverted, full-duplex UART: Serial RX enabled on that UART in the Ports tab, Receiver Mode Serial, provider CRSF, Telemetry on. In the CLI, get serialrx should show serialrx_inverted = OFF and serialrx_halfduplex = OFF. Set RSSI Channel and RSSI ADC to disabled.

Model Match

ExpressLRS stores packet rate, telemetry ratio, switch mode, Model Match, max power and dynamic power per Receiver number in EdgeTX, not per physical receiver. That is useful even without Model Match: two radio models with different Receiver numbers can hold a freestyle and a long-range setup for the same quad.

Model Match adds a check. With it on, the receiver connects but sends nothing to the flight controller unless the Receiver number in the radio model matches the Model Match number stored in the receiver. That stops you from flying a quad on the wing's model by mistake.

To set it: choose the Receiver number in Model Setup under the external (or internal) module, make sure the receiver is connected with good LQ, then set Model Match to On in the Lua script. The receiver stores the current number.

To clear it: with the receiver connected, set Model Match to Off. If you never wanted Model Match and the LED triple blinks, switch Model Match On, wait about a second, and switch it Off again. Both TX and RX need to be powered and connected for this.

Lua script housekeeping

ExpressLRS 4.0 renamed the Lua script to elrs.lua. Delete the old elrsV3.lua and elrsV3.luac from the SD card so you do not see two ExpressLRS tools. The release notes say the new script works with every ExpressLRS version back to 2.0. If the script hangs on "Loading...", go back to the radio preparation page in the docs and check the handset settings for ExpressLRS.