ExpressLRS is an open-source RC system that has gained popularity due to its affordability, ultra-low latency, and long-range capabilities. However, setting up ExpressLRS can be quite a daunting task for beginners. That’s why in this tutorial, we will guide you through the process of flashing and setting up ExpressLRS 2.4GHz transmitter module and receiver on OpenTX/EdgeTX radio and Betaflight.
New to ExpressLRS? This article explains the advantages of ExpressLRS over other radio control systems and why I prefer to use 2.4GHz than 900MHz.
ExpressLRS 2.4GHz Hardware Selection
All transmitters and receivers with ExpressLRS firmware are compatible regardless the brand.
Radios with Built-in ELRS
Getting a radio with ExpressLRS built-in means you can enjoy this great radio control link without the need for an additional module. It simplifies the setup process and reduces the cost of upgrading your radio system. Some radios with internal modules only go up to 150-250mW, while some may go up to 1W.
|Lite Radio 3||T-Pro||T-Lite V2|
If you have a radio without built-in ExpressLRS, you will need to purchase an ExpressLRS transmitter module in order to use the system. Your radio must have a compatible module bay to install this module to.
Choosing a transmitter module might seem daunting due to the abundance of options available. However, most of them are based on the same open source design by ExpressLRS. The main differences lie in the build quality, features such as screen, maximum output power, and cooling. Opt for one of the reputable brand featured below.
The transmitter module fits into the external JR module bay. Smaller radios might have lite module bay, you will need to get the right size module.
|Full Size Module (JR)|
|Happymodel ESTX24 Pro TX||BetaFPV ELRS Micro TX||Radiomaster Ranger|
Other full size module options:
- Radiomaster Ranger Micro: https://oscarliang.com/product-y4th
- AxisFlying Thor: https://oscarliang.com/product-j7yn
- HGLRC Hermes: https://oscarliang.com/product-jssq
- HiYOUNGER ELRS 2.4GHz: https://oscarliang.com/product-58mr
- Namimno Flash: https://oscarliang.com/product-ie8s
- Happymodel ES24TX: https://oscarliang.com/product-a3r9
|Happymodel ESTX24-Lite TX||Radiomaster Ranger Nano||Jumper AION|
Other Lite module options:
- BetaFPV ELRS Nano TX: https://oscarliang.com/product-c635
- FrSky VANTAC: https://oscarliang.com/product-50wh
- Happymodel ES24TX Slim Pro: https://oscarliang.com/product-xi1z
TX Antenna Upgrades
Stock antennas often have lower gains as they are designed for general use, and their build quality is not always the best. To increase your range, consider upgrading to an aftermarket antenna with better quality and higher gain. With a wide range of sizes and shapes, you can find one that suits your needs and environment.
|HappyModel Moxon (4.2dB)||Namimno Black Pearl Loop (2.8dB)||BetaFPV Moxon (5.6dB)|
|VAS Diamond (2.8dB)||TrueRC True-MOX (2.1dB)||Turbowing Fishbone (7.5dB)|
All ExpressLRS receivers and transmitter modules are cross-compatible, regardless of brand, since they are based on the same open source design. The main differences are build quality, size, and WiFi support for firmware updates and configuration. Lastly, consider the type of antenna that comes with the receiver, as some have a built-in antenna which is more compact, while others come with a U.FL connector for an external antenna which normally provide better range.
When it comes to hardware, consider receivers with “PA” and “LNA” for better range performance. Look for receivers with “TCXO” as they offer a more stable link.
PA (Power Amplifier) and LNA (Low-Noise Amplifier) are components that improve the performance of the receiver. The PA provides a more solid telemetry link for long-range flying, while the LNA significantly increases the sensitivity of the receiver and gives you better range.
TCXO (Temperature Compensated Crystal Oscillator) is a type of oscillator that provides a far more stable frequency with a much wider temperature range. This is important because when components heat up or cool down, it can cause frequency shift in the oscillator, and if that frequency shift is outside of a certain margin, your receiver will lose connection with the transmitter. So, having a receiver with a TCXO will ensure optimal performance and reliability.
|Radiomaster RP1||Radiomaster RP2||x|
|BetaFPV Nano RX||BetaFPV Lite RX||Flywoo EL24E/P RX|
|Happymodel EP1||Happymodel EP2||Happymodel PP|
Diversity offers better range and signal strength. There are two types of diversity receivers. “Antenna Diversity” uses a single radio chip connected to 2 antennas, while “True Diversity” uses 2 independent RF chips, each with its own antenna. True Diversity is more expensive than Antenna Diversity, but makes more effective use of the dual-antenna setups therefore provides better performance. More info on Diversity Receivers.
|BetaFPV SuperD||Radiomaster RP3||x|
|Skystars ELRS Diversity||MATEKSYS ELRS R24 D Diversity||HM EP1 Dual|
|Radiomaster ER5A/ER5C||Matek R24-P||BetaFPV PWM Micro|
Other receiver options:
- HGLRC Hermes: https://s.click.aliexpress.com/e/_DnBCRbn
- JHEMCU RX24T (has PA/LNA amplifier capable of transmitting telemetry data with 100mW, good for long range): https://oscarliang.com/product-x2xp
- JHEMCU SP24S (almost identical to EP1): https://oscarliang.com/product-srb0
- AxisFlying ELRS Receiver: https://oscarliang.com/product-jaxm
RX Antenna Replacement
- BetaFPV Dipole T Antenna: https://oscarliang.com/product-o5vm
- Radiomaster T Antenna: https://oscarliang.com/product-r4t0
Is It Necessary to Update ExpressLRS Firmware?
You don’t have to but you should.
With each update, the open-source project provides bug fixes and performance enhancements, ensuring optimal functionality.
ELRS firmware version uses a three-part number system: A.B.C
- A: major version number
- B: minor version number
- C: patch number
All releases with the same major version number are cross-compatible, but not with different major versions. For instance, 2.0 will work with 2.1, 2.2, 2.5 etc, but 2.x firmware won’t bind with 3.x.
If you have OpenTX on your radio, consider flashing EdgeTX. EdgeTX is a newer, more cutting-edge fork of OpenTX with frequent updates and many additional features. Plus, it offers specific benefits for use with ExpressLRS, such as 500Hz gimbal polling. Check out our guide for flashing EdgeTX to your radio.
If want to continue to use OpenTX, make sure you update to 2.3.12 or newer before attempting to flash ELRS firmware to your transmitter module (the new versions support CRSFShot which is essential for ELRS to work). Our step-by-step guide for flashing OpenTX can help you get started.
How to check whether you have OpenTX or EdgeTX on the radio? Press the “SYS” button, then press the PAGE button until you are on the last page “VERSION”, and you can see the firmware and version there.
Download ExpressLRS Configurator
ExpressLRS Configurator allows you to build, compile and flash firmware for the ExpressLRS receivers and transmitter module.
For Windows, click the link with this name: ExpressLRS-Configurator-Setup-X.X.X.exe
Your computer must be connected to the internet while using the Configurator.
Install LUA Script
A LUA script is a mini program on the radio. The ExpressLRS LUA script allows you to change radio link settings, enter binding mode, enable WiFi etc.
If your radio has the latest version of EdgeTX installed, it should already come with ExpressLRS LUA script and you don’t need to do anything.
You can find and open the LUA script by pressing the SYS button, and select “ExpressLRS”.
If the LUA script is not there, you can download it in the ExpressLRS Configurator by selecting the latest release version and any target, and the “Download LUA Script” button will appear.
The downloaded file should have “.lua” file extension, put that file in this directory on your radio’s SD card: \SCRIPTS\TOOLS\
Identify Hardware and Firmware Version
There are many manufacturers making receivers and transmitter modules for ExpressLRS. You need to know the brand and model of the hardware in order to flash the correct firmware. Flashing the wrong firmware will fail the process, it might even brick your device.
The easiest way to check is by going to the WiFi webpage. Here’s how to do it.
Firstly, enable WiFi on your device by going to the ExpressLRS LUA script, select WiFi Connectivity.
Then enable WiFi on the desired device.
For receivers, you can also just wait 60 seconds without turning on your transmitter, and it will go into WiFi mode automatically.
On your laptop, you should see a WiFi network called ExpressLRS TX (or ExpressLRS RX). Connect to this network, the password is expresslrs.
Open the browser, and type 10.0.0.1 in the address bar, it will open up a website which will tell you which firmware target it’s using. You can also check the firmware version here.
If you previously setup the device to join your home WiFi network, then you won’t see this WiFi network. Instead, stay connected to your home WiFi, and enter http://elrs_rx.local/ or http://elrs_tx.local/ in the browser address bar.
Alternatively, for ELRS transmitter modules, you can also find the maker, model and firmware version in the LUA script (at the top and bottom of the page). For receivers, go to “Other Devices” in the LUA script, and click on the receiver, firmware version should be displayed there (only works since V3).
Compile and Flash TX Firmware
You can flash the TX module using one of these methods:
I found WiFi to be the easier and more reliable method, I will demonstrate how to do it here. You can also use USB which I will explain shortly later.
Building ELRS TX Firmware
Before flashing, you need to compile the firmware first using the ExpressLRS Configurator.
Under Releases, choose the latest firmware.
Under Device Target, select the brand, and device. In this example, I have the BetaFPV Micro 1W TX, so the Target Device selections would be:
- Device Category: BetaFPV 2.4 GHz
- Device: BetaFPV 2400 TX Micro 1000mW
Let me explain what some of the settings mean.
Regulatory Domains – depending on where you are, the second option “EU_CE” is for people in the EU, this is also known as LBT. Anywhere else you can select the first option “ISM”, also known as FCC.
What’s FCC and LBT and how does it affect performance?
FCC (Federal Communications Commission) and LBT (Listen Before Talk) are regulatory standards for radio systems. FCC is globally accepted, while LBT is specific to Europe and requires a radio to check for other transmissions before transmitting itself. While FCC generally allows for consistent power output, LBT may reduce output power due to its “listen” requirement, potentially affecting performance.
Binding Phrase – it’s like the key to your car, be creative and make a unique phrase, so people you fly with don’t accidentally use the same phrase and cause problems. Note that other people CAN control your drone if they use the same binding phrase.
Network => Auto WiFi On Interval: how many seconds it turns on WiFi mode if no radio link is established. Default is 60 but I personally prefer to set it to 20. If the receiver goes into WiFi mode you just need to unplug LiPo and plug in again.
Network => HOME_WIFI: See here for more detail.
The Configurator remembers your choices, so you don’t need to select them again the next time.
Flash TX Firmware via WiFI
Once you are happy with the firmware options, select WiFi under Flashing method.
Click the BUILD button (NOT Build and Flash) to compile the firmware. It can take a few mins depending on your internet speed.
When it’s done, a windows should pop up containing the firmware file, named “firmware.bin“.
Plug in the TX module to your radio module bay and power on radio.
On your radio, setup a new model profile, in Model Setup, under External RF, select CRSF in Mode. If your module is an internal module (i.e. built into the radio), then you need to select CRSF under Internal RF.
Open the LUA script by pressing the SYS button, under Tools, select ExpressLRS.
Select “WiFi Connectivity“.
Select “Enable WiFi” and leave the radio powered on.
Go to your computer’s WiFi, you should find a new network called “ExpressLRS TX Module“. The WiFi password is: expresslrs
Open browser and go to 10.0.0.1
Click “Choose File” and select “firmware.bin” generated from the ExpressLRS Configurator earlier.
Click Update. That’s it!
Flash TX Firmware via UART/USB
You can use the USB port on the TX module to flash firmware.
You might need to install CP210x Driver (Download: https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers). I tried standard windows driver as it comes with an installer, version 6.7.6 seems to work fine.
This process will work for almost any ExpressLRS transmit module. On some newer modules, you can just plug in the USB cable and it will flash straight away. However some older modules have dip switches, you need to put them in the right position in order to flash. Consult the manual if you see those switches. For example the BetaFPV Micro TX module has those dip switches.
Plug in the USB cable to the TX module, a new COM port should appear on your computer.
In the ExpressLRS Configurator, under Flashing method, select UART. When you are ready, click the BUILD and FLASH button (not Build). The flashing will take a few minutes.
Connect ELRS Receiver to FC
Here’s the pin-out of the PP, EP1 and EP2 receivers.
Connect TX and RX pins to any spare UART on your flight controller. DO NOT use soft-serial because it’s too slow.
Connect TX to RX, and RX to TX.
Build and Flash RX Firmware
For receivers with WiFi built-in, you can flash firmware via WiFi, just like flashing the TX. But personally I found using Betaflight Passthrough easier for flashing RX, and I will demonstrate it here.
Open ExpressLRS Configurator, select the same firmware version as your TX module and choose the device target based on the brand and receiver type. For example:
- For PP receiver, the Device is: HappyModel PP 2400 RX
- For EP1 and EP2 receivers, the Device is: HappyModel EP 2400 RX
Make sure to set the binding phrase as your TX, your RX will just bind with the TX automatically after flashing firmware. If you don’t set a binding phrase, you can bind it manually as described here.
Flash RX Firmware via Betaflight Passthrough
Before proceeding, make sure to configure Betaflight first as described in this section.
Now connect the USB cable to your quad to power the FC and RX.
In ExpressLRS Configurator, choose the COM port of the FC (if not sure, check the COM port in Betaflight Configurator, but remember to disconnect/close it afterwards).
Hit BUILD & FLASH. It will take a few minutes.
Flash RX Firmware via WiFi
Basically the steps are the same as flashing the TX module via WiFi. Some receivers don’t have WiFi capability, so make sure you check before proceeding.
In the ExpressLRS Configurator, hit the BUILD button to compile the firmware.bin file.
By default, if you power the receiver without turning on the radio, after 60 seconds it will enter WiFi mode (LED will be flashing rapidly to indicate that). The RX’s WiFi signal is fairly weak so place the RX close to the WiFi antenna to your computer.
Connect to the WiFi network “ExpressLRS RX“. The WiFi password is: expresslrs
Go to 10.0.0.1 in your browser, and upload the firmware file.
Flash RX Firmware via UART
In the rare event, if neither of the above methods work, you can try UART flashing as described here.
Flashing RX via FDTI
If for whatever reason you bricked your RX, which could happen if you lost power or connection during flashing, you can bring it back by flashing via FDTI: https://www.expresslrs.org/2.0/quick-start/receivers/hmep2400/#flashing-via-ftdi.
Flashing SPI ExpressLRS Receiver
Some whoop flight controllers have ELRS receiver integrated on the same board, and it normally uses SPI connection instead of an UART connection. A good example would be the Happymodel X12 AIO 5in1 FC in the Mobula7 ELRS Edition.
The good thing is that you don’t need to worry about wiring as the receiver is just part of the flight controller.
But flashing the receiver is a bit tricky. In order to update the RX firmware, you have to flash the latest Betaflight firmware, because ExpressLRS firmware is embedded in the Betaflight firmware for that flight controller. All the build options (such as domain, switch mode etc) are in Betaflight CLI (type “get expresslrs” will list them all).
To check if you have a SPI ELRS receiver, simply go to Betaflight Configurator, Receiver tab, and see if it’s set to SPI RX / ExpressLRS.
There are 3 ways to bind your receivers to a transmitter as explained in this tutorial: https://oscarliang.com/bind-expresslrs-receivers/
ExpressLRS transmitter and receiver can be bound using bind phrase, which you can set when compiling the firmware for your devices, or you can enter this in the Web UI. Both receiver and transmitter must have the same binding phrase to work.
When the receiver first powers up, it looks for the transmitter with the matching binding phrase. Once the connection is established it will get synced up, and another device won’t be able to connect to it.
However if someone else uses the same bind phrase on their radio and has a stronger signal than you, it’s possible your receiver will bind to theirs first, and they can take control of your quad. This would be an extremely rare scenario and even if someone wants to do this on purpose it would be very hard to pull off, still, it’s best if you keep your bind phrase a secret and as unique as possible.
You can also bind a transmitter and receiver manually by putting them in Bind Mode. But this will only work if the receiver doesn’t have a bind phrase set.
Receiver LED Status Indicator
Monochrome LED meaning:
- Solid LED means bind successfully or connection established
- Double-flash means it’s in bind mode
- Flash slowly means waiting for TX module connection
- Flash fast means it’s in WIFI hotspot mode, you can connect to the RX’s WiFi network to upgrade RX firmware by visiting 10.0.0.1 in your browser (password: expresslrs)
- Triple blink then pause – Model Mismatch (make sure Model Match is either disabled on both TX/RX, or the ID are the same at both ends)
Color RGB LED meaning:
- Rainbow fade effect: Starting up
- Green heartbeat: Web update mode enabled
- Slow blink: Waiting for connection from transmitter
- Red rapid flashing: Radio chip not detected
- Orange double blink then pause: Binding mode enabled
- Orange triple blink then pause: Connected to transmitter, but mismatched model-match configuration
- Solid single color: Connected to a transmitter, color indicates packet rate and mode
Betaflight Setup for ExpressLRS Receiver
To setup ExpressLRS RX’s:
Go to the “Ports” tab in the Betaflight configurator, and enable “Serial RX” for the UART you’ve connected the ELRS receiver to. Press “Save”.
In the Receiver tab, under the “Receiver” Section, select “Serial (via UART)“ as the Receiver Mode, and select “CRSF” in Serial Receiver Provider. Enable “Telemetry”, and click the “Save” button.
Your RX should be working now.
To verify, go back to the “Receiver” tab, you should see response from stick movement. If the channels are in the wrong order, just try a different “Channel Map”.
Check if the end points (1000 or lightly lower / 2000 or lightly higher) and mid points (1500) are correct, see this guide on how to adjust if they aren’t correct.
To make sure Telemetry is working, go to the Telemetry page in the radio, and select the option “Delete all sensors“, then “Discover new sensors”.
Asterisk flashing means telemetry is updating.
In the Modes tab, you MUST set AUX 1 as your arm switch (AUX1 is always a 2-position switch, designed specifically for arming in ExpressLRS).
Display LQ and RSSI in OSD
Further Reading: What are LQ and RSSI?
In a nutshell:
- RSSI – Signal strength, how loud the signal is (value from -130dBm to 0dBm)
- LQ – Link Quality, how well your receiver can understand the signal (value from 100% to 0%)
Both indicators are useful, but if you have to pick one, LQ is probably more important.
To display LQ properly you should use the latest version of Betaflight (4.2 or newer), where they introduced a new RFMD:LQ% format for the LQ OSD element.
- In the Receiver tab, Disable RSSI_ADC, set RSSI Channel to Disable
- In the OSD tab, enable Link Quality and RSSI in dBm
It’s useful to have both measurements. For example:
- High LQ, high RSSI = healthy radio link
- Low LQ, high RSSI = noisy RF environment
- High LQ, low RSSI = If you are very far away, caution is needed as you are approaching the end of range; If the receiver is very close to the transmitter, that can be an indicator of antenna problem
- Low LQ, low RSSI = the end of range, you should turn back as failsafe is likely to happen
Mounting Your Antenna
My recommendation is to mount your RX antenna vertically if possible. You can also mount it horizontally if you only fly short range. See this post for more detail.
Digital RC protocols typically contains a failsafe flag in the data packet that the flight controller can detect automatically, so there’s no need for manual setup on the radio. However, it’s crucial to review the Failsafe tab in Betaflight and determine what action the drone should take in the event of a failsafe.
To ensure failsafe is working properly, conduct a bench test. Remove all propellers, plug in the battery, arm the quad, and turn off the radio. The default failsafe settings in Betaflight should stop all motors from spinning within a couple of seconds. Be prepared to unplug the battery in case of any issues.
ELRS LUA Script Settings
There are 3 main settings you should know in ExpressLRS Lua script: Packet Rate), Telem Ratio (telemetry ratio) and TX Power.
Most modules support at least 250mW, some are even capable of up to 1W. Tests have shown that 100mW can achieve a range of 33km with stock 2.4GHz gear, which can outperform a 5.8GHz video link. However, higher power consumption can significantly reduce radio battery life, and increase the risk of overheating without proper cooling. Turning on the fan is recommended when using an output power higher than 250mW (set fan threshold to 250mW).
By enabling the option Dynamic Power, it allows the system to automatically adjust output power based on signal strength. Dynamic Power uses SNR (signal to noise ratio) instead of RSSI to determine power as RSSI doesn’t factor in the noise floor or if the receiver has an amplifier. This can potentially save battery life as it will lower the power when the receiver is close by, it only increases power when it’s needed. If you have Dynamic Power on, MAX Power will be the upper limit.
The appropriate power level for your FPV drone depends on the desired packet rate and range. Running ExpressLRS at 50Hz can provide extraordinary range, even at 100mW. However, if you plan to use a higher packet rate, like 500Hz, your range will be significantly reduced, and you may need more output power to maintain the same range. Familiarize yourself with dB and you can perform calculations using receiver sensitivity and output power to determine the range difference between various packet rates and power levels, this will help you make a decision. 250mW should be enough for most people flying within a couple of miles of range even at 500Hz, but of course higher power will give you better signal penetration too, not just range. Regardless the power, if you want the most reliable link or want to fly long range, it’s generally advisable to stick to a lower packet rate such as 50Hz as it offers higher signal sensitivity.
Packet rate is a compromise of range and latency, you just can’t have both. Higher packet rate has lower latency, but less range.
In ELRS V3, the packet rate modes available are:
- 500Hz, 250Hz, 150Hz, 50Hz – This is normal mode, using LoRa modulation which has longer range and better resistance to RF interference
- F1000, F500 – This is F mode, or FLRC, it offers faster modulation and lower latency, but shorter range than the normal mode. It supports 500Hz and 1000Hz. Great for racers. The F1000 mode has the lowest latency. It’s not about “feel”, I doubt most people can even tell the difference between 150Hz and 500Hz, but sending your command even just 1ms faster means you could react 1ms sooner which is crucial when reacting to critical situations like racing and might help you to avoid a crash
- D500, D250 – This is D mode, or DVDA (Deja Vu Diversity Aid), provides better link connection in complex interference environment by sending the same data packet multiple times to reduce the chance of data loss. D500 and D250 indicate that the same data packet is sent twice and four times respectively. D mode keeps your LQ high and prevent chance of jitter at the cost of slightly higher latency. Great for racing. It works at the FLRC mode (F1000) therefore range will be less than normal mode
- 333Hz Full, 100Hz Full – up to 16 full resolution (10-bit) channels in 100Hz and 333Hz packet rates
FLRC at 1000Hz is the best mode for racing, since it has the lowest latency. LoRa modes (normal mode) have the best range. Slower update rates have higher latency, but longer range. FLRC D modes have reduced jitter, but higher latency than FLRC F modes. Note that 500Hz or higher update rates are not available in some radios, for example the Tango 2 only supports up to 250Hz.
Telemetry is a feature commonly available in radio links. It allows the receiver to send data back to the radio, such as battery voltage, signal link quality, RSSI, GPS coordinates and so on.
Telemetry is enabled by default in ExpressLRS, it sends radio link related data like RSSI and LQ back to the radio. If you intent to use Telemetry to send info about your drone back to the transmitter, such as battery voltage, you have to enable “Telemetry” feature in Betaflight’s Receive tab.
Telemetry Ratio in ExpressLRS settings is how often telemetry data get sent. A larger number means slower telemetry update, e.g. 1:8 means telemetry data is sent every 8 frames, while 1:128 is every 128 frames (e.g. 1:8 is more frequent update than 1:128).
More frequent telemetry will increase latency to the control link, so you can choose to lower telemetry rate or even disable it entirely in the LUA script if you want more consistent packet rate. But I recommend having telemetry if you fly long range.
If you get “Telemetry lost” warnings while your link quality is still looking good, it could be that your telemetry rate is set too low. Try increasing Telem Ratio one step at a time until the “Telemetry Lost” warning disappears.
How many channels does ELRS support? 9 to16 channels depending on packet rate and switch mode.
- At 500Hz or 1000Hz, in Hybrid or Wide switch mode, you get 12 channels.
- At 100Hz or 333Hz, in Full Res 16CH, you get 16 channels.
The first 4 channels are for your sticks – roll, pitch, throttle and yaw. These channels are 10-bit full resolution and their commands are sent every transmission.
The rest of the channels are AUX channels, typically used for switches on a radio.
The resolution the channels are determined by the option called “Switch Mode”. Higher resolution channels result in higher latency.
The first AUX channel, AUX1 (channel 5) is designed to be used for the arming switch, and it’s always a 2-position channel (when OFF it sends 1000, when ON it sends 2000) regardless switch mode (with the exception of Full Res 16ch Rate/2).
The Switch Mode setting controls how the channels AUX1-AUX8 (channel 5 to 12) are sent to the receiver (the first 4 main channels are always 10-bit). The options are Hybrid & Wide.
With Hybrid mode, most of your channels will only be 2- or 3-position, this is done for less latency.
The “Wide” option makes your channels 64- or 128-position which is more than enough for most things we want to do, and that’s what I generally recommend to use for FPV drones.
Gemini Mode (Antenna Mode)
Starting with ExpressLRS 3.3, a new antenna mode known as “Gemini” has been introduced. This mode is designed to enhance the stability of data transmission and reception by simultaneously using two different antennas and frequencies to transmit and receive a single packet of data.
Learn more about how Gemini mode work in this article: https://oscarliang.com/expresslrs-gemini/
However, it’s important to note that using Gemini mode may lead to increased battery consumption in the radio.
To effectively use Gemini mode, you need both a transmitter and a receiver that are compatible with Gemini or True Diversity mode. Additionally, ensure that both devices are updated to ExpressLRS version 3.3 or later. To activate Gemini mode, follow these steps:
- Start the ExpressLRS Lua script on your radio.
- Set the “Antenna Mode” to “Gemini”.
- Select the receiver you are binding with from the “Other Device” menu.
- Set the “Rx Mode” to “Gemini”.
The first transmitter module that supports Gemini is the BetaFPV SuperG Nano Transmitter Module: https://oscarliang.com/betafpv-superg-nano-transmitter-module/
Antenna Mode Options
|Transmitter Antenna Mode||Description|
|ANT1/ANT2||Utilizes only one of the two antennas for communication.|
|Switch||Alternates communication between two antennas.|
|Gemini||Activates Gemini mode for simultaneous use of two antennas on different frequencies.|
Additional Receiver Settings
There are more settings when you connect to the receiver via WiFi (on the page where you flash RX firmware).
First, power on the receiver and wait until it goes into WiFi hotspot mode. It does it automatically after being powered for 60 seconds by default (LED flashing rapidly when it’s in WiFi mode). Or you can also force the receiver to go into WiFi mode in the radio’s LUA script.
Now, connect to the WiFi network (the WiFi password is: expresslrs). In your browser, go to 10.0.0.1
On this page, scroll down and you will find the additional settings like Model Match. For PWM receivers, you will also have settings like PWM Output and Failsafe Positions for each channel, and the option to invert the channel outputs. These setting are not yet available in the LUA script.
Performance Enhancement Settings
In Betaflight, you should apply the suitable RC_Link preset for the particular packat rate you are using. Failure to do so will result in problems with feedforward.
Adding Home WiFi Network
It makes it much easier to flash firmware when you setup “Home WiFi Network” in ExpressLRS. When you put your ELRS transmitter module or receiver in WiFi mode, it will connect automatically to your home WiFi network, then you would be able to flash firmware on a browser from your computer. Easy!
To set it up, you first need to flash your TX module and RX with “HOME_WIFI_SSID” and “HOME_WIFI_PASSWORD”. These are your home WiFi network name and password. Even if you are already on the latest firmware, you have to re-flash to let your transmitter module and receiver know your network login for this to work.
Once that’s done, you can turn on WiFi mode. You can do this in the LUA script.
Open ExpressLRS Configurator, and it will automatically detect your ELRS device. Click on DNS (elrs_tx.local or elrs_rx.local), or the IP address (192.168.0.XXX), if it doesn’t work just try the other, one of them should work.
This will bring you to the page to upload the firmware, same as flashing using the WiFi method we covered before.
How to Use Model Match
Model Match is a number you can assign to a receiver, this allows you to use a model profile on the radio to only control a particular receiver.
If you normally use one model profile to control all of your models (because they are all using the same type of radio receiver and setup the same way) instead of having individual profile for each model, you probably don’t want to use “model match”. But model match is useful for models the requires trims, for example for planes and wings.
To use model match in ExpressLRS, go to Model Setup on your radio, scroll down to Internal RF (or External RF if you are using an external ELRS module). In Receiver, set it to a unique Model ID (any number between 0 and 63, in this example, I will use 2).
Put your receiver in WiFi mode, go to the webpage configuration, Model, and enable Model Match. Set Model ID to the same number you entered in Model Setup on your radio.
Go to ExpressLRS LUA script, and enable Model Match.
Now your receiver can only talk to this particular model profile with Receiver ID 2. That’s it.
If you have a SPI receiver, or a receiver that doesn’t have WiFi capability, you can set Model ID in CLI. You can’t set the ID by just rebinding while model match is on, so i had to go to betaflight CLI and enter:
to show me its ID and i had to:
set expresslrs_model_id = "your ID number"
What’s ExpressLRS TX BackPack?
The TX Backpack is an optional feature within the ExpressLRS ecosystem. It enables wireless control of FPV-related devices directly from your radio transmitter. For instance, you can conveniently adjust the channel of your analog FPV goggles using the radio control.
To utilize TX Backpack, both the ExpressLRS transmitter and the device being controlled must be equipped with an ESP8285 chip. This chip, integral to the functionality, is what we refer to as the “TX Backpack.”
Tips for Long Range
- Set the highest legally possible transmit power
- Select a lower update rate, e.g. 50Hz will have better range than 500Hz at the same power
- Choose a true diversity receiver with PA and LNA capability
- Use high-quality antennas on your receiver, preferably half-wave dipole (T-shaped) ones. Avoid using ceramic antenna for long range
- Optimize antennas placement as explained here: https://oscarliang.com/antenna-positioning/
- Get a higher gain antenna for your transmitter
- Consider using 900Mhz instead of 2.4Ghz for ultimate long range. (2.4GHz is still very capable though)
- For more tips on long range check out my tutorial: https://oscarliang.com/long-range-fpv-flying-mini-quad/
Unable to use F1000 packet rate or prompts “Baud rate is too low”
F1000 requires a baud rate higher than 400K, and the radio transmitter’s baud rate is 400K by default.
First update the baud rate (greater than 400K) setting in the Hardware in Radio Setup menu, then restart the radio transmitter to ensure the baud rate setting has been applied. Then change the Packet rate.
If your radio don’t support higher baudrate then your can’t run F1000 mode.
When the F1000 is turned on, packet rate is less than 1000
This could be due to outdated EdgeTX version. You need to update to 2.8.0 or newer.
Same radio controlling multiple receivers simultaneously
What happens if you power up multiple drones that are all bound to the same radio?
You can control all of these drones at the same time, but telemetry won’t work properly as they all trying to send telemetry back to the radio and they will interfere with each other.
To avoid this from happening, you could use model match (each receiver would require an unique ID and a separate model profile). See “How to Use Model Match” in this guide for instructions how to set it up.
Why Does My Radio Keep Saying “Telemetry Lost”?
Occasionally, you might get a warning from your radio saying “Telemetry lost,” yet still retain full control and a perfectly fine video link. So, what’s the reason behind this?
Your ExpressLRS radio link is bi-directional, meaning your receiver is not only receiving signals but also transmitting them. While some transmitters in radios can output up to 1000mW, receivers typically have a much lower power output, usually around 25mW. Some newer receivers might reach up to 100mW, but this is still considerably lower than the transmitter.
A general rule of thumb is that 4 times the transmission power doubles the range. According to this, 1000mW would have 2.6 times the range of 25mW. To learn more about FPV range, check out this article: https://oscarliang.com/calculate-fpv-range
Given that the receiver has a much shorter range than the transmitter, when your transmitter isn’t receiving data from the receiver, you will hear the constant “telemetry lost” warning. It’s usually not an issue as long as you still maintain full control of the aircraft. It simply indicates that you’re not receiving telemetry data, which isn’t essential for maintaining a control link. However, be aware that your transmitter relies on telemetry for certain features, such as dynamic power. If telemetry is weak, your transmitter might unnecessarily use maximum power, even though less power might suffice for reaching the receiver.
If you want to eliminate this annoying warning, consider the following suggestions:
- Upgrade to a receiver with higher telemetry power (currently, the highest is 100mW).
- Turn off the telemetry warning in your radio’s settings.
- Set Telemetry Ratio to standard, or a lower ratio might help
Lua Script just keeps Loading, Can’t Enter
When your run the ExpressLRS LUA script and “loading…” appears on the screen and nothing else happens, make sure you have enabled Internal RF (or External RF if you are using an external module).
Make sure you have the latest version, if in doubt, flash your module again and download the latest LUA script.
The baud rate of the radio transmitter is set below 400K in radio setup, and it should be adjusted to a higher baudrate value. If there is no option to modify the baud rate, ensure that EdgeTX is at version V2.7.0 or newer.
“Bad Size Given” Error
V2 and V3 handles partition differently (as they moved towards unified target), so when you flash V3 firmware to your module with V2 firmware, the file size get messed up and you get “Bad Size Given” error.
The fix is to download “repartitioner.bin“, on WiFi page, upload this file instead of firmware file. It’s going to say target mismatch, select flash anyway.
Now flash the V3 firmware again, it should go through this time.
Receiver Update Warning: ”Not enough data uploaded!“
If you try to flash firmware of a different target, and force update, you will get this error “Not enough data uploaded”.
It’s a bug/feature in ELRS 2.5 that prevents target changing. If you still want to go ahead and flash a different target, you first need to revert the RX firmware back to 2.0 (on the original target), then flash the different target you wish.
LUA script only shows “Connecting…”
That’s an indication of the ExpressLRS TX module is not talking to the LUA script
Possible causes of the problem:
- TX Module is installed, or is installed incorrectly (pins in the module bay are not making proper contact or broken)
- Maybe the TX module is in WiFi update mode, restart the radio and try again
- Make sure you have set RF protocol to CRSF
- If you are running OpenTX, make sure the version is not too old (it has to be 2.3.12 or after)
How to Install Cooling Fan on Happymodel TX Module
There is no fan plug for the Happymodel 2.4GHZ TX module, you need to solder it directly. I found 3.3V and GND at this capacitor. Make sure you confirm voltage with a multimeter before connecting to avoid damaging the board.
I am using a 20x20x6mm 5v fan which fits perfectly in their new module cover. The fan can be bought on Amazon (affiliate link): https://amzn.to/3ixZpE0. The fan should act as an exhaust and take the hot air out, not blowing onto the PCB to avoid dust building up inside the module. Current draw is quite low so that shouldn’t be an issue. At 5V, 0.05A.
Inconsistent Packet Rate – CRSFShot Not Working
In the ELRS lua script top bar, there is an indicator (e.g. 0:200) which tells you how many packets per second it’s getting from the radio. You can use it to confirm the consistency of the RC link.
Ideally it should always show a stable number that is the same as the packet rate you select. For example: 0:50, 0:150, 0:250, 0:500.
If it shows an inconsistent number like 0:63, or is stuck at 0:250 at every packet rate you select, then your radio does not have CRSFShot working properly.
The latest official release of OpenTX (2.3.12 or newer) already includes CRSFShot, so double check if your OpenTX version is outdated.
Using ExpressLRS Logo as Model Image
I made a logo you can use as model image in the TX16S/T16. You can learn how to use it here.
Image download: google drive.
Install USB to UART Driver
You might or might not need to install this driver on your PC if you want to update your TX via UART: https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers
For Taranis QX7 users, if you are running OpenTX, you’ll need to perform this mod in order to run 400k baud rate on your radio. It’s not needed, but it is recommended if you want to get the most out of ELRS: https://www.youtube.com/watch?v=mHfQe05XJn8&ab_channel=edrone
If you run EdgeTX you won’t need to do this mod as the bug has been addressed in software.
For more detailed explanation of the system, visit ExpressLRS official wiki, I barely scratched the surface here: https://github.com/
- Jun 2021 – Updated guide: OpenTX 2.3.12 has been released, no longer need to flash nightly
- Jul 2021 – Updated: ExpressLRS 1.0 official release
- Aug 2021 – Added info for BetaFPV ELRS Nano TX and RX
- Nov 2021 – Updated product list
- Feb 2022 – Updated the complete TX, RX and antenna options currently available on the market
- May 2022 – Updated instructions for version 2.5, added info about adding home network, updated screenshot of LUA script (V2)
- Oct 2022 – Updated guide for ELRS V3 release, added PWM receiver products
- Mar 2023 – Added info about model match, added more FAQ, updated product links