Firmware Hero
0

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

Source code

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.
Get itOpens github.com

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.

Read the full instructions

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 …

Read the full instructions

Credits, license and support

License
Unlicense