Releases: ExpressLRS/ExpressLRS
ExpressLRS V4.0.0-RC3
Changes Since RC1
- Fix for PWM receivers not showing the connection page in the Web UI #3467
- Only use the low bit of the extended channels packet for arm status #3461
- Extend VTX Admin disconnect debounce #3459
- Prevent POWER_VALUES OOB array access #3458
- Ensmallen 8266 firmware binary, switch to LittleFS for all #3457
- Remove reference to 750us servo mode in webui #3452
- Can't bind RX after RX had connection #3450
- Set LQ=0 when handset disconnects #3447
- Dual band binding happening on wrong rate TX/RX #3446 #3448
- Only use the default UART0 for passthrough flashing #3442
- Fix broken I2C on 8285 based receivers #3440
- Extend TcpMspConnector idle timeout #3437
- Proper packet rate config migration for LR1121 #3439
- Move from version-labeled lua to just elrs.lua #3436
- Wrong feature flags names being used in webui hardware page #3434
- Add isArmed as CH14 #3433
Compatibility
Not compatible with ExpressLRS 3.x.x, 2.x.x, or 1.x.x. ExpressLRS major versions are not cross compatible therefore this version 4 OTA is incompatible prior versions and will not connect at all (theoretically).
Support for STM32-based hardware has been removed, including all R9M hardware, your ExpressLRS PP, and Ghost devices. NDAA Blue can eat our shorts.
Fullres packet modes users in 8ch and 12ch mode will find CH9 or CH13 missing, and Arm moved to CH14. See "Optional Arming Method" below.
Any custom hardware.json and options.json (set from the webui Options tab) will be lost due to the flash filesystem update, back them up before updating. See "Flash Filesystem Changed".
Highlights
Automatic Antenna Modes
Stop babysitting your receiver antenna modes. Updated RX/TX syncing now automatically select between True Diversity and Gemini mode based on the transmitter setting so you don't have to. If you connect to a single RF chip receiver, the transmitter also automatically steps down from Gemini mode to antenna switch mode.

Optional alternative arming method (requires EdgeTX 2.11.0 or higher)
The alternative arming method doesn’t use CH5 to communicate the user’s arming request to the TX module leaving CH5 free to use as a regular control channel. Arming is performed by user selected sources, e.g. physical or logical switches, anything EdgeTX offers as a source really. The alternative arming method works for all packet rates and switch modes but is especially useful for the fullres packet rates in connection with PWM receivers. No more “remapping CH5” required to use CH5 as control channel. The optional arming method can be enabled in the EdgeTX Internal/External RF Model Setup menu by changing “Arm using” to “Switch”.

Due to this change, fullres modes no longer "skip" CH5. Previously, 8ch and 12ch modes would generate 9ch or 13ch but now generate exactly the number of full resolution channels specified and CH5 is always a full channel. Users may shift CH6+ down by one or use a higher channel count to account for the change. CH14 now carries the 1 bit arming flag in 8ch and 12ch mode.
Expanded PWM receiver output offerings
- You bought the whole servo, use the whole servo, available servo stretch mode now extends the channel input to 500-2500us output
- Failsafe ranges have been extended to 476-2523 allow you to failsafe wherever you want on the dial
- DSHOT 3D mode added as an available output option
Statistical Adaptive Dynamic Power
Instead of fixed SNR values compiled into the firmware, the dynamic power system now statistically models the SNR expected to result in 99%+ LQ and adjusts power to achieve that. This majorly improves dynamic power for LR1121 systems, which in 3.x tend greatly toward full blast output. Now it goes up, up, up, for a moment... but you're gonna be, gonna be golden.
New WebUI
New modern WebUI with an updated look and beautiful organized code instead of a pile of javascript that didn’t even have any consistent whitespace.
Improved telemetry bandwidth
Double telemetry bandwidth when operating in Gemini mode. We're putting eggs in every basket now. Instead of redundant packets, the telemetry downlink now sends data across both Gemini packets, doubling the telemetry bandwidth.
All my single ladies aren't left out either. OTA rejiggering means improved telemetry bandwidth for all non-Fullres packet modes too. Std telemetry rate on 500Hz shows a 30% increase in bandwidth, reducing the time to receive 14 Betaflight telemetry items from 6.6s to 5.1s. Combined with the Gemini telemetry change, this provides 66% additional improvement, from 5.1s to 3.1s.
Headtracking tracking more than heads
Headtracking through the backpack now supports sending the data to EdgeTX instead, and an arbitrary number of channels. Designed for wireless connected pedals (available now) and built in wireless trainer mode (future).
New DJI output protocol
Slap that DJI Air Unit out of low power mode without needing a flight controller. ExpressLRS now has the ability to arm DJI air units, either tied to arm state or permanently on.
New input telemetry protocols supported
A NMEA-output GPS can now be attached directly (115200 baud) for sending position, ground speed. Altitude, and satellite count.
HoTT telemetry has been extended to support the VSpeak turbine protocol including RPM, fuel level and flow, EGT, ECU voltage, pump and throttle % and status. (Image credit: StartZero100)
More robust syncing
The OTA now requires a counter synchronization lock to function, ensuring that TX and RX share a consistent state. There were certain cases where you could start a connection, but the Link Quality would stay very low (10-20%) even at close range. Instead of this failed sync going on indefinitely, the connection can no longer progress without proper sync and the RX will automatically retry the connection. Solves the “radio off to check failsafe” issue where sometimes the receiver behaved erratic after re-connect.
Making our code less garbagey
Core code refactors mean our interface is more CRSF spec compliant, and a new CRSF packet routing system allows data to move data between more than just a handset and flight controller. There's an expanded event flags system and other framework optimizations for the internal device framework that runs peripherals. STM32 support has removed, and our platforms and libraries have been updated to the latest versions.
Expanded packet modes for LR1121
The whole reason 4.0 needed to happen! The new sync structure means being able to support more packet modes. LR1121 gets more, up to a staggering 20 packet modes. The Team900, Team2.4, and GemX modes are also no longer mixed in one list and are selectable by band. New modes:
- K1000 2.4 - 1000Hz FSK (module baud rate must be 921k or higher)
- DK250 2.4 - 250Hz DVDA FSK
- D50 LoRa 900 - 50Hz DVDA
- 25Hz LoRa 900 - 25Hz LoRa 900
Flash Filesystem Changed
The internal flash filesystem has been changed from the deprecated SPIFFS to LittleFS. There is no way to upgrade the filesystem in place. This means custom changes made on the old hardware.html page will be erased during the upgrade, along with items from the Options tab in the webui (receiver baud, airport, wifi and regulatory domain overrides, etc). The hardware.json can be downloaded from the webui before updating and then replaced after updating. PWM mappings and serial protocols are not affected.
Minor changes
- Backpack is now disabled in wifi and BLE modes
- Wide switch mode is always 6-bit now instead of switching between 6 and 7 bit modes, returning boost telemetry performance back to levels before 3.5.4
- TQly telemetry item now samples the last 100 telemetry receives, up from 25
- Reduced jitter in receiver serial output by always sending synced with the packet timer instead of at packet reception time.
- Linkstats are always sent to the handset, even when disconnected. This allows a more immediate notice if the TX believes telemetry has stopped, and in the future we hope this will allow EdgeTX to display more TX status information while disconnected.
- Lua r16 - Still labeled elrsv3.lua for now, contains bugfixes but old r15 or whatever is on your handset is probably fine.
Complete List
- Fix crash in CRSF parser with CRSF packet length 0 #3429
- Use invalid CRSF value to differentiate from an actual 0 ChannelData value #3405
- Extended pwm failsafe values #3394
- HoTT TLM / Support VSpeak turbine protocol #3382
- Upgraded Web UI #3381
- CRSF handling on the transmitter side #3378
- Remove redundant tlmConfirm bit in OTA, increasing tlm bandwidth #3377
- Allow arbitrary number of headtrack channels #3373
- Change TQly counter to 100 items #3370
- Fix DEBUG_INIT not working, unify logger name, simplify ...
ExpressLRS 4.0.0-RC2
Changes Since RC1
- Only use the low bit of the extended channels packet for arm status #3461
- Extend VTX Admin disconnect debounce #3459
- Prevent POWER_VALUES OOB array access #3458
- Ensmallen 8266 firmware binary, switch to LittleFS for all #3457
- Remove reference to 750us servo mode in webui #3452
- Can't bind RX after RX had connection #3450
- Set LQ=0 when handset disconnects #3447
- Dual band binding happening on wrong rate TX/RX #3446 #3448
- Only use the default UART0 for passthrough flashing #3442
- Fix broken I2C on 8285 based receivers #3440
- Extend TcpMspConnector idle timeout #3437
- Proper packet rate config migration for LR1121 #3439
- Move from version-labeled lua to just elrs.lua #3436
- Wrong feature flags names being used in webui hardware page #3434
- Add isArmed as CH14 #3433
Compatibility
Not compatible with ExpressLRS 3.x.x, 2.x.x, or 1.x.x. ExpressLRS major versions are not cross compatible therefore this version 4 OTA is incompatible prior versions and will not connect at all (theoretically).
Support for STM32-based hardware has been removed, including all R9M hardware, your ExpressLRS PP, and Ghost devices. NDAA Blue can eat our shorts.
Fullres packet modes users in 8ch and 12ch mode will find CH9 or CH13 missing, and Arm moved to CH14. See "Optional Arming Method" below.
Any custom hardware.json and options.json (set from the webui Options tab) will be lost due to the flash filesystem update, back them up before updating. See "Flash Filesystem Changed".
Highlights
Automatic Antenna Modes
Stop babysitting your receiver antenna modes. Updated RX/TX syncing now automatically select between True Diversity and Gemini mode based on the transmitter setting so you don't have to. If you connect to a single RF chip receiver, the transmitter also automatically steps down from Gemini mode to antenna switch mode.

Optional alternative arming method (requires EdgeTX 2.11.0 or higher)
The alternative arming method doesn’t use CH5 to communicate the user’s arming request to the TX module leaving CH5 free to use as a regular control channel. Arming is performed by user selected sources, e.g. physical or logical switches, anything EdgeTX offers as a source really. The alternative arming method works for all packet rates and switch modes but is especially useful for the fullres packet rates in connection with PWM receivers. No more “remapping CH5” required to use CH5 as control channel. The optional arming method can be enabled in the EdgeTX Internal/External RF Model Setup menu by changing “Arm using” to “Switch”.

Due to this change, fullres modes no longer "skip" CH5. Previously, 8ch and 12ch modes would generate 9ch or 13ch but now generate exactly the number of full resolution channels specified and CH5 is always a full channel. Users may shift CH6+ down by one or use a higher channel count to account for the change. CH14 now carries the 1 bit arming flag in 8ch and 12ch mode.
Expanded PWM receiver output offerings
- You bought the whole servo, use the whole servo, available servo stretch mode now extends the channel input to 500-2500us output
- Failsafe ranges have been extended to 476-2523 allow you to failsafe wherever you want on the dial
- DSHOT 3D mode added as an available output option
Statistical Adaptive Dynamic Power
Instead of fixed SNR values compiled into the firmware, the dynamic power system now statistically models the SNR expected to result in 99%+ LQ and adjusts power to achieve that. This majorly improves dynamic power for LR1121 systems, which in 3.x tend greatly toward full blast output. Now it goes up, up, up, for a moment... but you're gonna be, gonna be golden.
New WebUI
New modern WebUI with an updated look and beautiful organized code instead of a pile of javascript that didn’t even have any consistent whitespace.
Improved telemetry bandwidth
Double telemetry bandwidth when operating in Gemini mode. We're putting eggs in every basket now. Instead of redundant packets, the telemetry downlink now sends data across both Gemini packets, doubling the telemetry bandwidth.
All my single ladies aren't left out either. OTA rejiggering means improved telemetry bandwidth for all non-Fullres packet modes too. Std telemetry rate on 500Hz shows a 30% increase in bandwidth, reducing the time to receive 14 Betaflight telemetry items from 6.6s to 5.1s. Combined with the Gemini telemetry change, this provides 66% additional improvement, from 5.1s to 3.1s.
Headtracking tracking more than heads
Headtracking through the backpack now supports sending the data to EdgeTX instead, and an arbitrary number of channels. Designed for wireless connected pedals (available now) and built in wireless trainer mode (future).
New DJI output protocol
Slap that DJI Air Unit out of low power mode without needing a flight controller. ExpressLRS now has the ability to arm DJI air units, either tied to arm state or permanently on.
New input telemetry protocols supported
A NMEA-output GPS can now be attached directly (115200 baud) for sending position, ground speed. Altitude, and satellite count.
HoTT telemetry has been extended to support the VSpeak turbine protocol including RPM, fuel level and flow, EGT, ECU voltage, pump and throttle % and status. (Image credit: StartZero100)
More robust syncing
The OTA now requires a counter synchronization lock to function, ensuring that TX and RX share a consistent state. There were certain cases where you could start a connection, but the Link Quality would stay very low (10-20%) even at close range. Instead of this failed sync going on indefinitely, the connection can no longer progress without proper sync and the RX will automatically retry the connection. Solves the “radio off to check failsafe” issue where sometimes the receiver behaved erratic after re-connect.
Making our code less garbagey
Core code refactors mean our interface is more CRSF spec compliant, and a new CRSF packet routing system allows data to move data between more than just a handset and flight controller. There's an expanded event flags system and other framework optimizations for the internal device framework that runs peripherals. STM32 support has removed, and our platforms and libraries have been updated to the latest versions.
Expanded packet modes for LR1121
The whole reason 4.0 needed to happen! The new sync structure means being able to support more packet modes. LR1121 gets more, up to a staggering 20 packet modes. The Team900, Team2.4, and GemX modes are also no longer mixed in one list and are selectable by band. New modes:
- K1000 2.4 - 1000Hz FSK (module baud rate must be 921k or higher)
- DK250 2.4 - 250Hz DVDA FSK
- D50 LoRa 900 - 50Hz DVDA
- 25Hz LoRa 900 - 25Hz LoRa 900
Flash Filesystem Changed
The internal flash filesystem has been changed from the deprecated SPIFFS to LittleFS. There is no way to upgrade the filesystem in place. This means custom changes made on the old hardware.html page will be erased during the upgrade, along with items from the Options tab in the webui (receiver baud, airport, wifi and regulatory domain overrides, etc). The hardware.json can be downloaded from the webui before updating and then replaced after updating. PWM mappings and serial protocols are not affected.
Minor changes
- Backpack is now disabled in wifi and BLE modes
- Wide switch mode is always 6-bit now instead of switching between 6 and 7 bit modes, returning boost telemetry performance back to levels before 3.5.4
- TQly telemetry item now samples the last 100 telemetry receives, up from 25
- Reduced jitter in receiver serial output by always sending synced with the packet timer instead of at packet reception time.
- Linkstats are always sent to the handset, even when disconnected. This allows a more immediate notice if the TX believes telemetry has stopped, and in the future we hope this will allow EdgeTX to display more TX status information while disconnected.
- Lua r16 - Still labeled elrsv3.lua for now, contains bugfixes but old r15 or whatever is on your handset is probably fine.
Complete List
- Fix crash in CRSF parser with CRSF packet length 0 #3429
- Use invalid CRSF value to differentiate from an actual 0 ChannelData value #3405
- Extended pwm failsafe values #3394
- HoTT TLM / Support VSpeak turbine protocol #3382
- Upgraded Web UI #3381
- CRSF handling on the transmitter side #3378
- Remove redundant tlmConfirm bit in OTA, increasing tlm bandwidth #3377
- Allow arbitrary number of headtrack channels #3373
- Change TQly counter to 100 items #3370
- Fix DEBUG_INIT not working, unify logger name, simplify some log msgs #3369
- Always send LinkStats to handset #3367
- Allow seco...
ExpressLRS V4.0.0-RC1
Compatibility
Not compatible with ExpressLRS 3.x.x, 2.x.x, or 1.x.x. ExpressLRS major versions are not cross compatible therefore this version 4 OTA is incompatible prior versions and will not connect at all (theoretically).
Support for STM32-based hardware has been removed, including all R9M hardware, your ExpressLRS PP, and Ghost devices. NDAA Blue can eat our shorts.
Highlights
Automatic Antenna Modes
Stop babysitting your receiver antenna modes. Updated RX/TX syncing now automatically select between True Diversity and Gemini mode based on the transmitter setting so you don't have to. If you connect to a single RF chip receiver, the transmitter also automatically steps down from Gemini mode to antenna switch mode.

Optional alternative arming method (requires EdgeTX 2.11.0 or higher)
The alternative arming method doesn’t use CH5 to communicate the user’s arming request to the TX module leaving CH5 free to use as a regular control channel. Arming is performed by user selected sources, e.g. physical or logical switches, anything EdgeTX offers as a source really. The alternative arming method works for all packet rates and switch modes but is especially useful for the fullres packet rates in connection with PWM receivers. No more “remapping CH5” required to use CH5 as control channel. The optional arming method can be enabled in the EdgeTX Internal/External RF Model Setup menu by changing “Arm using” to “Switch”.

Due to this change, fullres modes no longer "skip" CH5. Previously, 8ch and 12ch modes would generate 9ch and 13ch respectively but now generate exactly the number of channels specified.
Expanded PWM receiver output offerings
- You bought the whole servo, use the whole servo, available servo stretch mode now extends the channel input to 500-2500us output
- Failsafe ranges have been extended to 476-2523 allow you to failsafe wherever you want on the dial
- DSHOT 3D mode added as an available output option
Statistical Adaptive Dynamic Power
Instead of fixed SNR values compiled into the firmware, the dynamic power system now statistically models the SNR expected to result in 99%+ LQ and adjusts power to achieve that. This majorly improves dynamic power for LR1121 systems, which in 3.x tend greatly toward full blast output. Now it goes up, up, up, for a moment... but you're gonna be, gonna be golden.
New WebUI
New modern WebUI with an updated look and beautiful organized code instead of a pile of javascript that didn’t even have any consistent whitespace.
Improved telemetry bandwidth
Double telemetry bandwidth when operating in Gemini mode. We're putting eggs in every basket now. Instead of redundant packets, the telemetry downlink now sends data across both Gemini packets, doubling the telemetry bandwidth.
All my single ladies aren't left out either. OTA rejiggering means improved telemetry bandwidth for all non-Fullres packet modes too. Std telemetry rate on 500Hz shows a 30% increase in bandwidth, reducing the time to receive 14 Betaflight telemetry items from 6.6s to 5.1s. Combined with the Gemini telemetry change, this provides 66% additional improvement, from 5.1s to 3.1s.
Headtracking tracking more than heads
Headtracking through the backpack now supports sending the data to EdgeTX instead, and an arbitrary number of channels. Designed for wireless connected pedals (available now) and built in wireless trainer mode (future).
New DJI output protocol
Slap that DJI Air Unit out of low power mode without needing a flight controller. ExpressLRS now has the ability to arm DJI air units, either tied to arm state or permanently on.
New input telemetry protocols supported
A NMEA-output GPS can now be attached directly (115200 baud) for sending position, ground speed. Altitude, and satellite count.
HoTT telemetry has been extended to support the VSpeak turbine protocol including RPM, fuel level and flow, EGT, ECU voltage, pump and throttle % and status. (Image credit: StartZero100)
More robust syncing
The OTA now requires a counter synchronization lock to function, ensuring that TX and RX share a consistent state. There were certain cases where you could start a connection, but the Link Quality would stay very low (10-20%) even at close range. Instead of this failed sync going on indefinitely, the connection can no longer progress without proper sync and the RX will automatically retry the connection. Solves the “radio off to check failsafe” issue where sometimes the receiver behaved erratic after re-connect.
Making our code less garbagey
Core code refactors mean our interface is more CRSF spec compliant, and a new CRSF packet routing system allows data to move data between more than just a handset and flight controller. There's an expanded event flags system and other framework optimizations for the internal device framework that runs peripherals. STM32 support has removed, and our platforms and libraries have been updated to the latest versions.
Expanded packet modes for LR1121
The whole reason 4.0 needed to happen! The new sync structure means being able to support more packet modes. LR1121 gets more, up to a staggering 20 packet modes. The Team900, Team2.4, and GemX modes are also no longer mixed in one list and are selectable by band. New modes:
- K1000 2.4 - 1000Hz FSK (module baud rate must be 921k or higher)
- DK250 2.4 - 250Hz DVDA FSK
- D50 LoRa 900 - 50Hz DVDA
- 25Hz LoRa 900 - 25Hz LoRa 900
Minor changes
- Backpack is now disabled in wifi and BLE modes
- Wide switch mode is always 6-bit now instead of switching between 6 and 7 bit modes, returning boost telemetry performance back to levels before 3.5.4
- TQly telemetry item now samples the last 100 telemetry receives, up from 25
- Reduced jitter in receiver serial output by always sending synced with the packet timer instead of at packet reception time.
- Linkstats are always sent to the handset, even when disconnected. This allows a more immediate notice if the TX believes telemetry has stopped, and in the future we hope this will allow EdgeTX to display more TX status information while disconnected.
- Lua r16 - Still labeled elrsv3.lua for now, contains bugfixes but old r15 or whatever is on your handset is probably fine.
Complete List
- Fix crash in CRSF parser with CRSF packet length 0 #3429
- Use invalid CRSF value to differentiate from an actual 0 ChannelData value #3405
- Extended pwm failsafe values #3394
- HoTT TLM / Support VSpeak turbine protocol #3382
- Upgraded Web UI #3381
- CRSF handling on the transmitter side #3378
- Remove redundant tlmConfirm bit in OTA, increasing tlm bandwidth #3377
- Allow arbitrary number of headtrack channels #3373
- Change TQly counter to 100 items #3370
- Fix DEBUG_INIT not working, unify logger name, simplify some log msgs #3369
- Always send LinkStats to handset #3367
- Allow secondary CRSF port to send RC data #3364
- Atomic channel data updates #3363
- Platform upgrade #3341
- Statistical Adaptive SNR Thresholds #3302
- Wide switch mode always 6 bit, boost to 1:2 #3295
- Add OtaNonce to OtaCrcInitializer #3294
- CRSF rewrite to be 'more' spec compliant #3198
- Dshot 3D mode, allowing for both forward and reverse rotation #3139
- Support directly-attached GPS inputs to RX #3086
- Mavlink to Ardupilot Custom Telemetry CRSF translation for Yaapu Telemetry Script #3077
- Pass HeadTracking Pan/Tilt/Roll back to EdgeTX #3076
- Backpack device refactor #3075
- Device/event framework optimisation #3049
- Communicate Rx available antenna mode to the Tx #3039
- Double MSP (TLM and MAVLink) throughput for Gemini hardware #3037
- STM32 removal #3033 #3027 #3016 #2960 #2956
- Permanently arm DJI (or other MSP displayport) air units using an RX #3028
- Adds optional arming method and provides contiguous proportional channels for all full-res modes #3008
- Auto configure Rx OTA protocol from the Tx #2994
- Auto set True Diversity Rx into Diversity or Gemini mode based on Tx antenna mode #2993
- Add tlmConfirm to tlm_dl ota packet-structure #2991
- set OtaCrcInitializer to OTA_VERSION_ID during binding #2983
- Reduce jitter for CRSF RC packets on the receiver #2943
- Disable backpack in wifi and BLE modes #2940
- Fix ESP32 based PWM receivers in debug mode #2939
- Update OTA_VERSION_ID to V4 #2933
- Send RF Mode Enum in place of RF Index in the Sync packet #2932
- Split RC data sending from polling and queued data sending V4.0 #2931
- Arm DJI O3 directly from an ELRS receiver #2926
- Servo stretch feature for wider range servo PWM pulses #2773
- D modes for Team900 #2089
ExpressLRS V3.6.2
Changes since 3.6.0:
Bugfixes
- Fix intermittent RGB LED startup hang by #3355
- Update devServoOutput.cpp -PWM start w/digitalWrite LOW #3339
- Use the Strongest receiving radio for sending in diversity #3384
Other fixes and improvements
- Optimised TX + Continuous mode RX (for V3 firmware) #3354
- Remove more features so we can support Ghost Atto in V3 #3386
- Fix LR1121 SPI clock rate and WaitBusyTimeout #3403
- STM32 and 8285 do NOT support two RF paths #3406
Compatibility
This is a bugfix/patch release and is compatible with earlier 3.x versions.
Who should update from V3.6.0?
This update is recommended for everyone, but particularly for:
- LBT users, who will see increased link performance
- DShot users, especially with AM32 ESC firmware
- Ghost Atto users, as receiver configuration was corrupting the firmware
- Users experiencing LR1121 TX modules not starting up or having issues adjusting parameters using the Lua script
- Users having updated their ESP8285 devices to 3.6.1 experiencing low transmit power
- Lua updated to r16
ExpressLRS V3.6.0
The ExpressLRS development team is excited to announce a new release, and we want to extend a huge thank you to RadioMaster RC and Semtech Semiconductor. Their invaluable support was crucial in enabling Listen Before Talk (LBT) functionality for LR1121 modules.
This update includes a new binary for the LR1121 chip. The first time you power on your device with this new version, the LR1121 chip(s) will be updated to firmware version 1.0.4. This new firmware contains optimized commands that give us the necessary performance to bring LBT to all devices using the LR1121 chip.
Big News
- LR1121 LBT Support #3267
Other Features
Bug Fixes
- Fix PWM/serial pins not defaulting correctly #3264
- Fix VTX commands not being processed #3270
- Fix DShot overflow issue #3274
- HoTT TLM: fix ESC frame definition by #3281
- Use wifi MAC as default UID for ESP8285 TX, for RX as TX #3287
- Fix not being able to bind when TX on 50Hz packet rate #3291
- Fix dShot safety issue on PWM receivers #3300
- Constrain PPM handset to CRSF limits (prevent integer underflow) #3303
Full Changelog: 3.5.6...3.6.0
Compatibility
This is a minor feature release and is compatible with earlier 3.x versions.
Who should update from V3.5.x?
This update is recommended for everyone, but particularly for all our friends in the EU that have been waiting for LBT support for their Nomad, GX12, TX15 or similar radios and receivers with the LR1121 chip.
Reverting to older firmware
If you are flashing back to versions prior to 3.6.0 it will be a multi-step process.
- First flash the older firmware as usual
- When the TX or RX is restarted, it will flash the "Bad Radio" code.
- Download the LR1121 firmware from https://github.com/Lora-net/radio_firmware_images/blob/master/lr1121/transceiver/lr1121_transceiver_0103.bin
- The wifi access point will have started, navigate to http://10.0.0.1/lr1121.html and upload the firmware from the previous step to each LR1121 chip on the module.
- Reboot and enjoy the older firmware
ExpressLRS V3.5.6
Slow 'Other Devices'
After the changes in 3.5.5 for jittery channels when Lua running, there was a side effect then the Other Devices menu in the Lua may load very slowly, if at all. To solve this we've made a few changes to the Lua script and also redeveloped the telemetry queueing system.
Confusing 'initrate' behaviour
The previous behaviour with storing the initial packet rate for receivers was a little confusing to users. This has been changed from storing the 'initrate' when the RX loses connection, to when it get's it's first tentative connection.
Value not updating in Lua script
Occasionally when setting a new value in the Lua script it would not be stored and would revert back to the original value.
Changes since 3.5.5:
Features / Improvements
- Redeveloped telemetry queueing system #3229
- Store the RXs initrate during connect, not disconnect #3235
- Allow hardware definition to specify that PWM/serial pins should be Serial by default #3249
Bugfixes
- Slow Other Devices loading if at all on 3.5.5 #3222
- Reduce bad/good queries around user pressing ENTER #3230
- Reduce RAM usage when not using MAVLink or WIFI mode #3238, #3240
- Fix for flashing the backpack via UART on the S3 when it's not connected to UART0 #3242
Compatibility
This is a bugfix/patch release and is compatible with earlier 3.x versions.
Who should update from V3.5.x?
This update is recommended for everyone, but particularly for:
- Users having issues seeing their receiver in the Lua script. i.e. Other devices menu entry not showing.
- Users having issues setting a new value in the Lua script. Please download the Lua script using the Configurator or the Assets further down.
ExpressLRS V3.5.5
Impact of MSP Requests/Polling During Flight
Tools which send data from handset to the model during flight (e.g. MSP telemetry widgets) reduce RC control performance by pushing the link into data transfer mode. When data requests are sent to the receiver, such as by a Lua script or ground station, ExpressLRS enters "Telemetry Burst Mode" which temporarily boosts the telemetry rate to 1:2, even if telemetry is disabled or set low. This mode is intended for ground use only, while the aircraft is still unarmed. During flight, it can shift bandwidth away from control updates, lowering the RC update rate to as low as 25% (e.g., from 100Hz to 25Hz), which makes control feel sluggish or delayed.
AUX Channels issue when in Wide Switch mode
Before version 3.5.5, TLM boosting in Wide switch mode also exposed a bug that caused jitter in AUX channels and, in low LQ situations, large changes in those channel values. The issue came to light with the introduction of a third-party RotorFlight Lua dashboard widget, which sends MSP requests every few seconds during flight - constantly triggering telemetry boosts and increasing the likelihood of encountering this problem.
This issue is fixed in 3.5.5, maintaining consistent AUX channel output regardless of boost mode or link quality. However, inflight MSP communication still reduces control performance, so it’s best to avoid using MSP-related tools during flight in latency-sensitive applications.
⚠️ The ExpressLRS team strongly discourages using any Lua scripts or tools that send MSP data during flight in high-performance or latency-sensitive applications.
Changes since 3.5.4:
Features / Improvements
- Adds Airspeed, RPM, TEMP, Cells telemetry packets #3197
Bugfixes
- TLM ratio boost: don't cross the wide switch 7-bit to 6-bit boundary #3210
- LUA: auto adjust display parameter only on EdgeTX radios #3185
- Set power correctly when changing RF band #3216
Compatibility
This is a bugfix/patch release and is compatible with earlier 3.x versions.
Who should update from V3.5.x?
This update is recommended for everyone, but particularly for:
- Rotorflight users running Lua scripts or MSP-based telemetry features during the flight
- Users who needs new CSRF Airspeed, RPM, TEMP, Cells telemetry packets
ExpressLRS V3.5.4
Changes since 3.5.3:
Features / Improvements
- Enhanced performance in noisy or interference-heavy environments #3154
- Force Gemini Antenna mode when using dual band #3114
- [MAVLINK] Handle invalid battery values #3100
- Add k modes to tx module display #3113
- New binding storage mode: Administered #2862
- LUA script: auto adapt display properties to screen resolution and font size for color displays. #3170
- Adhere to the CRSF spec for folders #3123
- LR1121 init power config #3093
Bugfixes
- Fix SPI FC problem with looping connection loss, reestablishment #3079
- No MAVLink for you STM32! #3088
- Fix Head Tracker Disable command not being sent #3165
- Fixing BF4.6 passthrough incompatibility issue #3164
- Fix ADC/Joystick when no handset connected #3159
- Fix Airport - TX module in Airport mode initialized to wrong baud rate #3167
- Downgrade AWS CLI for R2 compatibility #3115
- ADC sampling fix #3112
Compatibility
This is a bugfix/patch release and is compatible with earlier 3.x versions.
Who should update from V3.5.x?
This update is recommended for everyone, but particularly for:
- Users using DJI Googles 3 with O4.
- Users using Betaflight nightlies firmware.
ExpressLRS V3.5.3
Changes since 3.5.2:
Bugfixes
- Return TX to configured RF mode after binding #3035
Other fixes
- None
Compatibility
This is a bugfix/patch release and is compatible with earlier 3.x versions.
Who should update from V3.5.x?
- Users utilising traditional binding
ExpressLRS V3.5.2
Changes since 3.5.1:
Bugfixes
- Fix Airport communication #2988
- Fix STM32 flashing options #2997
- Fix link connection on Lua setting change for Team900 #3014
Other fixes
- Housekeeping: remove some compiler warnings #2980
- Removes two unused variable compiler warnings #2986
- Allow LR1121 single RF path #2998
- Remove Serial1 MAVLink check; MAVLink is supported on Serial0 only #2979
- LUA: Hide Protocol2 for receivers with no pin available for Serial2 #2999
- Change Joystick mode to report as a "joystick" instead of a "gamepad" #3013
Compatibility
This is a bugfix/patch release and is compatible with earlier 3.x versions.
Who should update from V3.5.x?
- Airport users updating from 3.4
