ExpressLRS 3.x Firmware Flashing: WiFi Update, USB Passthrough, and Recovery Mode — 2026 Guide

Your receiver bound yesterday and won’t bind today. The WiFi network shows up, you connect, upload the firmware, and — nothing. LED stays solid. The problem isn’t your hardware. It’s that ExpressLRS 3.x changed the flashing workflow and nobody told you. Here’s the procedure that works, tested across five TX modules and twelve receivers.

Why ELRS 3.x Changed the Rules

ExpressLRS 3.0 introduced a unified target system. Before 3.x, you flashed a receiver-specific binary (HM_EP2, BETAFPV_2400_RX, etc.). After 3.x, you flash a generic target based on the MCU (ESP8285, ESP32-C3, etc.) and configure device-specific options through the web UI. This broke every YouTube tutorial made before mid-2024.

The good news: once you understand the new workflow, it’s faster. The bad news: the transition period left a lot of receivers in WiFi-update purgatory. If you’ve been following our ExpressLRS binding guide, you already have your binding phrase configured. Flashing is the next step.

Step 1: Identify Your Hardware Revision

Before flashing anything, verify what you actually have. Connecting to the wrong target doesn’t brick the device — ELRS recovery mode is robust — but it wastes 20 minutes of troubleshooting.

Power on the receiver or TX module. Wait 60 seconds. If no successful connection, the device enters WiFi mode. Connect to the ExpressLRS WiFi network (password: expresslrs), navigate to http://10.0.0.1, and check the current firmware version.

If the device is already bound and online, use the EdgeTX Lua script: SYS → ExpressLRS → scroll to the bottom for version info.

Device Type Common MCU 3.x Target Name Flash Method (Easiest First)
EP1/EP2 RX ESP8285 HappyModel EP 2400 RX WiFi
BetaFPV Nano RX ESP8285 BetaFPV 2400 RX WiFi
Radiomaster RP1/RP2 ESP8285 RadioMaster RP1/RP2 2400 RX WiFi
Happymodel ES24TX Pro ESP32 HappyModel ES24TX Pro TX WiFi or USB
Radiomaster Ranger ESP32 RadioMaster Ranger TX USB (via web UI)
Namimno Flash OLED ESP32 Namimno Flash TX USB

Step 2: Download the Correct Firmware

Do NOT use random .bin files from a forum. Use the ExpressLRS Configurator (desktop app) or the web flasher at https://expresslrs.org/web-flasher/. The web flasher is the recommended method for 3.x — it auto-selects the correct target and walks through regulatory domain (FCC vs LBT vs CE) and binding phrase configuration.

Key 3.x firmware options:
Regulatory domain: FCC (915MHz) or ISM (868MHz, 2.4GHz) depending on your region. ISM_2400 for most 2.4GHz users worldwide.
Binding phrase: Set this during flashing. All devices with the same phrase auto-bind. No more manual button-press binding.
WiFi auto-interval: Default 60 seconds. If your receiver takes too long to enter WiFi mode, lower this to 30s.

Step 3: Flash via WiFi (RX)

This works for ESP8285-based receivers:

  1. Power the receiver (USB or battery — 5V is safe). The LED will flash fast for ~60 seconds then slow.
  2. The slow LED means WiFi mode is active. Connect to the ExpressLRS network.
  3. Navigate to http://10.0.0.1. Upload the .bin file.
  4. Wait for the “Update Success” message. The receiver reboots.
  5. Verify the binding phrase from the web UI. If blank, re-flash — you missed the binding phrase step.

If step 3 times out or the upload fails, the receiver may be in a state where WiFi mode exists but the filesystem is corrupted. Use USB passthrough instead.

Step 4: Flash via Betaflight Passthrough (RX Backup Method)

  1. Connect the receiver’s TX and RX to a flight controller UART (TX→RX, RX→TX).
  2. In Betaflight Configurator, enable the correct UART as “Serial Rx.”
  3. In the ELRS Configurator, select “Betaflight Passthrough” as the flash method.
  4. The configurator reboots the FC into bootloader mode and flashes the receiver through the FC’s USB connection.
  5. This works even if the receiver’s WiFi mode is broken — it flashes directly to the MCU.

For detailed FC wiring guidance, our FPV drone wiring best practices guide covers UART mapping and EMI-safe routing.

Step 5: Flash TX Modules

TX modules with ESP32 use the same web flasher but connect via USB:

  1. Connect the TX module directly to your computer via USB-C. Do NOT connect through the radio’s USB port — that routes to the radio’s SD card, not the module.
  2. Open the ELRS web flasher, select your module from the dropdown, configure options.
  3. Click “Flash.” The module’s existing WiFi network will disappear during the flash — that’s normal.
  4. Reboot the module. Reconnect to the radio.

Common Mistakes & What Most Pilots Get Wrong

Mistake 1: Flashing the Wrong Regulatory Domain

The consequence: the receiver flashes successfully but never binds. FCC (915MHz) firmware on a 2.4GHz receiver doesn’t work — different frequency, different hardware. I’ve watched pilots flash and re-flash five times before noticing the domain mismatch.

The fix: for 2.4GHz hardware, always select ISM_2400 (ExpressLRS 3.x) or a 2.4GHz-specific domain. 915MHz is only for 900MHz hardware, period. Check your receiver’s product page if unsure.

Mistake 2: Forgetting the Binding Phrase During Flash

The consequence: the receiver boots and shows a solid LED but never connects. Without a binding phrase, the receiver enters traditional bind mode, and your TX won’t see it unless you also put the TX in bind mode and press the physical button.

The fix: always set the binding phrase during flashing. Same phrase on TX and all RXs. This is the single biggest quality-of-life improvement in ELRS — don’t skip it.

Mistake 3: Using USB Passthrough on a Powered Stack

The consequence: the flight controller’s 5V regulator backfeeds the USB port, potentially damaging the FC or the computer. Some FCs handle this gracefully, some don’t. I’ve fried a USB port on a Matek H743 this way.

The fix: unplug the battery before connecting USB for passthrough flashing. The receiver gets 5V from the FC’s USB connection. If your receiver requires more than 5V for flashing (some 900MHz receivers need 6V+), use WiFi mode instead.

Mistake 4: Assuming “No WiFi = Bricked”

The consequence: you toss a perfectly good receiver. ELRS receivers are virtually unbrickable. The ESP8285 and ESP32 have ROM bootloaders that can’t be overwritten.

The fix: if WiFi mode doesn’t appear after 60 seconds, force bootloader mode. For ESP8285: bridge GPIO0 to ground while powering on. For ESP32: hold the BOOT button while powering on. Then flash via USB using the ExpressLRS Configurator. This works even if the firmware partition is completely corrupted.

⚠️ Regulatory Notice: The ExpressLRS firmware domain selection (FCC, LBT, CE, ISM) determines your transmitter’s output power and frequency compliance. Operating on the wrong regulatory domain for your region may violate 2026 radio spectrum regulations. In the US (FCC Part 15), the 915MHz band allows higher power than the 2.4GHz band. In the EU (ETSI EN 300 328), 2.4GHz operation is limited to 100mW EIRP without adaptive frequency hopping. Always verify your local regulations before selecting a domain during flashing.


Leave a Comment

Scroll to Top