FM-1 Transporter
Firmware for a Seeed XIAO RP2040 wired to the FM-1's USB lines that forces the chip into its ROM download mode, then reads and writes the flash from a Mac, so it can recover a unit that no longer boots.
Brick risk. Flashing this carries a known, documented risk of damaging the device.
- Distribution
- Build from source yourself
- License notes
- Includes Pico-PIO-USB (MIT) and routines ported from jl-uboot-tool (MIT).
- Source
- github.com https://github.com/kurogedelic/FM-1-transporter
- flasher
- loader
- research
Description
The RP2040 sends the JieLi USB_KEY pattern at power-on to get the AC791N into its built-in UBOOT mode, or asks stock V15 to enter it over USB-MIDI, then acts as a USB host to the FM-1. A Python script on the Mac prints chip info, dumps the whole 1 MiB flash in a few seconds and writes only the 4 KiB sectors that differ, checking each one. The firmware refuses writes outside 0x4000 to 0x93000, so the bootloader area and device data are never touched, and no erase-all or chip-key write exists. It can also load and run code in RAM for research. Three wires go to the FM-1 (D+, D-, GND) and VBUS stays unconnected. It is built from source and needs the WL82 loader from jl-uboot-tool, which the repository does not include.
Install notes
Build with pico-sdk 2.2.0, an ARM GCC toolchain, CMake and picotool, then load the UF2 onto a Seeed XIAO RP2040; other RP2040 boards are untested and the Waveshare RP2350-USB-A is not supported. Wire GP0 (D6) to D+, GP1 (D7) to D- and GND to GND, nothing to VBUS. Take a dump before writing; write needs the --write flag, and without it only checks.
Version history
| Version | Date | Notes |
|---|---|---|
| main @ a632d92 | 2026-10-01 | No tagged releases; this is the latest commit. |