A few Flight Controllers and AIOs have been released with ExpressLRS receivers on-board using SPI instead of a regular UART. This means you can build a more compact and lightweight whoop or nano long range rig without the need for an external receiver. More of these flight controllers are coming into stores.
Because the ExpressLRS code is "baked-in" to the flight controller firmware instead of a second microcontroller, these can not be updated the same way external receivers are. These SPI receivers will work always work with the ExpressLRS firmware of the same major version. That is, ExpressLRS 1.x.x and ExpressLRS 2.x.x need different Flight Controller firmware (Betaflight builds).
There are two ways to bind the receiver, as shown below
Put the receiver into bind mode using any of these procedures:
- "Bind" button in the Betaflight Configurator, Receiver Page (if can't be found, update the Betaflight firmware).
- using the CLI, type in
bind_rxand press enter once.
- press the bind button on the flight controller.
- using the CLI, type in
set expresslrs_uid = 0, press enter once, then save and reboot
Execute elrs.lua in your handset and press the
Bind button. The RX and TX should be now bound.
Please mind the order, RX first, TX second.
Video Tutorial (thanks to @JyeSmith):
The binding phrase is hashed into 6 bytes represented as numbers. These 6 bytes are referred to as the UID bytes. UID bytes are entered into the Betaflight CLI for binding. Please look below for instructions. When building via ExpressLRS Configurator or via VS Code, note down the UID bytes from the build log. You can also use the generator below to retrieve your UID bytes from your binding phrase.
UID Byte Generator¶
Setting Binding Phrase¶
Go to Betaflight CLI and enter the following commands. (Enter your binding phrase above)
RF Mode Adjustment¶
These AIOs with ExpressLRS SPI Receivers are set to use 500Hz as default. To adjust it, you will need to go into Betaflight CLI and use the following commands:
set expresslrs_rate_index = [your index] save
[your index] corresponds to the following :
- 500Hz = 0
- 250Hz = 1
- 150Hz = 2
- 50Hz = 3
With the Updated Betaflight firmware, adjusting your packet rate from the Lua Script will also adjust the packet rate in the AIO.
As mentioned, you must flash a Betaflight firmware that's compatible with the ExpressLRS major version on your transmitter. ExpressLRS 1.x.x TX only works with Betaflight firmware for ExpressLRS 1.x.x, and upgrading the transmitter to ExpressLRS 2.x.x means flashing the flight controller with a different Betaflight version. If upgrading minor versions, such as from ExpressLRS 1.1.0 to 1.2.0 on the transmitter, no changes to the flight controller are needed although there may be bug fixes to the ExpressLRS Betaflight implementation as well.
In preparation for this, you should save a copy of your
diff all dump.
Download the necessary binaries (zipped) from this Betaflight PR page. Extract the Hex File and, using Betaflight Configurator 10.8.0 (Nightly), flash the binary using the Load Firmware [Local] button found at the bottom right of the Firmware Flasher (Flight Controller in DFU Mode).
Once flashed, you will need to paste in the
diff all you have saved. Don't forget to type in
save and press enter once done. Power cycle your flight controller, and you should be set. Review your Betaflight settings, and check your RC link.
This procedure will only apply while Betaflight 4.3.0 is not yet released. Section will be updated appropriately for any changes in procedures.
Content taken from the PR page ℅ of @phobos-