This tutorial explains how to setup TBS Crossfire for OpenTX radios such as the TX16S. I will also show you how to connect Crossfire receiver to a flight controller and configure it in Betaflight. Tracer is similar to Crossfire when it comes to setup, so most of the steps in this guide also apply.
Further Reading: How to choose radio transmitter?
What’s TBS Crossfire?
TBS Crossfire is a popular radio control link for FPV drones, which is known to be reliable, easy to setup and great for long range flying.
Crossfire is an external RF module that can be installed directly on the back of a radio transmitter (i.e. JR module bay). The TBS Tango 2 radio also has Crossfire built in.
Rather than using the more common 2.4GHz, Crossfire operates on the 900MHz band. The low frequency is better at signal penetration through obstacles. Many pilots prefer Crossfire even though they don’t intent to fly long range but for the stable link connection and resistance to failsafe in challenging environment. Range can largely depend on the conditions of the environment, but based on personal experience, I can fly 5 miles out easily using 250mW, and I wasn’t even pushing the limit there. One of the main downsides of Crossfire is perhaps the larger receiver antennas which can be challenging to mount on smaller FPV drones.
Crossfire TX Modules
|TBS Crossfire TX Module||TBS Crossfire Micro TX V2|
|– Built-in screen for changing settings |
– Max Power up to 2W
– Extra features: Spectrum analyzer, Bluetooth module
|– More practical and greater value |
– No screen, settings changed via LUA script only
– Max Power up to 1W (1000mW)
– Lighter, smaller, cheaper
|TBS Crossfire V2 Nano Module||TBS Tango 2 Radio (review)|
|Same features and performance as the V2 JR module, but has Lite interface (for the Lite module bay such as the Jumper T-Lite, Frsky X-Lite and Tandem X20 radios)||Compact and great build quality and yet with excellent ergonomics. The only radio with Crossfire built-in.|
I think the Micro V2 module is more than capable for most people flying freestyle and racing. The built-in screen in the full size module is no big deal as you can change pretty much all the settings in the radio. The additional features of the full size module are not really that useful to be honest for most pilots. The only advantage IMO is having the 2W output power option, and I don’t remember a time I need more than 250mW :)
|Stock Antenna||Diamond Antenna (Upgrade)|
|– Good enough for most pilots |
– Durable, Cheap
– Can be used for receiver
|– Slightly more reliable performance |
– Slightly more directional, more range in front of the pilot than behind
– Durable design for transport
|Amazon | AliExpress||GetFPV | Amazon|
|Crossfire Micro RX||Crossfire Nano RX|
|It uses a JST header for connection||Same capability as the Micro RX, but a lot smaller! |
Connection is solder pads
|Amazon | GetFPV||GetFPV | Amazon | NBD|
|Crossfire Diversity Nano RX|
|Dual antennas allows better range; Additional features to existing RX|
|Amazon | GetFPV | AliExpress|
|MicroVee Antenna||Immortal T Antenna|
|– Cheap, simple, lightweight and flexible||– Same performance but stronger, and heavier|
|915MHz: Amazon | GetFPV |
868MHz: Amazon | GetFPV
|Amazon | GetFPV | AliExpress|
|Mini Immortal T|
|2g lighter than Immortal T and much smaller, great for micro drones, but range is largely reduced compared to full size antenna|
Before we begin setting up Crossfire, it’s always a good idea to make sure your radio’s operating system (i.e. OpenTX or EdgeTX) is up to date for bug fixes and improvements.
Make sure to update SD card content as well as it contains the latest Crossfire LUA script for configuring Crossfire module and receivers.
Updating TBS Crossfire Firmware
The first thing you should do is to update the firmware on your Crossfire TX module for the latest features and bug fixes.
Back in the days (before 2020), we had to download and install TBS Agent on our computers, but now we can use a web based tool to do flash firmware on our Crossfire module which is super handy.
The online tool is called AgentM, it’s basically just a website: https://www.team-blacksheep.com/agentm/ (Note: it only supports Google Chrome and Microsoft Edge browsers at the moment)
Login with the same account that you use on TBS’s website, username should be your email address. If you don’t have a login, just register on TBS’s website (https://www.team-blacksheep.com).
Connect your Crossfire TX module to the computer using a USB cable. No need to power on your radio for this to work, the module gets power from USB.
And in Agent M, click “link USB device”, you will be prompted to connect to TBS Crossfire.
Once connected, you will land on a new page where you can configure the Crossfire TX module.
To update the firmware, click the “Firmware” button at the bottom, you should see a list of available firmware. The firmware version you are currently on will be marked with a blue tag “Current”.
The update should only take a minute or two to complete.
Every time you update the firmware on your TX module, you also need to update the firmware on your receivers – this cannot get any simpler, just power on your radio and your quad, try to bind them again and you should be prompted to update firmware on the receiver (wirelessly).
Installing Crossfire TX module in the Radio
You can install the Crossfire TX module directly in the external JR module bay on the back of the radio. Insert the module carefully, make sure all the pins go into the sockets of the Crossfire module properly.
It also works with Taranis Q X7, and Horus X10S, but there are some minor issues due to these radios’ inability to operate at full baud rate, causing problems such as constant warning of “telemetry lost”. There is a DIY mod you can do to fix it, but it’s quite difficult to do (involves soldering to the main processor) and therefore I don’t recommend using these radios with Crossfire. Update: by flashing EdgeTX to these radios, you no longer need to do this hardware mod.
Setup Radio to Enable Crossfire TX Module
You will have to create a new model in the radio for Crossfire. A simple way is to duplicate an existing model and rename it to “Crossfire”. If you want to set it up from scratch, here is a tutorial on how to.
Short press the Menu button to enter the Model Setup page, scroll down to “Internal RF” and set mode to “OFF“.
Next set the mode under “External RF” to “CRSF” and change “Channel Range” to “CH1-16“.
Once you’ve done this and exit this menu, the Crossfire TX module should power up (LED lights up on the back).
RX and FC Connection
Remember that almost all of the pins on the Crossfire receiver can be mapped in software. This means you can configure them to output whatever you want, and so there are more than 1 way to connect your RX to the flight controller.
The way I show you here is kind of the standard way that most people use, here are the connections:
- 5V to 5V
- GND to GND
- CH1 (Crossfire RX) to UART RX (FC)
- CH2 (Crossfire RX) to UART TX (FC)
You can use any spare UART on the flight controller.
You can also configure Crossfire receiver to output SBUS, this allows you to connect only CH1 to an RX pin on the FC, and leave CH2 unconnected. This is useful if you don’t have a TX pin on the FC, but CRSF is a better protocol than SBUS because it’s faster and also allows telemetry and that’s what I would recommend.
You must not use Soft Serial for Crossfire receiver because it’s not fast enough to handle CRSF signal.
In this example, I am connecting the Crossfire receiver to the UART 6 of the Kakute F4 AIO V2 FC.
Crossfire Micro Receiver:
Crossfire Nano Receiver:
Binding Crossfire Receiver
Crossfire Receiver Binding is very simple (most of the times), you can activate binding mode in the Crossfire LUA script. This LUA script comes with the latest version of EdgeTX and OpenTX, so you DO NOT need to download anything.
Here are the steps to bind the Crossfire TX module and RX:
- Power on the RX, it should be flashing green, which indicates it’s waiting to bind (if it’s LED stays red, press the bind button on the RX, it should start flashing green)
- Turn on your radio, long press the System button to go to Radio Setup
- On the “Tools” page, select “TBS Agent Lite”
In the next screen, select “XF Micro TX” (that’s your TX module).
In the next screen, select the second option “Bind”.
You will be prompted the message “Binding…”, It should only take a few seconds to bind.
If the RX has outdated firmware, you will be prompted to update it, which will take a few minutes. Once it’s done, the receiver will flash green rapidly for a few seconds (loading firmware), then the green lights on both the RX and TX module will become solid. If update got stuck or fail, just try again.
When binding is complete the radio will automatically exit binding mode, and the receiver LED should turn from red to green (solid).
Hit the exit button on your radio to configure the Crossfire Nano receiver.
Configuring RX from Radio
Once your receiver is bound, you can now configure both the TBS Crossfire TX module and receiver from your radio’s Crossfire Configure Tool. If you don’t see the option “XF Micro/Nano RX”, it means your receiver is either not bound or it’s powered off.
The first thing you want to configure would be your receiver output mapping to get it talking to your flight controller.
To do this, select “XF Nano RX“, scroll down to “Output Map“, and change “Output 1” to “CRSF TX“, “Output 2” to “CRSF RX“. That’s it :)
Now you can configure the TX module.
Leaving the “Region” setting to “Open” will allow maximum output power regardless which frequency you select.
It’s important to make sure you are using the correct frequency depends on where you fly. You have two options, 868MHz and 915MHz, one of these frequency will be used by the cellular system, which you should avoid otherwise you will get interference from cellular system, causing dropouts and failsafe.
According to the Crossfire manual, the Blue and Purple regions should be using 915MHz while the Yellow region should be using 868MHz. For example, US should be using 915MHz while Europe should be using 868MHz.
Here are the different frequency options. Only use the Race frequencies if you are actually racing as they sacrifice range for bandwidth for more consistent data packets. LBT means “listen before talk”.
Higher output power means more range, but you don’t always want to run at max output power.
Firstly, higher output power drains the battery faster. Secondly if you fly with other people (especially if you are all using Crossfire or other 900MHz systems), it can interfere with other pilots and cause signal dropouts and failsafe if all are using max output power. For short distance (such as racing), it’s probably a good idea to use 25mW.
For a typical FPV drone setup, setting power to around 250mW is adequate in most situations, which can give you miles of range in line of sight.
The dynamic output power option can help mitigate some of the problems mentioned with maximum output power. It dynamically adjusts the output power depending on signal strength. Beware that as soon as you unplug the quad, the transmitter will automatically go to maximum output power, which is not a good idea when you fly with other people who are also using Crossfire.
In Tracer, you have 25mW, 100mW and Ludicrous which is about 1W. Because Tracer doesn’t have as much range as Crossfire most people would just run Ludicrous with Dynamic power enabled so it brings the power down when you are flying nearby.
There’s one more settings you want to change, which is “Mode” in Receiver settings. You can only access receiver option when you have your receiver bound to the transmitter and powered on. These options are saved per receiver, so you have to set these for every quad you have.
Mode is the number of channels you want to use, you have two options, 8 Ch and 12 Ch.
Just select 12 channels.
You will get four more channels to use. Maybe you don’t need them, but 8Ch mode and 12Ch modes have basically no difference in terms of performance, the extra 4 channels will come in handy when you need them.
However for fixed wings if you want all channels to have full resolution, you should leave it at 8Ch instead. But for multirotor it’s fine to use 12ch.
Make sure telemetry is on, and set Failsafe to Cut so that the motors stop spinning in the event of signal loss, and your quad will drop out of the sky to minimize damage.
You can select which packet rate you want to run, options are 50Hz, 150Hz or Dynamic.
It depends on if you want lower latency or long distance. 50Hz will have higher latency but gives you way more range because it has higher receiver sensitivity and also uses LORA modulation while 150Hz has lower latency but less range.
You can set it to dynamic, it will shift to the lower latency as your signal gets weaker. However Betaflight devs actually don’t recommend using Dynamic due to RC signal smoothing in the FC firmware which is tied to a fixed packet rate value, it won’t work properly with dynamically changing packet rate. If you fly long range, lock it to 50Hz, if you do racing or just in close range, 150Hz should be fine.
Configure Betaflight for Crossfire
The last step in our software setup is enabling Crossfire protocol in Betaflight.
Go to the “Ports” tab in the Betaflight configurator, and enable “Serial RX” in the UART you’ve connected to the TBS Crossfire receiver. Press “Save”.
Now go to the “Receiver” tab, under the “Receiver” Section, select “Serial (via UART)“, and select “CRSF” in the second option. Don’t forget to enable “Telemetry” as well before pressing “Save“.
That’s it, you have successfully setup Crossfire in Betaflight :)
Go back to the “Receiver” tab, you should now see response from stick movement. This means your receiver is working! If the channels are in the wrong order, just try a different “Channel Map”.
Check if end points (1000 and 2000) and mid points (1500) are correct, see this guide how to adjust if they aren’t correct.
No stick movement? Try this command in CLI:
set serialrx_inverted = OFF
If you are still not getting any stick response, go back and check your wiring, Output Map setting in the receiver, and Betaflight configurations. Still nothing? Get some help over at IntoFPV.com!
To make sure Telemetry is working correctly, go to the Telemetry page in the radio, and select the option “Discover new sensors”, it should begin to pick up data from the flight controller including RxBt (drone battery voltage).
Here is a list of available Crossfire Telemetry data, and what each means. To name a few frequently used ones: RxBt = Battery voltage, RQly = Link Quality, RFMD = Update Rate.
Mounting Crossfire Receiver Antenna
If you have been using other radio systems, the first problem you are going to run into is mounting the unusually large receiver antenna. Learn about the different ways of mounting Crossfire antenna and their effects.
LQ and RSSI
LQ and RSSI are the two measurements of how good your radio signal is. I have a detail tutorial explaining how to read LQ and RSSI in Crossfire. In this tutorial I will also explain how to display them on your Betaflight OSD, and setup voice warning in your radio.
How many people can fly on Crossfire?
According to TBS, theoretically, up to 50 people can fly at the same time using Crossfire. Real life tests have shown when 12 people are flying at the same time, radio link quality becomes noticeably worse but still flyable, so TBS don’t recommend any more than that flying at the same time :)
- Mar 2018 – Guide created
- Jan 2019 – Updated product links and setup detail
- Dec 2019 – Added screenshots for Jumper T16
- Jun 2020 – Updated Agent X new version, Crossfire LUA script changed to Tools in OpenTX, added Micro TX V2
- Feb 2023 – Updated instructions and product links