R9 is FrSky’s long range RC system and has been initially released in late 2017 as competitor to TBS’ Crossfire (CRSF) system. The R9 system has now seen quite some iterations and seems to work fairly well, especially with the latest FLEX firmware.
FLEX is short for flexible - because it easily allows you to adjust the frequency you are transmitting on without the need to flash different firmware per region.
With a properly set up R9 system you can easily have a control link over a couple kilometers.
In this article you will learn a bit about the R9 system, how to flash the transmitter module and different ways of flashing the R9 receivers with firmware.
- Flashing the R9M module
- Flashing the R9 receiver
- Mounting the receiver
- Antenna placement
- Receiver setup
The R9 system operates in the 900MHz band. Which frequency is used exactly, depends on the region you are intending to run the system in.
The FCC version operates on 915MHz and the EU or LBT version operates on 868MHz. The transmitter modules and receivers are capable of operating on both frequencies and it is just a setting within OpenTX to chose which one to use (at least if you use the FLEX firmware).
If you are in the EU make sure that you are actually using the proper EU frequency of 868MHz, otherwise you are competing with GSM on 900MHz - a fight you will most likely not be able to win.
FrSky offers two different R9 modules, the R9M Lite intended to be used with the X-Lite transmitter and the R9M, a full featured, JR module bay sized version that can be used with the Taranis X9D, Taranis QX7 and the like. Both transmitter modules support all available R9 receivers. The following table shows the differences between the two module options:
|Max RF power||1W||100mW|
|Switchable RF power||10mW, 100mW, 500mW, 1W||No|
|External power||Yes - via XT30||No|
|Buy||with 900MHz antenna||with 900MHz antenna|
External power allows you to power the module via a dedicated XT30 port on the back from a 2S battery. This is optional but if you have a long day of flying in front of you this helps your receiver battery to not be drained as quickly.
Adaptive power allows the transmitter to automatically increase RF output power when needed. RSSI is being monitored and the transmission power is increased and decreased automatically depending on the needs. This helps to save battery power since you do not need to run the maximum output power all the time but still get the benefit of maximum output power when you need it.
Smart Port is used to flash the receivers from your OpenTX powered transmitter. The X-Lite comes with a dedicated Smart port, so there is no need to have another one on the module itself.
PPM mode is useful for transmitters that do not support OpenTX. The R9M thus provides DIP switches to set the RF output power in case you are using PPM mode. Further it also has a dedicated button to enable the bind mode of the module.
RS232 can be used for flashing if you can not flash via your transmitter and OpenTX, which is most likely the case when you use it in PPM mode.
During its lifetime R9 has seen a couple of different receivers. All receivers support a maximum of 16 channels, have SBUS output, S.Port telemetry and output RSSI via SBUS. Further all receivers support F.Port on the S.Port pin with the proper firmware.
When flashing the F.Port firmware, SBUS output will stop working and the receiver needs to be re-flashed with the non F.Port firmware to enable SBUS again.
|Feature||R9 MM||R9 Mini||R9 Slim+||R9 Slim||R9|
|RSSI via SBUS||Yes||Yes||No||No||No|
|Antenna connectors||1 IPEX||1 IPEX||2 IPEX||1 IPEX||2 MMCX|
The operating voltage of all receivers is 3.5 - 10V and they all draw 100mA @ 5V. I would recommend to power the receivers from a 5V BEC.
Technically you should only be using two of the receivers that are listed above, the R9 MM or the R9 Slim+. The R9 Slim+ is quite a bit larger than the R9 MM and you might want to use it in case receiver redundancy is important to you. Usually when flying quadcopters it is not and you should go with the R9 MM receiver simply because it is smaller and light weight.
There are different antennas for the TX and RX modules. Many people prefer the Super 8 antenna instead of the default one coming with the transmitter because of its higher gain.
The antennas exist in four different variants which can be identified by a color coded ribbon on the antenna or the lack thereof:
- No ribbon: First batch tuned to 900MHz with a range from 860MHz to 920MHz
- Red or blue ribbon: Two different batches, both being the FCC version tuned to 915MHz
- Yellow ribbon: EU version tuned to 868MHz
This color coding can be found on both, transmitter and receiver antennas.
Interestingly enough, banggood only seems to stock the first iteration of the Super 8 antenna, tuned to 900MHz. I picked mine up from a local store and it is the EU version with the yellow ribbon.
The receiver antennas on the other hand you can find in either the EU version or the first batch version tuned to 900MHz although the description mentions 915MHz, so you might actually get the proper tuned FCC version, the comments are not very clear about that, so it is bit of a gamble.
Does it matter? Technically you can use any antenna in any region, the exact tune will only matter in situations where you are pushing the system to its limits. I would argue, that in the EU you will lose your legal (25mW) video feed long before you will lose your control link, no matter the antenna.
I would still highly recommend to use the proper antennas for your region.
Depending on the transmitter module, there are different options regarding the firmware:
The FCC version of the firmware was the first that has ever been released. Soon after that FrSky released the LBT or EU version of the firmware. Read more about the differences between the FCC and LBT or EU version. Those are basically different firmware versions depending on where you are intending to fly your model. Use the EU or LBT version if you fly within the EU and use the FCC version everywhere else.
A year after that the FLEX firmware has been released, this version makes it really easy to switch between FCC und EU frequency, depending on region you are in. No re-flashing of firmware is required - you simply select the frequency from within your OpenTX menu.
Mid 2019 FrSky published the newest firmware, supporting the ACCESS protocol. Although it has a lot of great features this version is not yet ready for prime time (July 2019). There is still a lot of options missing in OpenTX itself.
I would highly recommend using the (non ACCESS) FLEX firmware.
Flashing the R9M module
Before flashing the external module or the receiver, I would recommend that you upgrade to the latest OpenTX version on your transmitter. Especially when using the Flex firmware, you will need a current version of OpenTX. Make sure you have the R9Flex option enabled when flashing the firmware.
As mentioned a couple of times, I would encourage everyone to flash the FLEX firmware. The FLEX firmware allows you to easily switch the frequency you want to use. Further it is the latest and most stable version of firmware for your R9 transmitter modules and receivers.
The process of flashing is the same, no matter which firmware version you decide to use, just keep in mind, that you have to use the same version on both, transmitter and all your receivers.
I will describe how to flash a R9M Lite module from the Taranis X-Lite, but the process is pretty much the same, no matter which Taranis (or for that matter OpenTX enabled transmitter) and R9M module you are using.
1. Acquire firmware
Go to the download page for your external module:
Scroll down do the FLEX FIRMWARE section and download the latest one available.
As of June 2019 it does not matter from which page you download - both downloads will contain two firmware files, one for the R9M Lite and one for the R9M module.
2. Copy firmware to SD card
Extract the firmware from the ZIP file to the FIRMWARE directory on the SD card of your transmitter: Since I will be flashing a R9M Lite module, I extract the file called R9M_Lite_FLEX.frk. If you want to flash a R9M module you will extract the file called R9M_FLEX.frk. You can of course extract both files and then choose at the time of flashing which one you want to use. I prefer to only keep firmware files on my transmitter that I am actually using - just to not confuse myself.
3. Flash the module
Before flashing the module, make sure that your transmitter is fully charged, you don’t want to lose power while flashing your module. Technically you should be able to recover an interrupted flash by simply flashing it again, but better avoid it if possible.
Attach the R9M module to your transmitter and power it on. Press to joystick to the left to access the Radio Setup menu. Navigate to the second page, the SD CARD screen. Scroll down and select the FIRMWARE folder by short pressing the joystick, select the firmware file for the R9M module and long press the joystick, chose Flash ext. module and confirm by pressing the joystick one more time.
You are now presented with a progress bar, writing the firmware will take about a minute, simply wait for the progress bar to finish.
Make sure to flash the external module, if you flash the internal module, it will stop working and you have to re-flash it with the proper firmware. Don’t panic, nothing will break permanently.
The firmware was successfully written when you are back in the SD-HC CARD menu and no error message was shown. During flashing, the LED on the module will go dark. Once finished the red LED will light up permanently.
Flashing the R9 Receiver
The R9 receivers can be flashed in two different ways, one way is to flash it by plugging it into your transmitter. The other way is to flash it via Betaflights serial pass-through.
Technically there is a third way if you use the ACCESS firmware, namely over the air. But since the ACCESS firmware is not yet ready for prime time I will not go into any details yet.
I will describe both ways here, but in my opinion the variant of flashing via transmitter is the easiest option, at least as long as you have not soldered your receiver to your flight controller yet.
To flash via pass-through you must have the S.Port pin connected - either in S.Port or F.Port mode and it has to already be working properly in Betaflight. This is why I recommend flashing the F.Port firmware, future updates can then be done via pass through - no need to de-solder anything.
1. Acquire firmware
Go to the download page for your receiver and download the latest Flex firmware in either the SBUS or F.Port version.
SBUS & S.Port vs. F.Port
You now have to decide if you want to use SBUS (optionally with S.Port) or F.Port version of the firmware.
The advantage of F.Port is, that you have only one wire for receiver and telemetry, the downside is, you need a free UART. You can not simply attach F.Port to the SBUS pin. If your flight controller has a dedicated S.Port pin, you can use that one with F.Port instead. If not you need to connect F.Port to a the TX pin of an unused UART.
Keep in mind that when using F.Port or S.Port on an F4 flight controller either your flight controller needs to have an inverted UART or you have to use the inverted signal pin on your receiver if one is available. I am using the R9 MM receiver here which has an inverted S.Port pin.
I will flash my R9 MM with the F.Port firmware which will disable SBUS. Since my flight controller is an F4, I will also have to use the inverted pin on my receiver to connect it to a TX pin of a free UART on my flight controller.
After extracting the zip you will end up with two folders, one containing the firmware for the R9 Mini and R9 MM they both use the same firmware. As mentioned above you just have to decide if you want the SBUS or F.Port version. The other folder contains the firmware for the R9 and the R9 Slim, for those there are two files each, one with the SBUS and one with the F.Port firmware.
2a. Flashing via Transmitter
This is the easiest and preferred variant. If you have an R-XSR receiver, chances are that you already have the pigtail needed for flashing. If you are intending on using the plug on the receiver now is a good time to solder it up. Be careful - the pinout is different on the R-XSR and the R9MM. Make sure that the wires in the plug match the pinout of the R9 MM.
If you are intending on direct soldering the receiver to your FC, simply temporary solder your servo connector to the pins on the receiver or even better use those handy hook probes. You need to connect GND, 5V and the signal wire to the S.Port pin. Double check your connection and make sure the signal wire is connected to the non inverted S.Port pin.
2a.1 Copy firmware to SD card
Since I am using the R9 MM receiver and want to use F.Port I will use the firmware file called R9_MINI_FLEX_Fport.frk from the R9Mini_R9MM_FLEX folder of the zip file I extracted in the previous step.
Copy the firmware file for your receiver and chosen protocol to the FIRMWARE directory on your Taranis SD card.
Double check that you use the right firmware file for your receiver. If something later on is not working as expected (for example that you can not bind), chances are high, that you flashed the wrong version. But do not worry, you can simply re-flash the receiver with the proper version.
2a.2 Connect receiver to transmitter
Power up your transmitter. Connect the servo pigtail to your receiver and transmitter, double check that you insert the servo connector the right way. On the Taranis X-Lite - GND is on the right side of the plug, VCC in the center and S.Port on the left side, when looking at your transmitter from the front.
2a.3 Flash firmware to receiver
Go to the Radio Setup Menu by long pressing the joystick to the left, navigate to page two enter the FIRMWARE folder. Select the proper firmware for your receiver and long press the joystick. Select Flash S.Port.
While the firmware is being written, the green LED on your receiver should be permanently on and the red LED should blink. Once done, the power to the receiver is cut and you are back in the FIRMWARE folder. That is it, your receiver is now ready to be used.
I would recommend you bind the receiver now that the bind button is still easily accessible.
2b. Flashing via pass-through
Unfortunately this will only work under Windows. There is no version for Mac or Linux available and I was not able to get the Windows version run through wine.
To be able to flash via pass through you have to make sure that your receiver is not powered via USB when you plug in the flight-controller. If your receiver powers on when you plug in the USB cable to the flight controller you need to move the power wires to a different 5V pad that is not powered from USB.
Further you have to make sure that smart port (S.Port) is set up correctly, flashing happens through smart port. So if your receiver is set up to use SBUS, this is not going to work. I highly recommend you set up S.Port first and make sure it is working before attempting to flash via pass through.
2b.1 Get firmware flash tool
Download the FrSky STK tool from the Tool-FrSky update sport section and extract it.
2b.2 Set up pass-through
In Betaflight take note which serial port is being used for your flight controller, you will need this in the next step. enable pass-through mode for the UART where your receiver is connected:
In my case the receiver is connected to UART 6 via F.Port, numbering of the UARTs technically starts with 0 so you need to deduct one from the UART that Betaflight is showing you in order to address it correctly via CLI. Go to the CLI and type:
serialpassthrough 5 57600
This command enables serial pass-through on UART 6 with a baud rate of 57600.
Close the Beetaflight configurator but do not power cycle the flight-controller.
2b.3 Flashing the firmware
Make sure to remove the props from your motors, you will later have to plug in the LiPo, you do not want to have the props on while flashing. Nothing bad should happen, but generally remove the props when working on the bench and attaching a LiPo - better save than sorry.
Run the Frsky updater you extracted previously. From port choose the serial port that you were using in Betaflight, in my case this is COM3.
Click FILE and select the firmware file you want to flash. In the flashing utility the status text on the lower left will now change to finding device.. and the left red indicators will start blinking green. This is the sign that the tool is ready to flash the firmware.
Plug in your LiPo and power up the quadcopter, this should give power to the receiver the status should change, showing software and hardware version. Now you can press the Download button, which will flash the firmware to your receiver.
Both red indicators will now start blinking green and you should see the progress bar advance. It will take a couple of minutes until the firmware has been flashed.
Click End to exit the flashing utility and you are ready to bind.
To start the binding process select the model you want to bind on your transmitter and go to the Setup page, scroll down to Internal RF and set Mode to OFF. Set the mode of External RF to R9M, this will now allow you to set the operating frequency - 868MHz if you are in the EU and 915MHz everywhere else.
If you are using the R9M module, not the Lite, you can now set RF Power. On the R9M Lite this is set to the maximum of 100mW and can not be changed with the latest Flex firmware.
If you change frequency or RF power OpenTX will tell you to re-bind your receiver, but this is not necessary - if you bound before, you should still be bound.
Once this setup is done go so the RxNum entry and select Bnd. Your transmitter will now start beeping to indicate that it is in bind mode.
Power up the receiver while holding the bind button. Once the red LED on the receiver starts blinking the bind procedure is complete. The green LED should be on permanently.
Exit bind mode on your transmitter and power cycle the receiver. If binding was successful the red LED on the receiver will be off and the green LED will be on.
Your receiver is now ready to be used.
Mounting the receiver
I would recommend mounting the receiver in such a way, that the bind button is still easily accessible - you have to re-bind once you change power or frequency settings on your transmitter or after updating the firmware on the receiver.
I like to heat-shrink the receiver and antenna with transparent heat-shrink. I then mount the receiver on the frame in such a way that I can poke the bind button through a hole in the frame.
There are two different styles of receiver antennas - the first kind comes with the receiver and is basically a wire with two ends. The other one is shaped like a T, but is internally exactly the same as the wires, it just has better protection.
Optimally you would mount the antenna vertically on your quadcopter, but since this is not really feasible, because you would crush one piece of the antenna when landing, many people like to mount it in an L shape - in case of the wire antenna or to one of the arms in case of the T shaped antenna.
However you chose to mount it, make sure to keep the ends of the antennas as far away from any carbon as possible.
If you want to learn how to connect your receiver to the flight controller and set it up with Betaflight, check out my other articles on this topic:
Q: RSSI is showing wrong in the OSD - it shows 99 on the transmitter but only 49 in the OSD. A: This seems to be an issue with the R9 MM in F.Port mode, to fix this you have to adjust RSSI scaling. Open the CLI and type:
set rssi_scale = 200 save
Chris is a Vienna based software developer. In his spare time he enjoys reviewing tech gear, ripping quads of all sizes and making stuff.
Learn more about Chris, the gear he uses and follow him on social media:
Also check out
Serial Receiver SetupSerial Receiver Setup
Betaflight ModesBetaflight Modes
X-Lite modulesX-Lite modules
Taranis X-Lite ProTaranis X-Lite Pro