Skip to content

Frsky R9



The R9Mini/R9MM, R9MX and R9Slim+ require ExpressLRS Bootloaders to be flashed before the ExpressLRS firmware. The R9Slim doesn't have a bootloader and first time flash requires STLink.

Download the bootloader .frk file for your respective receiver. The files are as follows:

Copy the relevant file to your handset's SD card (You can put it inside /FIRMWARE folder for easy access).

Wire the receiver to your radio's Smart Port, as shown:

BL Flashing

Next, flash the .frk via the S.port flashing option in OpenTX or EdgeTX ⚡ (It helps if the External RF module is set to PPM mode.)

  • Navigate in OpenTX to the TOOLS menu (hold SYS button)
  • Press Page once to the SD-HC CARD page, then select the FIRMWARE folder
  • Flash the frk file by holding OK/Enter and selecting "Flash external module"

Once done, unplug the receiver and your bootloader is flashed.


You only need to flash the Bootloader ONCE. After it's flashed into the receiver, you don't have to reflash it in every update.

R9Slim doesn't have a bootloader. As such, you need to flash it first via FTDI.

Troubleshooting No Sync

  • Setting the External RF module to PPM mode helps.
  • Check if the receiver has its LED lit up or if it's powered.
  • Check whether you've set your Max Bauds to 115200, especially if you're using a QX7 or an X9D (on OneBit Firmwares or EdgeTX). If so, put it back to 400k and try again.

Wiring up your receiver

FC Wiring

Wiring up receiver


This will be the same wiring you'll use for flying and the subsequent firmware updates (via Passthrough). Forget the factory wiring guide!

R9Slim need to be flashed via STLink first before you wire it up to your Flight Controller.

Configuring your Flight Controller

To configure your flight controller properly, please go through Configure FC page. These settings apply on INAV, Betaflight and other flight controller software.

Ports Tab should be setup so that Serial RX is on the UART where you have soldered the receiver.

Receiver protocol is CRSF with serialrx_inverted = off and serialrx_halfduplex = off.

The next step will not be able to proceed properly and you'll have issues later if any of these are set differently. Once you have configured your Flight Controller software, close its Configurator and unplug-replug the USB cable from the FC or your computer. This will refresh the connection and you'll be ensured that the port is not busy.

Flashing via Passthrough (works with Betaflight, INAV)

  • Targets:

    • Frsky_RX_R9MM_R9MINI_via_BetaflightPassthrough
    • Frsky_RX_R9MX_via_BetaflightPassthrough
    • Frsky_RX_R9SLIM_via_BetaflightPassthrough
    • Frsky_RX_R9SLIMPLUS_via_BetaflightPassthrough
    • Frsky_RX_R9SLIMPLUS_OTA_via_BetaflightPassthrough
  • Device Category:

    • Frsky R9
  • Device:

    • Frsky RX R9MM R9MINI
    • Frsky RX R9MX
    • Frsky RX R9SLIM (If already flashed via STLink)
    • Frsky RX R9SLIMPLUS

via Passthrough

Flashing via Passthrough

Make sure the correct Bootloader has been flashed to the receiver prior to wiring it up to your flight controller. Using the wiring guide above, find a free, uninverted UART in your FC. You can use your FC's wiring guide for a Crossfire or Ghost receiver.

Set up your Flight Controller for ExpressLRS. Make sure you have set Serial RX to the right UART (RX & TX Pair) under the Ports Tab. Follow the FC Configuration Guide.

Once your Flight Controller is configured, you should disconnect from Betaflight or INAV Configurator. Close your FC Configurator and unplug the USB to refresh the connection.

Plug in the Flight Controller to USB. Did your receiver powered up too (with both LEDs lit)? If so, disconnect USB, hold the bind button on your receiver, and reconnect to USB. The LED should start alternating between the Green and Red LEDs. Once it's alternating, you can then let go of the Bind Button.

If your receiver didn't get powered from USB, have a lipo ready and continue with the next steps. On the ExpressLRS Configurator, with your Firmware Options set, click on Build & Flash. Like on the TX module, it will take a while on the first time. Watch out for the Passthrough Init stage. This stage will check your FC Configuration for the Serial RX UART (Software Inversion via "set serialrx_inverted" and Half Duplex mode via "set serialrx_halfduplex" will be checked; both should be off.)

Build & Flash

Once Retry... lines appear, connect a LiPo if your receiver isn't powered by the USB (i.e. power up your FC and receiver). On subsequent flash, you can have the LiPo plugged in and receiver powered up from the start prior to connecting the USB.

Wait for this process to finish. It's done once the "Success" prompt is shown.


R9Slim requires this as the first flashing method. This is irreversible, meaning you cannot put back Frsky firmware.

  • Targets:

    • Frsky_RX_R9MM_R9MINI_via_STLINK
    • Frsky_RX_R9MX_via_STLINK
    • Frsky_RX_R9SLIM_via_STLINK
    • Frsky_RX_R9SLIMPLUS_via_STLINK
  • Device Category:

    • Frsky R9
  • Device:

    • Frsky RX R9MM R9MINI
    • Frsky RX R9MX
    • Frsky RX R9SLIM
    • Frsky RX R9SLIMPLUS

via STLink

Flashing via STLink


This method is irreversible. It will remove the ability to reflash back to Frsky firmware. Make sure your STLink dongle is properly recognized by your System as such (Drivers are installed, etc.).

Wire up the Receiver to your STLink using 3v3, GND, CLK and DIO.

r9mm_mini pinout


r9mx STLink connection


r9slim STLINK connection


Disable 'Readout Protection'. To do this download the ST-LINK Utility and follow this quick how to video. Or alternatively under linux you can use OpenOCD.

How to video:

After doing so, Disconnect from STLink Utility.

Using the correct target specific for your receiver, set your Firmware Options and hit Build & Flash on the ExpressLRS Configurator.

Build & Flash

Once done, wire your receiver to your Flight Controller. Passthrough flashing can now be used for updating the receiver.