esp32.diy

ExpressLRS: Open Source High-Performance RC Link for ESP32

Oct 11, 2026 · 6 min read

Intermediate 5.4k stars 1.6k forks C GPL-3.0 Updated 2026-10-11

The ExpressLRS project banner, showing the official branding for this open-source radio control link.

TL;DR ExpressLRS is an open-source radio control link that uses LoRa modulation on ESP32 and STM32 hardware to deliver best-in-class range and latency for FPV drones and RC vehicles. It supports packet rates up to 1000 Hz, both 900 MHz and 2.4 GHz bands, and a wide range of receiver protocols.
What you need
  • ESP32
  • ESP8266
  • STM32
  • Semtech SX127x LoRa module
  • Semtech SX1276 LoRa module
  • Semtech SX1280 LoRa module
  • LR1121
BoardESP32 / ESP8266 / STM32
FrameworkCustom firmware (C)
LanguageC
LicenseGPL-3.0
Latest Release4.1.0 (2026-07-17)
DifficultyIntermediate

What You Will Build

ExpressLRS gives you a complete, open-source radio control link between a transmitter module and a receiver, designed from the ground up for FPV drone racing and long-range RC applications. Instead of a proprietary protocol locked to a single manufacturer's ecosystem, you get full control over the firmware running on both ends of the RF link.

The practical result is a radio link that achieves simultaneously low latency and long range — two goals that normally trade off against each other. Whether you are flying a 65 mm micro whoop indoors, racing a 5-inch quad at high speed, or sending a fixed-wing on a long-range waypoint mission, ExpressLRS has a hardware target and a configuration suited to that use case.

Because the project is community-driven and actively maintained, it also serves as a reference platform for anyone interested in learning how LoRa-based digital radio links are designed and optimized.

A collage of community members and builds using ExpressLRS hardware across a wide range of FPV and RC applications.\2
A collage of community members and builds using ExpressLRS hardware across a wide range of FPV and RC applications.

What You Need

Hardware

ExpressLRS does not manufacture its own hardware. Instead, it runs on hardware produced by a wide range of manufacturers. The core components of an ExpressLRS system are:

For guidance on choosing hardware, the official Hardware Selection page lists the supported targets and explains the trade-offs between 900 MHz and 2.4 GHz.

Software

Typical use cases

FPV Racing

The 1000 Hz packet rate on 2.4 GHz hardware gives racing pilots the lowest possible control latency, translating stick movements into motor commands faster than any proprietary link.

Long-Range Flight

The 900 MHz band's penetration and LoRa's link budget make ExpressLRS a strong choice for long-range fixed-wing and rover missions where the craft may pass behind terrain or through vegetation.

MAVLink Telemetry

ArduPilot users can run bidirectional MAVLink over the ExpressLRS link, streaming GPS, attitude, and battery data back to a ground station without a separate telemetry radio.

RF Firmware Research

For developers interested in LoRa-based communication systems, ExpressLRS is a well-maintained, real-world reference implementation of synchronized LoRa packet scheduling on ESP32 and STM32.

How It Works

ExpressLRS achieves its performance through a combination of LoRa modulation and a highly optimized over-the-air packet structure. LoRa (Long Range) is a spread-spectrum modulation technique developed by Semtech that provides excellent link budget — meaning the signal can travel farther or penetrate obstacles better than conventional AM/FM RC links at the same transmit power.

The key design decision that separates ExpressLRS from simply using an off-the-shelf LoRa module is its custom packet format. By reducing packet size to the minimum needed for control data and using a tightly synchronized timing loop between transmitter and receiver, the system achieves packet rates up to 200 Hz on 900 MHz and up to 1000 Hz on 2.4 GHz (with EdgeTX). Higher packet rates mean the flight controller receives fresher stick input more often, which translates directly into more responsive handling.

The 900 MHz band provides better penetration through obstacles and longer range at lower packet rates. The 2.4 GHz band allows the very high packet rates favored by racing pilots. Some hardware supports dual-band operation.

Telemetry flows back from the craft to the transmitter, and a Betaflight Lua script lets you read and adjust flight controller parameters directly from your radio screen. VTX and VRX frequency adjustments, including SmartAudio and Tramp support, are also accessible through the Lua interface. Binding between a transmitter and receiver uses a Bind Phrase — a user-defined text string baked into both firmware images at flash time — rather than a physical button-press binding procedure.

Build and Flash Steps

The recommended path for most users is the ExpressLRS Configurator, which handles downloading the correct source, setting your options, compiling, and flashing — all from a graphical interface.

  1. Download the Configurator. Go to the ExpressLRS-Configurator releases page and download the installer for your operating system.

  2. Select your target. In the Configurator, choose your hardware target from the list. Targets correspond to specific transmitter modules and receivers from supported manufacturers.

  3. Set your Bind Phrase. Enter a unique passphrase. Any transmitter and receiver flashed with the same Bind Phrase will bind to each other automatically. Choose something unlikely to collide with a neighbor's setup.

  4. Choose your regulatory domain. Select the RF domain appropriate for your country (ISM 900 MHz, FCC 2.4 GHz, CE 2.4 GHz, etc.). Using the wrong domain may be illegal in your jurisdiction.

  5. Set other options. The Configurator exposes options such as UART baud rate, telemetry power, and fan control depending on your target.

  6. Flash. Connect your hardware via USB. The Configurator can flash over USB for initial setup. After the first flash, WiFi OTA (over-the-air) updates are available — connect to the device's WiFi access point and upload a new firmware image through the browser interface.

  7. Configure the receiver protocol. On the craft side, wire the receiver to your flight controller and configure the serial protocol (CRSF is the recommended choice for Betaflight/iNav; MAVLink is available for ArduPilot). Supported protocols include CRSF, SBUS, SUMD, HoTT Telemetry, Scorpion Telemetry, MAVLink, and PWM.

  8. Install the Lua script. Copy the ExpressLRS Lua script to your radio's SD card scripts folder. This gives you in-field access to telemetry data and transmitter settings.

For the full walkthrough, including wiring diagrams for specific hardware, refer to the official documentation at expresslrs.org.

Extending the Project and Known Limitations

Ways to extend

Limitations to be aware of

Verdict

ExpressLRS is one of the most mature and widely adopted open-source RC link projects available, with over 5,000 GitHub stars, hundreds of supported hardware targets, and an active community continuously pushing the boundaries of range and latency. The ExpressLRS Configurator lowers the barrier to entry significantly — most users never need to touch the source code. If you are building or flying any kind of remotely controlled vehicle and want a link that is fully open, actively maintained, and genuinely competitive with commercial alternatives, ExpressLRS is the obvious starting point.

Sources

github.comExpressLRS/ExpressLRS — repository & README

Facts in this article come from the project's public README and GitHub metadata at the time of writing. Images belong to their respective owners and link back to the original source.