MUTABLE DREAMS 1.2 — UPDATE AND RECOVERY GUIDE
Release 1.2, approved 27 October 2026.
Read DEVICE-TEST-REPORT-1.2.txt for exact-build evidence and remaining limits.

BEFORE YOU START
Connect only the intended FM-1. Disconnect other FM-1 units, including a unit
running Syntherella. Close other MIDI editors and stop playback. Keep power
and USB connected throughout the update and the final identity check.

ON MUTABLE DREAMS 1.1 OR 1.2
1. Export a live patch JSON for unsaved edits. A bank backup does not implicitly
   save the live sound. Press SAVE first if you want it as the startup project.
2. Export the complete .mddb bank backup using the matching version's editor.
   This contains the saved project, preferences, 16 User Biomes and 64 sounds.
3. Keep the backup, live JSON and previous firmware together, privately.
4. Disconnect the editor before opening Mutable-Dreams-1.2-Install.html.
5. Choose Install. Wait for the successful restart confirmation. The new
   identity is FM-1_710010200; the MIDI name is Mutable Dreams FM-1. macOS may
   retain an older label. Do not guess between identically named devices.

EARLIER MUTABLE DREAMS 1.0
Version 1.0 has one saved personal Biome and no live Web MIDI editor or .mddb
bank protocol. Stop and SAVE on the device before updating. Use the original
release's tools/project_backup.py for a separate read-only legacy backup:
  python3 tools/project_backup.py --port 'X0X FM-1' my-1.0-backup
The quoted name is the historical port name; select the actual intended unit.
Keep both live and saved JSON/raw files and the original firmware. Dependencies
for that legacy tool include mido, python-rtmidi, numpy and sounddevice.
The previously qualified hardware path is 1.0 -> published 1.1. Use that route
first, then make the 1.1 .mddb/JSON backup before installing 1.2.
Legacy imports into 1.2 are regression-tested; that is not a claim that a fresh
direct 1.0 -> this exact 1.2 hardware roundtrip has been performed.

INSTALL FROM ORIGINAL STOCK V15
Open Mutable-Dreams-1.2-Install.html in a browser with Web MIDI SysEx support
(Chrome or Edge). Grant MIDI access, choose Install and wait until completion.
Stock V15 starts with identity FM-1_015 and normally the MIDI port FM-1.
Only the intended device should be connected. Arbitrary third-party firmware
update paths have not been qualified.

RETURN TO ORIGINAL V15
Returning to stock can erase User Banks and preferences. A firmware file does
not include your personal banks. Back them up before returning to stock.
Manufacturer reference used for the verified roundtrip:
  https://yms-file-store.oss-cn-hongkong.aliyuncs.com/software/firmware/FM-1.fwsc
Required size: 699956 bytes. Required identity: FM-1_015.
Required SHA-256:
  db1642b2b6fa5c2cccb11ffd13878068bb28601678d3644049f99dc40e7edb8a
The manufacturer may replace that URL's contents. Check the hash; do not rely
on the filename. The browser installer rejects a different stock file.
Choose the verified V15 file in the installer and use its return-to-stock
button. Wait for the confirmed FM-1_015 restart.

RESTORE YOUR MUTABLE DREAMS DATA
1. Reinstall the matching Mutable Dreams package and wait for restart.
2. Stop transport, select internal clock, then connect its live editor.
3. Restore your .mddb. This replaces all saved objects and clears slots that
   were empty in the backup. Read the displayed scope before proceeding.
4. At RESTORE FROM USB?, press SEL physically on the FM-1. HOME or timeout
   cancels. The browser deliberately cannot supply this confirmation.
5. Check the restored banks and preferences. Import a separately exported
   unsaved live JSON last. SAVE explicitly if you want to keep that live edit.

SOURCE-BUNDLE COMMAND-LINE ALTERNATIVES
Python 3 with mido and python-rtmidi; only the intended FM-1 connected:
  python3 base/tools/fm1_install.py --info
  python3 base/tools/fm1_install.py --yes Mutable-Dreams-1.2.0.fwsc
  python3 tools/dreams_backup.py backup my-banks.mddb --port 'Mutable Dreams FM-1'
  python3 tools/dreams_backup.py info my-banks.mddb
  python3 tools/dreams_backup.py restore my-banks.mddb --port 'Mutable Dreams FM-1'
For the exact verified manufacturer package only:
  python3 base/tools/fm1_install.py --force --yes FM-1-V15.fwsc
Do not use --force for Mutable Dreams.

LIMITS
Backups exclude calibration, transient granular audio and session MIDI state;
they are not full-flash dumps. If a restore connection is lost after SEL, read
the device before retrying: the commit may have completed. Do not intentionally
interrupt an update. This test does not claim emergency ROM-rescue coverage.
Version 1.2 patches are newer than 1.1: keep a pre-update 1.1 backup if you want
to downgrade. Never force a newer-format bank image into older firmware.
