ChoralRoot 0.29.1 is 0.29's firmware for the newer FM-1s too: the FM-1s sold from late 2026, the ones with the
M-VAVE logo printed on the front, carry a different flash chip, and ChoralRoot up to 0.29 did not know it. On such a
unit ChoralRoot started and played, but kept nothing (no settings, no sounds, no loops, Options > Version read no unit ID) and refused every update, so the unit was stuck until the official firmware was written back over its ROM boot.
0.29.1 knows the chip. Nothing else changes: the sound, the features and the way your settings, sounds, loops and
favorites are stored are 0.29's, and only the version line reads 0.29.1. 0.29.1 replaces 0.29 as the web installer's
default; on an FM-1 with the older chip, updating is optional and going back to 0.29 changes nothing.
The second flash chip (new in 0.29.1)
- Which units. The FM-1s with the logo on the front (late 2026). Their 1 MiB flash chip answers a different maker's
id (0xB36014; the earlier units' Puya chip answers 0x856014). ChoralRoot checks that id once at power-on before it
reads or writes anything, and up to 0.29 it accepted only the first: on the new chip it ran without the flash,
so nothing was kept and the update path stayed closed (the installers said "stopped answering after 0 requests;
nothing was written", and Update Mode went dark). Reddit r/MVaveFM1 report, 2026-11-02. - What changed. The check accepts both chips. ChoralRoot's flash driver uses only the generic SPI NOR commands that
the official firmware uses on the same chip; everything else is 0.29's, byte for byte in the sound and the stores. - Your unit is one of them if Options > Version read
no unit IDunder ChoralRoot 0.27, 0.28 or 0.29. With
0.29.1 the line readsunit IDand eight letters and digits, and settings, sounds and loops are kept. - A unit already stuck on 0.27 to 0.29 cannot take this update over USB (the closed update path above). The way
out: with the unit on, hold OCT-, OCT+ and HOME together for 5 seconds (a countdown, then the screen
goes dark: the chip's ROM boot, which the installers cannot see; holding OCT- while switching on, one long flash,
gets there too), then MvaveFM1Unbricker 1.2.1
python3 fm1_unbrick.py restore FM-1.fwscwrites the official V15 back (it takes a verified backup first), and the
web installer then installs 0.29.1 over V15 as on any FM-1. INSTALL-COMPAT.md "A second
flash chip" has the details.
Installing
- The web installer's default is 0.29.1: press Install. Options > Version reads
ChoralRoot 0.29.1. - From 0.29, 0.28 or 0.27 nothing needs doing: your sounds, loops, favorites and settings are all there.
- From 0.26.1 or older: install 0.29.1 as you would 0.29; 0.29.md "Installing" says what that update
changes. - A Single core package for FM-1s that have trouble with Dual Core: the web installer's Advanced > Hardware
fallback. Options > Version then readsChoralRoot 0.29.1 1-core. - Signed builds: as since 0.26.1, GitHub built these packages from the tag's source and signed them;
0.26.1.md "Checking a package" says how to check one (choralroot-0.29.1.fwsc).
Going back to 0.29
The installer offers 0.29 under Other versions. On an FM-1 with the older chip nothing changes: 0.29 is the same
firmware and stores everything the same way, so your settings, sounds, loops and favorites stay, and Options > Version
reads ChoralRoot 0.29 again. On an FM-1 with the new chip, 0.29 runs without the flash again: it keeps nothing and
takes no update, and the way back is the Unbricker's restore of V15 above.
ChoralRoot 0.29.1 for the M-VAVE FM-1 (identity FM-1_920).
Install from the browser at https://quixotic7.github.io/ChoralRootFM1/ (Chrome or Edge, the FM-1 connected by USB), or with the command-line installer: python3 tools/fm1_install.py choralroot-0.29.1.fwsc.
choralroot-0.29.1-1core.fwsc is the same firmware on one processor core, for an FM-1 that crashes or freezes with the standard package (the installer offers it under Advanced > Hardware fallback). Settings, sounds and loops stay when you switch between the two.
SHA256SUMS lists both packages and their apps. GitHub built and signed each from this tag's source (The Firmware Hub's shared workflow); check one with gh attestation verify choralroot-0.29.1.fwsc --repo Quixotic7/ChoralRootFM1 --signer-workflow zvenson/fm1-build/.github/workflows/build.yml. The package holds three JieLi AC79 SDK files (Apache-2.0); LICENSE, LICENSING.md and LICENSES.zip carry every licence. Installing firmware is at your own risk.
Full Changelog: v0.29...v0.29.1