ExpressLRS: Open Source High-Performance RC Link for ESP32
The ExpressLRS project banner, showing the official branding for this open-source radio control link.
- ESP32
- ESP8266
- STM32
- Semtech SX127x LoRa module
- Semtech SX1276 LoRa module
- Semtech SX1280 LoRa module
- LR1121
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.
\2What 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:
- A transmitter module — typically a JR bay or lite module containing an ESP32 or STM32 processor paired with a Semtech SX127x (900 MHz) or SX1280 (2.4 GHz) LoRa radio chip. Some newer targets also use the LR1121 for dual-band operation.
- A receiver — a small board containing a compatible ESP32 or STM32 and the same class of LoRa radio chip, matched to the transmitter's frequency band.
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
- ExpressLRS Configurator — the desktop application used to build and flash firmware to your hardware targets. This is the primary tool you will use; you do not need to set up a development toolchain unless you plan to contribute code.
- EdgeTX or OpenTX on your radio handset, if you are using a transmitter module in a JR-compatible radio.
- Betaflight, iNav, ArduPilot, or another flight controller firmware on the craft side, depending on your application.
Typical use cases
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.
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.
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.
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.
-
Download the Configurator. Go to the ExpressLRS-Configurator releases page and download the installer for your operating system.
-
Select your target. In the Configurator, choose your hardware target from the list. Targets correspond to specific transmitter modules and receivers from supported manufacturers.
-
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.
-
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.
-
Set other options. The Configurator exposes options such as UART baud rate, telemetry power, and fan control depending on your target.
-
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.
-
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.
-
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
- Dual-band setups: Hardware based on the LR1121 chip supports both 900 MHz and 2.4 GHz simultaneously, letting you switch bands in the field without swapping hardware.
- Bluetooth and WiFi joystick: ExpressLRS includes a Sim Joystick mode over Bluetooth or WiFi, which lets you use your radio handset as a simulator controller without additional adapters.
- OLED and TFT displays: Some transmitter modules support small displays for showing link statistics, RSSI, and telemetry directly on the module without opening the Lua script.
- Contributing firmware: The project is written in C and welcomes pull requests. The Discord server is the best place to discuss changes before starting work. New hardware targets are regularly added as manufacturers release compatible boards.
- MAVLink integration: For rovers, boats, and fixed-wing aircraft using ArduPilot, the MAVLink receiver protocol enables bidirectional telemetry and GCS connectivity over the ExpressLRS link.
Limitations to be aware of
- ExpressLRS is a point-to-point RC link, not a mesh network or general-purpose data radio. It is optimized for the RC control and telemetry use case.
- The project does not manufacture hardware; support for faulty hardware from third-party manufacturers is limited.
- Regulatory compliance (transmit power, frequency band) is the user's responsibility. Always check local rules before flying.
- Very high packet rates (500–1000 Hz) are only available on 2.4 GHz hardware with a compatible radio running EdgeTX.
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 & READMEFacts 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.



