ExpressLRS 3.x Flashing and Migration: New Features, Breaking Changes, and Safe Update — 2026 Guide

ExpressLRS 3.x shipped a complete packet format rewrite that breaks compatibility with 2.x firmware. Your 3.x transmitter module cannot talk to a 2.x receiver — they simply won’t bind. The migration is mandatory if you update any single device, but the flashing order matters. Flash the wrong device first and you’ll have a dead link with no way to recover wirelessly.

What Changed in ExpressLRS 3.x

The headline change is FLRC (Full Link Rate Control) — a redesigned packet scheduler that dynamically switches between 1000Hz, 500Hz, 250Hz, and 50Hz modes based on signal quality. In 2.x, the link had a fixed rate; in 3.x, it continuously optimizes for either lowest latency or longest range.

Breaking Changes From 2.x

  • Packet format is completely new. No backwards compatibility. 3.x TX module cannot bind to 2.x RX.
  • Binding phrase format changed. The 3.x bind phrase uses UID-based derivation instead of the old SHA-256 method. You’ll need to re-enter your bind phrase or re-generate it.
  • Model Match is now per-model. In 2.x, Model Match was a global on/off toggle. In 3.x, each model has its own Model Match ID, configurable via the Lua script.
  • WiFi flashing protocol updated. ExpressLRS Configurator 1.6.0+ is required. Older versions cannot flash 3.x targets.
  • 50Hz mode for edge-case range. A new ultra-low-rate mode activates when LQ drops below threshold — this gives you control at ranges where 2.x would failsafe.

New Features Worth Migrating For

  • Dynamic Power with true 10mW floor: 3.x drops transmit power to 10mW when signal is perfect, saving significant TX battery.
  • FLRC auto-mode: One mode that handles everything from 1000Hz racing to 50Hz mountain surfing without manual switching.
  • Native Gemini support: True diversity on the RX side with dual RF paths merged at the packet level.
  • Backpack improvements: VRX Backpack now supports 1080p passthrough and lower latency.

Step-by-Step 3.x Migration

Step 1: Update ExpressLRS Configurator First

Download ExpressLRS Configurator 1.6.0 or newer from the ExpressLRS releases page. Older versions cannot build 3.x firmware. Verify the version in the Configurator’s About menu before proceeding.

Step 2: Flash the Transmitter Module First (via WiFi)

This is the critical order. Flash the TX module before the receiver:

  1. Power on your radio with the ExpressLRS TX module installed
  2. On the TX module, press the button to enter WiFi mode (LED flashes rapidly)
  3. Connect your computer to the ExpressLRS TX WiFi network (password: expresslrs)
  4. Open a browser to http://10.0.0.1
  5. Select Firmware Update
  6. Choose your target (e.g., RadioMaster Ranger 2.4GHz TX)
  7. Select version 3.x.x (latest stable)
  8. Enter your new bind phrase (re-enter even if it’s the same as before — the hash is different)
  9. Click Build and Flash

The TX module will reboot with 3.x firmware. At this point, it cannot communicate with any 2.x receivers.

Step 3: Flash All Receivers via WiFi (Before Flying)

For each receiver in your fleet:
1. Power the quad (RX will enter WiFi mode automatically if no TX is detected — the 3.x TX is invisible to 2.x RX)
2. Connect to ExpressLRS RX WiFi
3. Browse to http://10.0.0.1
4. Select the RX target (e.g., RadioMaster RP1 2.4GHz)
5. Select version 3.x.x matching the TX module version
6. Enter the exact same bind phrase as the TX module
7. Click Build and Flash

After flashing, the RX LED should go solid, indicating it found the 3.x TX module and bound successfully.

Step 4: Update the Lua Script on Your Radio

The ExpressLRS Lua script must match the firmware version:
1. Download the latest elrsV3.lua from the ExpressLRS Configurator or GitHub releases
2. Copy it to your radio’s SD card: SCRIPTS/TOOLS/elrsV3.lua
3. On your radio, navigate to System → Tools → ExpressLRS
4. Verify the Lua script version matches the firmware version

Step 5: Reconfigure Model Match (If Used)

If you used Model Match in 2.x:
1. On your radio, open the ExpressLRS Lua script
2. For each model, set a unique Model Match ID (1-63)
3. The receiver will only arm when the matching model is selected on the radio

ExpressLRS 3.x Quick Reference

Feature ExpressLRS 2.x ExpressLRS 3.x Migration Required
Packet Format 2.x native 3.x native (FLRC) Yes — incompatible
Max Packet Rate 1000Hz fixed 1000Hz dynamic Auto-negotiated
Minimum Packet Rate 50Hz (manual) 50Hz (auto, FLRC) No config needed
Dynamic Power Floor 25mW 10mW TX flash required
Bind Phrase Hash SHA-256 UID-derived Re-enter bind phrase
Model Match Global toggle Per-model ID (1-63) Reconfigure per model
Receiver Diversity Antenna only Gemini (dual RF path) Hardware-dependent
WiFi Flashing Protocol v1 v2 (Configurator 1.6+) Update Configurator
Configurator Required 1.5.x 1.6.0+ Mandatory update

What Pilots Get Wrong About 3.x Migration

Mistake 1: Flashing the Receiver Before the TX Module

If you flash a receiver to 3.x first, it won’t see the 2.x TX module and won’t bind. You then can’t flash the TX module wirelessly because the receiver WiFi is the only recovery path. Fix: Always flash TX first, then receivers. TX first ensures WiFi recovery is available for all devices.

Mistake 2: Reusing the Old Bind Phrase Without Re-Entering It

The 3.x bind phrase uses a different hash algorithm. Even if you type the exact same phrase, the 2.x UID stored on the TX module is computed with the old hash. Fix: Delete the old UID from the TX module’s web interface, then enter your bind phrase fresh during the 3.x flash. The new UID will be generated correctly.

Mistake 3: Skipping the Lua Script Update

A 2.x Lua script running against 3.x firmware will show wrong packet rates, missing features (FLRC mode, Model Match), and may crash the radio script engine. Fix: The Lua script version must match the firmware major version. Always download the matching elrsV3.lua.

Mistake 4: Forgetting Backup Receivers

Pilots flash their primary quad’s receiver to 3.x and find their backup quad (still on 2.x) won’t bind. The 3.x TX module can’t talk to 2.x receivers. Fix: Before flying, verify every receiver in your kit is on 3.x. Keep a micro USB cable in your field kit to flash receivers via USB if WiFi recovery fails.

Mistake 5: Running Mismatched TX and RX Versions

3.0.0 TX with 3.2.0 RX works if both are 3.x, but features like Gemini require identical minor versions. Fix: Flash all devices to the same exact version number. ExpressLRS Configurator shows a version selector — pick the same version for TX and every RX.

⚠️ Regulatory Notice: The flight recommendations in this article should be followed in accordance with the latest 2026 drone regulations in your country or region. ExpressLRS operates in the 2.4GHz and 900MHz ISM bands — output power regulations vary by country. The FCC (US) allows up to 1W on 2.4GHz and 900MHz, while CE (EU) limits 2.4GHz to 100mW EIRP and 868MHz to 25mW. Always verify your ExpressLRS power settings comply with local laws. Regulations vary significantly between the FAA (US), EASA (EU), CAA (UK), CAAC (China), and other authorities.

The binding process and hardware setup fundamentals haven’t changed. Our ExpressLRS Binding Methods guide covers bind phrase setup, button binding, and WiFi recovery in detail — the same procedures apply with 3.x, just with the new hash algorithm. For pilots deciding between systems, our Crossfire vs ExpressLRS comparison breaks down the range, latency, and reliability trade-offs in depth.

If you rely on telemetry data in your OSD, our ExpressLRS Telemetry Setup guide covers CRSF sensor discovery and EdgeTX widget configuration — the telemetry pipeline remains identical in 3.x.

The RadioMaster Ranger 2.4GHz TX module handles ExpressLRS 3.x natively with Gemini-ready hardware and WiFi flashing built in. Paired with the RP1 receiver, it provides sub-5ms latency at 1000Hz and reliable 50Hz mode for long-range missions — all configurable through the 3.x Lua script.

Leave a Comment

Scroll to Top