ExpressLRS (ELRS) – full review and comparison with other protocols
Article content
- What is ExpressLRS?
- Advantages of ExpressLRS
- Specifications and compatibility
- Lua script for controlling the ELRS module
- Firmware and receiver updates
- Comparing ExpressLRS with other protocols
- Practical recommendations for choosing a protocol
- Common errors and tips for users
- Conclusion
When ExpressLRS first appeared as a “hacker” experiment on GitHub in 2018, few people believed that in a few years it would become the de facto standard for most new FPV quadcopters. Today, ELRS confidently competes with the long-established Crossfire and FrSky systems, and most importantly, it remains a completely open project with an active community. In this article, we will understand what ELRS is, why the protocol “took off” and whether it is really that much better than its competitors, as is often claimed on forums.
What is ExpressLRS?
Before we delve into firmwares, antennas, and comparison charts, it’s worth answering the basic “what is ELRS?” In short, ExpressLRS is an open RC protocol that runs on top of LoRa modulation. It’s specifically optimized for drones, but can easily be integrated into other unmanned platforms, from land-based vehicles to underwater ROVs.
History of creation and development of the project
The project started in 2018, when a group of developers from the OpenTX community decided to adapt LoRa for FPV needs. The first commits were primitive: one C file that pushed an 8-channel packet every 50 ms. But the philosophy of “open hardware + open firmware” was laid immediately. In 2022, the 2.4 GHz line of EP1/EP2 receivers from Happymodel appeared, and by 2024, the system reached the stable 3.x branch with automatic “cloud” build. Now, in 2026, more than 180 developers regularly commit code, and Pull Requests check CI tests on GitHub Actions.
The result is rapid releases (on average once every 4-5 months) and a fairly strict “code review”, which is rare for hobby projects.
Basic operating principles: LoRa, MCU, TX/RX
The heart of each module is the Semtech series LoRa transceivers:
- SX1276/78 – for 868/915 MHz;
- SX1280 – for 2.4 GHz.
The microcontroller (ESP32, STM32 or RP2040) reads the bits from the transmitter, encodes them into a bit frame and sends them to the radio frequency. At the receiver, the same algorithm “binds” to the Frame ID and restores the channel states. ExpressLRS is basically control + telemetry in one stream, where the priority is always on the control channels. If any part of the packet does not fit, the telemetry is discarded, but the control does not suffer – crucial for flight safety.
Frequency bands: 2.4 GHz and 900 MHz
Although LoRa is easy to scale, the developers deliberately left two ranges:
- 2.4 GHz — minimal latency and compatibility with stock Wi-Fi antennas.
- 868/915 MHz — almost double the link budget and better penetration through foliage and concrete.
For pilots, this means choosing between “fast and close” and “further and slower.” In practice, the difference is this: 1000 Hz at 2.4 GHz is 0.8 ms of RF delay, while 50 Hz at 900 MHz is already 10-12 ms, but the range increases many times.
Advantages of ExpressLRS
Any new system lives or dies by user values, not numbers on data sheets. Below are the ones that pilots experience right away.
Long working range
In LoRa mode of 50 Hz and power of 250-500 mW, ELRS demonstrates a link budget of up to 140 dB. In practice, this is 20-30 km at 900 MHz or 10-15 km at 2.4 GHz with correctly selected antennas (panel/moxons). Anyone who has flown in difficult terrain will confirm: the battery capacity, not the link, becomes the limit.
Minimum signal delay
The RF part of the 1000 Hz mode fits into 0.8 ms. Add the radio OS delay (3 ms on EdgeTX) and FC processing, and we have <6 ms of the junction – ESC — almost instant response. Crossfire even in CRSFShot gives at least 10 ms.
Flexible telemetry modes
Starting from 3.3, the user chooses what is more important: frequent frames or rich telemetry. In “Race” channel packets are sent every frame, and telemetry – only after 1:128. In “Standard” – 1:32. In this case, the algorithm automatically increases the ratio if the LQ drops.
Fully open source and hardware compatible
The effect of openness is palpable: when RP2040 boards appeared, the patch for ELRS was ready within two weeks. Closed systems can wait months for their manufacturer to “officially add support.”
Save time on updates
A typical Crossfire RX upgrade via TBS Agent on a weak laptop takes 4-5 minutes. With Wi-Fi Update ELRS, everything is done from a smartphone in 40 seconds, and most pilots really keep the firmware “fresh.”
Remote VTX-Control (VTX Admin)
With one swipe in the Lua menu, you reduce the VTX power before landing so as not to heat up on the ground, and when taking off, you return 1 W for long-distance cruising. No “beep buttons” on the video transmitter.
Adaptive output power
The Dynamic Power function increases the glide only when the LQ drops below the threshold. In combat conditions, this is an additional 3-4 minutes of flight time – a trifle, but nice.
Easy integration with DJI FPV system
Thanks to the CRSF tunnel, ExpressLRS can transmit not only OSD but also combined RSSI and RQly information to DJI Goggles, which is convenient for pilots.
Specifications and compatibility
The ELRS frame contains:
- Frame ID (anti-replay).
- CRC16 for integrity control.
- 12-16 control channels (10- or 11-bit).
- Telemetry slot (up to 32 bytes).
FC-RX transmission is via CRSF-Uart at 420 kbit/s, so compatibility with Betaflight, INAV, ArduPilot is practically “out of the box”. Interestingly, since 2025, an “SBUS-bridge” mode has appeared: RX converts channels to SBUS, giving life to old controllers where there is no CRSF.
For combat drones, weight is important: the Nano RX weighs 0.6 g with the antenna, while the Crossfire Nano weighs 3.2 g.
Lua script for controlling the ELRS module
You can configure it from a PC, but in the field it’s easier to turn the dial on the radio.
Before opening the menu, the script checks the compatibility of Lua-API and module versions — reducing the risk of the transmitter freezing at startup.
Downloading and installing the script
The official way is this: download ELRS-v3.lua from the release, copy it to the SD card and add it to TOOLS. Then, an arbitrary key combination calls up the menu. Over the past five years, the script has become almost the main argument “why I will stay on EdgeTX” — on other firmwares, support for color screens is slightly worse.
Main functions and script menus
In addition to Bind/Power, here you can:
- Enable or disable Telemetry.
- Toggle “Home Point GPS” (with ArduPilot).
- Download RX configuration files directly from the radio via Wi-Fi (if the phone is in the “access point”).
Monitoring packages and module status
The Status page shows the RF Noise Floor. When it is higher than -90 dBm, Lua highlights the value in red: a hint that you should change the channel or move away from the 2.4 GHz Wi-Fi router.
How to properly configure rate and telemetry
There are a lot of shills here, so we will give a recommendation that worked 90% of the time in our case.
After selecting a mode, always shut down and restart TX — otherwise the frame rate change will not be applied.
Firmware and receiver updates
Before you upload the .bin, make sure that TX is already updated to the same major version. Otherwise, the model will not start, and you will have to get out the soldering iron.
Why is an update even necessary?
ELRS is a “live” project. In 2025 alone, hundreds of issues were closed, including critical ones (stack-overflow at 1000 Hz). If you are a movie fan and cannot afford packet-loss, you should update immediately after the stable release.
Betaflight pass-through – how it works and when to use
The method is ideal for “stacked” toothpicks, where RX is soldered. Configurator opens the controller’s COM port, then “Serial Passthrough” — and RX receives its firmware without additional wires. Disadvantage: speed is 115,200, so large firmware (250 KB) is loaded in three minutes.
Wi-Fi update for ESP chips
This is a killer feature. We held Bind >for 3 seconds — RX entered the Wi-Fi AP. We connected with a smartphone, opened 10.0.0.1, selected the bin file. The progress page will show “Success”. Next — reboot and auto-transition to normal-mode.
UART and STLink – options for complex cases
Situation: you destroyed the Bootloader with an electric current. STLink will help here – solder SWDIO, SWCLK, RESET, GND, set Option Bytes “Read Out Protection = OFF” in the STM32Cube programmer, then upload the fresh firmware.elf.
Tips for stability and firmware version selection
- Enable the “One Bit LQ” option only in tests – it saves 1 byte, but there is no difference in Telemetry Off.
- Forget about the Dev branch for working copters; nightly builds sometimes change the package structure without backward compatibility.
- Backup model.dump from the radio before major-update — the format changed in 3.0 – 3.1.
Comparing ExpressLRS with other protocols
In the field, Ukrainian reconnaissance brigades and FPV strike teams operate multiple communication systems simultaneously. The reason is simple: different protocols behave differently in noisy radio airspace under EW pressure. Before delving into the details of each competitor, let’s clarify the general context: command centers expect minimal latency for controlled kamikaze drones, but for reconnaissance copters, telemetry stability and the ability to quickly integrate equipment into existing software (ATAK, Delta, Kropyva) are critical.
Crossfire (CRSF) – advantages and disadvantages
The main advantage of Crossfire is a carefully polished hardware line, in particular Diversity RX with two receivers. Back in 2018, this was a revolution. The problem is that over the past eight years, market needs have increased, and the protocol has remained closed. No third-party manufacturer can legally make “their own Crossfire,” so the price remains high. According to the 2026 price list: Micro TX V2 — $130, DiversityRX — $80. The ELRS analog (TX Pro 1 W + Dual RX) will cost $70.
FrSky D8, D16, ACCESS – features and compatibility
FrSky has long been the king of the “budget” segment. The D8 and D16 use “long” CRC and simple FSK. In museums this is fine, but in a modern city 2.4 GHz Wi-Fi kills them in a few minutes. ACCESS is an attempt to update the protocol. The latency has decreased, an OTA update has appeared, but without LoRa and a frame rate of 200 Hz it is more likely to compete with the FlySky AFHDS 2A than with ELRS.
DSMX – reliability and safety
Spektrum has always been marketed as “military-grade quality.” Indeed, film crews in the US still fly DSMX to avoid Wi-Fi interference. But the cost of the kit (TX + 3 RX) easily exceeds $500, and the 22 ms latency ExpressLRS (ELRS) for FPV: A Complete Review, Setup, and Comparison with Crossfire and Other Protocols | Drongrif Blog makes the protocol unpopular in modern FPV, especially in our realities.
Comparison table
| Protocol | Range (LoS) | Delay (min.) | Telemetry | Compatibility (FC/Software) | Average RX price, $ |
|---|---|---|---|---|---|
| ExpressLRS | 10-30 km (2.4/900 MHz) | 0.8 ms 1000 Hz | Full (GPS, battery, RQly) | Betaflight, ArduPilot, PX4, ATAK via Mavlink | 15 |
| Crossfire | 15-50 km (900 MHz) | 6-7 ms 150 Hz | Full but closed | Betaflight, ArduPilot, Delta (Agent plugin) | 60 |
| FrSky ACCESS | ≤5 km | 4-5 ms | Limited (S.Port) | Mostly Betaflight, partly ArduPilot | 25 |
| DSMX | ≤4 km | 22 ms | Basic (RSSI) | INAV/ArduPilot via SBUS | 45 |
Practical recommendations for choosing a protocol
The needs of the Armed Forces, the Armed Forces, and volunteer groups often differ from those of civilians. The cost of equipment, durability in an EW environment, and the speed of operator training become key factors.
First, consider logistics: ELRS is an open protocol, so receivers are easy to buy in bulk or even assemble in workshops based on the RP2040. Crossfire and DSMX remain expensive and require centralized supplies.
Secondly, latency is critical for combat FPV drones, as the operator makes decisions in fractions of a second. The ExpressLRS system at 2.4 GHz in the 500-1000 Hz mode shows the lowest latency and at the same time can work with “1:64” telemetry enabled so that the base station receives at least RSSI.
Third, range with minimal visibility in the spectrum is more important for reconnaissance platforms. The transition to 868/915 MHz ELRS with a reduced frame rate of 50 Hz provides up to 30 km without retransmission, and open source allows you to quickly implement frequency hopping layout for a specific sector of the front.
Finally, the EW risks should be assessed. Closed protocols (Crossfire, DSMX) are theoretically more difficult to jam “by protocol”, but targeted blocking of the 900 MHz band blocks them too. At the same time, ExpressLRS is an opportunity to quickly generate a “custom build” with a non-standard bandwidth-shift, which is already used by some air reconnaissance units.
Below are some general tips; each list is followed by a short comment to emphasize context.
Kamikaze FPV attack aircraft
First, determine the radius of action. If the attack is planned within 3 km, the protocol should be chosen based on latency, not range.
- ExpressLRS 2.4 GHz, 1000 Hz, Telemetry Off, power 250 mW.
- An aluminum “mast antenna” on the ground and a hyperbolic repeater increase the stability of the link.
- Use a “unit-specific” Bind Phrase to reduce the risk of third-party connections.
After integration, be sure to bench-test with the EW pulse antenna; this will reveal how quickly the system recovers after a short jamming.
Reconnaissance multicopters
For UAVs hovering 10-15 km from the aircraft, the power consumption of the communication system is important.
- ExpressLRS 868 MHz, 50 Hz, Dynamic Power On (25-500 mW).
- Telemetry ratio 1:8: GPS, battery, link stats.
- Antenna diversity on RX gives +4-6 dB and increases survivability when rotating in gusts of wind.
Finish by calibrating the telemetry in Mission Planner so that the operator sees RQly/RSNR in the conditional green/yellow zones.
Camouflaged “ants” (ground robotic platforms)
Ground robots often work in complex, multi-story environments—tunnels, factories, forest belts.
- Crossfire remains competitive thanks to 915 MHz FLRC and diversity receivers.
- However, the ExpressLRS 900 MHz with Moxon antennas shows comparable results, costs three times less and is easier to reflash in the field.
After choosing a protocol, test the connection in “reflected” environments: concrete + metal. This is more indicative than the bare range at the range.
Common errors and tips for users
Mistakes happen even among professionals, because we are all human.
- Wi-Fi Mode during takeoff. Make sure the LED on the RX is not blinking rapidly – this is a sign of AP mode.
- Incompatible versions. TX v3.5 will not appear on RX v2.0.
- Wrong region. Select 868 MHz for Europe region. Otherwise you will get underpowered 25 mW.
- Cropped antennas. Some pilots shorten the length of the “tail” to avoid getting caught in the propellers. The result is a 15 dB drop in RSSI.
To avoid all four, print out the checklist and keep it in your suitcase. In a month, it will become automatic.
Conclusion
Five years has been enough time for ExpressLRS to go from an “experimental proof of concept” to the de facto standard for the average FPV pilot. Low latency, open core, and Wi-Fi updates are the three pillars that keep the project going. Crossfire is still strong on 30km routes, and DSMX is still strong in Cinema, but if you’re building a new fleet now, you’re unlikely to choose anything other than ELRS.
So, to the question “What is ELRS?” everyone will answer in their own way. For some it is speed, for some it is economy, and for some it is the open-source philosophy. Choose and test. Only flights will show whether the system is right for you.
Frequently asked questions
-
What is ExpressLRS in simple words?
ELRS is a wireless “cord” that connects your joints to the drone faster than you can blink an eye.
-
How many channels does ELRS support?
Standard is 12. Extended mode adds 4 more for ArduPilot loops, but costs 0.5 ms of latency.
-
How to update the receiver via Wi-Fi or UART?
Wi-Fi: press Bind for 3 seconds, open 10.0.0.1, fill in .bin. UART: Betaflight – CLI – serialpassthrough 1 115200, then in the Configurator select the COM port and press “Flash”.