Siyi FM30 High-Frequency Head Firmware Update
I. FM30 Series Update
Method 1: Flashing via STLink
Important
The only method for flashing FM30 series modules is to use STLINK. Fortunately, these pin locations are very accessible on the TX module, making connection easy. This is a one-way process, and after flashing, it is not possible to restore to the original factory firmware.

- Open the TX module by removing the case with a screwdriver to access the circuit board.
- Connect wires to the
SWDIO,SWCLK,NRST, andGNDpins, as shown in the red area in the image above. Connect5Vto the VCC pin, do not connect to the 3.3V pin! - Connect the other end to the STLINK programmer.
- Flash using the target firmware FM30_TX_via_STLINK.
Download firmware from the ExpressLRS Web Flasher website:

- After flashing is complete, you can keep the
STLINKdevice connected while testing if the firmware is working correctly, but disconnect the USB connection before inserting the module into the RC transmitter for testing. - Ensure the RC transmitter's External Module Type is set to
CRSF. For other methods to confirm the module has been flashed and is ready to fly, see the general troubleshooting section.
Method 2: Flashing via DFU
Updating the TX module is much simpler and can be done throughDFUmode without usingSTLINK. - Remove the module from the RC transmitter. ⚠️ Do not connect USB while the TX module is inserted into the transmitter, as there are no protective measures to prevent USB power from being directly connected to the transmitter.
- Hold down the button labeled "Bind" and insert USB. At this point, a "ExpressLRS DFU bootloader" device should appear in Windows Device Manager. If it does not appear, you may need to install the STM32 DFU driver.
- Flash using the target FM30_TX_via_DFU.
- Note that although the process always reports failure, this typically occurs after flashing, so check if the "File downloaded successfully" message is displayed, rather than the error message that appears afterward.

II. Siyi FR Mini Receiver as VTX
The RX module uses the same RF components as the TX module, making it a candidate for a small ~200mW TX module. Connecting to a JR module bay only requires 3 pins (JR pins arranged from top to bottom):
Method 1: Flashing via STLink
The flashing process is similar to the steps for the FM30 TX module above, but using these pins on the receiver.
For the initial flash, use this firmware: FM30_RX_via_STLINK.
Download firmware from the ExpressLRS Web Flasher website:

Method 2: Updating via UART
The update is performed using the firmware flashing tool built into OpenTX.
- Use Configurator to build the firmware and select the target. The build process will generate the file: FM30_RX_MINI_AS_TX_via_UARTfirmware.elrs.
- Copy this file to the FIRMWARE/ directory on the RC transmitter's SD card.
- Flash the firmware to the module using OpenTX:
- Hold the MENU/SYS key on the RC transmitter to open the system menu.
- Press the
PAGEkey to navigate to the SD Card Browser page. - Scroll down to the
FIRMWAREdirectory and pressENTER. - Find and long-press the
ENTERkey to open the context menu. - Select Flash Ext. ELRS from the menu.
III. Q&A
Q1: Unable to connect to target device?
If flashing fails and displays "Unable to connect to target device" (instead of "No STLINK found!"), it's likely that your STLINK clone is not connected to the RST pin, but you can manually trigger the required reset through some additional steps.
The reason for this is that SIYI has disabled "Software Reset" to prevent you from stealing their firmware binary files.
A1:
- Verify wiring: Ensure the TX board is powered on (LED is lit).
- Use STM32CubeProgrammer or STLINK GUI to connect, following the next steps.
Steps: Before pressing the CONNECT button, short the RST pin of the TX module to GND. After pressingCONNECT, quickly remove the wire from the GND pad. - Check if the connection was successful: If successful, the GUI will prompt you that Read Protection is enabled on this board and ask you to disable read protection. Follow the instructions to do so.
Q2: Flash loader runtime error?
Before using PlatformIO utilities to flashTXandRXon Linux, you must first disable the "Read Protection" (RDP) of the STM32 chip, which was set bySIYIat the factory to make flashing more difficult.
Flashing tools on Windows usually automatically disable this protection, but Linux tools do not. If you don't disable read protection, you'll encounter the following incomprehensible error when flashing: st-flash.
A2:
Use STM32CubeProgrammer on Linux to disableRDP, or use a Windows virtual machine/computer, useGUIorCLIof ST-LINK.exe to clearRDP. - Click the "Connect" button to connect to the ST-LINK device. You may see a popup error Error: Data read failed, which is normal. If it prompts that it cannot connect or the device is not found, you need to resolve this issue first.
- Next, click the "OB" button on the left,
- Expand the "Read Out Protection" section.
- Select RDP = "AA".
- Click the "Apply" button at the bottom.
- You should see a message saying "Option bytes successfully programmed". If successful, you can proceed. Click the "Disconnect" button at the top, then flash via PlatformIO.
If you have firmware binary files and know their target addresses, you can also flash them directly through this GUI.
———— This article is referenced from ExpressLRS Getting Started: https://www.expresslrs.org/quick-start/transmitters/siyifm30/#flash-loader-run-error**