[!NOTE] Are you here to try and fix an FM-1 but don't have a previous backup? Generate a stock v15 recovery snapshot.
FM-1 Backup & Restore for Android
Back up and restore your M-VAVE FM-1 from an Android phone.
Back up your M-VAVE FM-1 and restore it whenever you need to from your Android phone. Each backup is a complete flash snapshot you can return to at any point; the firmware, settings, projects, songs, and other data, stored exactly as they were when you saved it. Restore puts that data back byte for byte, leaving the protected bootloader completely untouched.
Support this project
Help support the work that goes into creating and maintaining my projects and sponsor me via GitHub Sponsors.
Download
The latest version can be downloaded from the link below or from the releases section on the repo.
Screenshots
Use cases
Keep a factory-fresh backup
Keep a full-flash snapshot from when your FM-1 first arrives, so you can always return to a byte for byte factory state at the tap of a button.
Save songs and projects
Back up your songs, projects and patches together in one complete flash snapshot and return to it any any time.
Disaster recovery
Restore a known-good backup if an experiment or a change leaves the FM-1 in a state you don't want.
Firmware hopping
Switch between saved firmware backups, or restore your own clean base before installing new firmware, without worrying about settings or data from the last firmware being strewn across your FM-1.
Tinkering with your FM-1
You just like playing with the new shiny thing for your FM-1
Use at your own risk
Flashing or restoring your device carries an inherent risk of data loss or leaving it unusable. I've tested this tool over 100 times with writes and restores across different firmwares and versions, but I can't guarantee it's free of issues or will work with every phone.
This tool is provided as-is. Use it at your own risk, and I accept no responsibility for damage, data loss or other problems caused by its use.
Using the app
Requirements
You'll need Android 8 or later and a data-capable USB OTG cable (OTG?! If you've got a USBC cable that works with data, and a phone with a USBC port, you're good).
First, a bit of house-keeping; when you first launch the app it will require you to turn off background optimisation for the app on your phone, this is labelled as allowing background transfers. This is critical as it means the app can continue a backup or restore while the phone's screen is off, or if you switch apps.
It won't let you continue unless you toggle the setting.
Making a backup
Connect your FM-1 and tap Connect to FM-1. The app will restart it into recovery mode and ask for USB access. Once it's ready, tap Backup FM-1.
The app reads the full 1 MiB flash twice and checks the saved copy before adding it to your backup library. You can rename backups, pin the ones you want to keep close, and export a copy through the menu.
Keep an exported copy somewhere safe. Backups stored only inside the app data for convenience and are lost if you uninstall it or clear its data. If you want to keep a copy somewhere else export it via the settings in the app.
Restoring
Choose Restore from a saved backup's menu, or Import from file in the top menu to add a verified .bin backup to your library. The imported backup is not restored automatically.
Read the confirmation carefully: restoring replaces the FM-1's firmware, settings and patches (everything) outside the protected bootloader region.
Keep the USB cable and power connected until the restore has finished and been verified. Restores cannot be cancelled once started, and an interrupted restore can leave the FM-1 unable to boot normally.
Create a stock v15 recovery snapshot
Didn't manage to take a backup of your device before you started flashing custom firmware?
A fresh install of the app will nudge new users to create a recovery snapshot, alternatively you can choose Create a recovery snapshot from the top menu.
Create a recovery snapshot |
The app then downloads and verifies the official v15 firmware update directly from M-VAVE, reconstructs a clean stock v15 flash, and adds the FM-1_015 RECOVERY backup to your library.
Once FM-1_015 RECOVERY is available in your backups, opening the menu on the backup and selecting restore will take your FM-1 back to a clean slate.
How's this work?
It takes all the regions of data that are available in the v15 .fwsc update and creates a complete flash snapshot using them. Any regions of data that are missing from the .fwsc (settings, BTIF, etc) are filled withFFand get automatically populated when the FM-1 boots.
Emergency bootloader recovery
Still having weird issues with your device even after stock recovery?
It may be that there are issues with your bootloader, as this is the only region that's not touched by the restore feature of this app.
You can verify the state of your bootloader from the Diagnostics menu.
After Verify bootloader finishes, its result dialog offers Emergency restore if your bootloader differs from a known stock image or custom bootloader. A recognised custom bootloader with an unmatched hash also qualifies; an unknown hash alone does not mean that the bootloader is corrupt.
Emergency Recover downloads the official v15 firmware from M-VAVE's repository and extracts the bootloader before offering to Proceed at my own risk. Unlike an ordinary restore, this explicitly replaces only the first 16 KiB of your FM-1's flash. Firmware, projects and settings outside that area are untouched.
[!WARNING] Interrupted or incorrect bootloader programming can prevent booting or recovery via SysEx and may require additional hardware to repair.
Themes
The app is built with Material 3 Expressive, with support for your Material You dynamic colors alongside the built-in FM-1 styled themes.
FM-1 Themes
Want a fixed look to match your synth? Choose FM-1 Themes in Settings and pick one of the built-in FM-1 styled palettes. The app uses the Black palette by default.
Choose App icon in Settings to pick an icon independently of your theme. Applying an icon closes the app.
Black |
Orange |
Purple |
Green |
Blue |
Gray |
Yes, orange is pretty ick, but so's the device colour - sorry.
Material You
Choose Material You in Settings to use your device's colors throughout the app.
Material You |
App updates and privacy
The app checks the latest stable GitHub Release when opened, at most once every 24 hours. You can also check manually in Settings > App updates. Update checks contact GitHub directly and there's no additional third party tracking or analytics within the app.
What next?
What would you like to see next? More themes? Firmware flashing? Hassle me on social media or open an issue.
Troubleshooting
FM-1 not recognised
Don't worry if the app doesn't recognise your FM-1 when you plug it into your phone. You might be using firmware that changes its USB vendor and product IDs (VID/PID) to a combination I haven't accounted for yet.
Get in touch or open an issue and let me know which firmware you're using. I'll help get it recognised.
Sponsors
If you find the app useful, please consider supporting the work that goes into creating and maintaining my projects via GitHub Sponsors or buy me a coffee on Ko-fi.
Author
Chris Johnson - defaced.dev - @defaced.dev (Bluesky)
What would you like to see next? More themes? Firmware flashing? Hassle me on social media or open an issue.
License
This project is licensed under the MIT License.