RemoteFM1
That lets you try firmware changes without reflashing the unit, and run things the FM-1's own CPU and memory couldn't hold.
- Custom firmware
- Stable
- Medium brick risk
- Reversible
This project hasn't been claimed by its maintainer yet, so its details come from the community. Is it yours? Claim it
Released 2026-10-28, built with ./build.sh --release 0.2.3 (and --no-ble for the USB-only package). It replaces
0.2.2. Both packages install as FM-1_52000203.
| Package | sha256 |
|---|---|
remote-0.2.3.fwsc, USB + Bluetooth MIDI (the default) | 211f06f63e8ca09de2812c017db9bb229713ce8e5a102eba887031551b2b403c |
remote-usb-0.2.3.fwsc, USB only | e94574ee081dac596479a3de4ec0fd2aa0cea109a2692551b07037ad8eb17e4e |
What changed from 0.2.2
- Recording from the FM-1 over USB works. In 0.2.1 and 0.2.2 a computer recording the FM-1's USB audio input got
mostly silence (82-85 % zeros, 2-15 ms of sound every ~29 ms). felucca-bsp's stall check (the host stopped
reading for over 20 ms) counted USB polls as if only its 2 kHz timer polled; RemoteFM1 also polls from its main
loop, 100,000-225,000 times a second, so the stream was dropped every millisecond. It now counts milliseconds
(felucca-bsp patch 0003, hook
FELUCCA_USB_MS). - Playing to the FM-1 over USB, Bluetooth, the screen and the protocol are unchanged.
Testing
On an FM-1 on 2026-10-28, with a Mac: a 1503 Hz tone played to the FM-1's USB audio output and recorded back from its input. 0.2.2: 15 % of the samples sound, 234 gaps over 1 ms in 7 s. 0.2.3: continuous, no gap over 1 ms, every 20 ms window a clean sine. A RemoteFM1 session (HELLO) over USB-MIDI answered as before.
🤖 Generated with Claude Code
Before you start
- How hard is it?
- EasyCopy a file or use a web page. No extra software.
- What you need
- Comfort with the command line
- A computer
- Can it break my device?
- Small chance of trouble, with a way to recover.
- Can I undo it?
- Yes. You can go back to the official software.
Did it work for you?
Did RemoteFM1 v0.2.3 work on your M-VAVE FM-1?
No reports yet for v0.2.3.
One-tap reports from owners. Bricked reports are checked before they count.
Compatibility
Devices: M-VAVE FM-1.
No compatibility information yet.
Getting started
From the project's README ("Using it"):
Install RemoteFM1 on the FM-1 with its web installer (USB + Bluetooth MIDI, or USB only) or any Felucca-family installer, for example python3 tools/fm1install.py web/installer/firmware/remote-0.2.3.fwsc (USB only: remote-usb-0.2.3.fwsc). 0.2 answers installers as itself, FM-152XXYYZZ (release X.Y.Z; fm1-base's scheme), on the USB device "FM-1"; 0.1 answered as the official V15 (FM-1015).
Without a host, the screen reads REMOTE FM1 / WAITING FOR HOST, with USB's state, the Bluetooth name it advertises ("FM-1 1F2D") and whether a computer is connected, and the battery; the key lights glow dim.
Run a firmware on the Mac:
cmake -S host -B host/build -DCMAKEBUILDTYPE=Release && cmake --build host/build -j host/build/fm1remote --device --port FM-1 --stats # ChoralRoot host/build/fm1remote --device --port FM-1 --stats --core felucca # or melodee host/build/fm1remote --device --port FM-1 --stats --pattern # test screens only, no firmware
- The sound plays on the Mac.
- Each firmware's flash image is kept in ~/Library/Application Support/fm1remote/.
- Ctrl-C ends the session, and the FM-1 goes back to its waiting screen.
- fm1remote expects the FM1VST checkout next to this one (cores in FM1VST/build/cores).
To leave RemoteFM1, install the next firmware with its own installer, as you would over V15. …
Risk and recovery
- Brick risk
- Medium
- Reversible
- Yes
- Requires opening the device
- No
From the project's README ("Safety"):
From 0.2, RemoteFM1 is an fm1-base firmware, with fm1-base's and felucca-bsp's safeguards: the boot guard (two failed starts: safe mode, USB on), the crash screen and record, the watchdog, the USB soft key into the chip's update mode, REC held at power-on for that same mode (also in safe mode; 0.1's OCT- went to its own loader), felucca-bsp's update loader (ota-FM-1900, writing the app area only), and the installers' way back to M-VAVE's firmware. A package whose image reaches past the app area (M-VAVE's V16, Baud Girl's) is refused by RemoteFM1's installers before anything is sent.
What it writes in flash: the Bluetooth build keeps the radio's address (and any pairing) in two 4 KiB sectors at 0xF2000..0xF3FFF, written at its first Bluetooth start (free in ChoralRoot's map and the stock firmware's); OCT- + OCT+ held at power-on (the panel calibration) writes 0xFC000..0xFDFFF. Nothing else: the data an earlier firmware left elsewhere stays where it is. Every update stages its loader at 0xE0000..0xE4FFF, as 0.1's did. docs/SAFETY.md is 0.1's (TransitFM1's) design, kept for its history.
Installing firmware is at your own risk. Keep the FM-1 Transporter or MvaveFM1Unbricker at hand.
Releases
| Version | Name | Released |
|---|---|---|
| v0.2.3 | RemoteFM1 0.2.3Latest | 29 October 2026 |
| v0.2.2 | RemoteFM1 0.2.2 | 28 October 2026 |
| v0.2.1 | RemoteFM1 0.2.1 | 27 October 2026 |
Credits, license and support
- License
- GPL-3.0