FM1 Recovery
Recover an FM1 after an interrupted firmware update using a Flipper Zero, a USB data cable, and a Windows PC.
- Custom firmware
- Stable
- Low brick risk
This project hasn't been claimed by its maintainer yet, so its details come from the community. Is it yours? Claim it
Before you start
- How hard is it?
- HardUses the command line or developer tools.
- What you need
- A USB or MIDI cable
- Comfort with the command line
- A computer
- Can it break my device?
- Very unlikely to break anything.
- Can I undo it?
- The project doesn't say. Assume you can't.
Did it work for you?
Did FM1 Recovery work on your M-VAVE FM-1?
No reports yet.
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 ("Build the Flipper app"):
From this directory:
python -m pip install ufbt ufbt update --hw-target=f7 --url=https://github.com/Next-Flip/Momentum-Firmware/releases/download/mntm-012/flipper-z-f7-sdk-mntm-012.zip ufbt
Use a matching SDK for your installed Flipper firmware. Copy dist/fm1bootkey.fap to /ext/apps/Tools/fm1bootkey.fap with qFlipper. Open FM1 Recovery in Tools.
Risk and recovery
- Brick risk
- Low
- Requires opening the device
- No
From the project's README ("Restore"):
Any compatible FM1 .fwsc firmware package is accepted, including stock, upstream SLOOP and custom builds. There is no version or SHA-256 allowlist. The tool checks package integrity, FM1 product identity, AC791N chip family, flash layout and encryption key. It preserves the existing bootloader and device data. Firmware requiring a different flash layout or bootloader is not compatible with this application-only recovery path.
The normal web updater requires working firmware to serve the USB-MIDI update protocol. ROM recovery is a SCSI/bulk interface and cannot use that updater directly. After restoring working firmware, normal web updates work again. A browser-based ROM recovery tool would need a separate implementation and USB access/driver support; it is not part of this project.
First produce an offline plan:
python tools/pcrestore.py --device '\.\PHYSICALDRIVE1' --reference .local/jl-uboot-tool --dependencies .local/python --backup .local/my-backup --package C:\path\sloop-2.5-Merthsoft.4.fwsc
This is a dry run and sends no device commands. Inspect restore.log. To perform the restore from a second administrator PowerShell, repeat that command with --write --keeper-pid using the PID of the still-running pcbackup.py process. The restorer takes over its keepalive, compares a fresh full read to the backups, changes only differing sectors in 0x4000..0x93000, verifies each sector and the final full image, then restarts …
Credits, license and support
- License
- Unlicense