Firmware

m-bootloader

Loud86/100

MIT clean-room bootloader for the M-VAVE FM-1 and SMK-37 Pro / Elite (JieLi AC791N), and M-Flasher's flash loader

m-bootloader is custom firmware for the M-VAVE FM-1, by @jvitkauskas. Open source under MIT, latest release v1.3 (November 2026), 25 stars on GitHub.

forM-VAVE FM-1·by@jvitkauskas

Unclaimed. Is this yours? Sign in with GitHub as @jvitkauskas to claim it.

Downloads
0
Stars
25
Forks
2
Commits
39
Last commit
Download v1.3

fm1-uboot.fwsc· 17 KB· +7 files

MIT· jvitkauskas/m-bootloader·downloads come from the creator’s GitHub releases

14
Commits
3
Releases
14 commits and 3 releases in the last year
Activity · last 12 months
3 releases
  1. v1.3m-bootloader 1.3Latest8 files

    Fixes BAD CONFIG on FM-1s with M-VAVE's 016 boot area, and is the first release built with the open pi32v2 LLVM toolchain.

    • Fixed: BAD CONFIG on every start. FM-1 016's boot configuration says 320 MHz, which 1.2 rejected. A unit with that boot area stopped at the menu on every start, and its firmware only started with Boot app. M-UPGRADE writes that boot area when it installs 016. 1.3 accepts it, and still runs at 360 MHz as before. If you have this problem, install 1.3 over 1.2.
    • New toolchain. Nothing from JieLi is needed to build it any more. The bootloaders and the flash loader are new binaries.
    • Flash loader 1.3 (MFLR1.3): the same code built with the new toolchain, with a new version so that M-Flasher does not reuse an older one.

    Not tested on the FM-1's newer flash chip. FM-1s sold from late 2026 have a UCUN UC25HQ80 flash (0xB36014). One such unit did not start after 1.2 was installed, with a black screen rather than BAD CONFIG, and the cause is not known yet (M-Flasher #13). Check FLASH CHIP in M-Flasher before installing. With 0xB36014, install it at your own risk.

    FileFor
    fm1-uboot.fwscFM-1, with M-UPGRADE
    smk37-pro-uboot.fwscSMK-37 Pro, with M-UPGRADE
    smk37-elite-uboot.fwscSMK-37 Elite, with M-UPGRADE
    fm1-uboot.bootFM-1, with M-Flasher
    smk37-uboot.bootSMK-37 Pro / Elite, with M-Flasher
    mflr-loader-a.bin, mflr-loader-b.binM-Flasher's flash loader
    SHA256SUMSchecksums

    Back up your unit with M-Flasher first. Install with m-flasher bootloader --file fm1-uboot.boot (or smk37-uboot.boot). The menu and M-Flasher show the version as 1.3-6c321e9.

    Status:

    • SMK-37 Pro: this release tested from Linux: it boots its firmware and M-VAVE's 016, and the flash loader read, installed and restored firmware, ending byte-identical, with the calibration untouched.
    • FM-1 (0x856014): tested on the build just before this one (1.2-8658d67), which differs only in its version text. It boots with both the 015 and 016 boot configurations, and the keys were checked by hand on the SMK-37 Pro build.
    • Not yet tried with this toolchain: installing with M-UPGRADE, the SMK-37 Elite, the UC25HQ80, and the calibration guard repairing lost data.
  2. v1.2m-bootloader 1.28 files

    Install m-bootloader with M-VAVE's own updater, M-UPGRADE, over USB MIDI: no download mode, no M-Flasher.

    • New: .fwsc packages for M-UPGRADE. Open the one for your unit in M-UPGRADE and start the upgrade. The unit restarts, shows INSTALLING and a progress bar on its screen, then INSTALLED, and restarts into its firmware. M-UPGRADE then times out with an error; that is expected, and the bootloader is installed by then.
    • The packages hold no firmware, only a small installer that writes the bootloader. Your unit keeps its firmware and settings.
    • The packages are labelled version 099, because M-UPGRADE refuses the version a unit already has. Afterwards the unit still reports its firmware's own version.
    • The bootloaders change only in their version text. The flash loader is unchanged (MFLR1.2).
    FileFor
    fm1-uboot.fwscFM-1, with M-UPGRADE
    smk37-pro-uboot.fwscSMK-37 Pro, with M-UPGRADE
    smk37-elite-uboot.fwscSMK-37 Elite, with M-UPGRADE
    fm1-uboot.bootFM-1, with M-Flasher
    smk37-uboot.bootSMK-37 Pro / Elite, with M-Flasher
    mflr-loader-a.bin, mflr-loader-b.binM-Flasher's flash loader
    SHA256SUMSchecksums

    Back up your unit with M-Flasher first. With M-Flasher, install as before: m-flasher bootloader --file fm1-uboot.boot (or smk37-uboot.boot). The menu and M-Flasher show the version as 1.2-22e2559.

    M-UPGRADE needs the unit to run firmware it can update, such as M-VAVE's. If it refuses a unit running other firmware, its force upgrade skips the model and version checks. M-VAVE's official updates still put their own bootloader back; reinstall with either tool afterwards.

    Status:

    • Installing with M-UPGRADE: tested from M-VAVE's bootloader on an FM-1 (firmware 015) and on an SMK-37 with the Pro and the Elite firmware (016). Only the bootloader changed; firmware, calibration, presets and sounds were untouched.
    • FM-1, SMK-37 Pro: tested in full (see the README).
    • SMK-37 Elite: the same hardware and flash layout as the Pro; installation tested with the Elite firmware.
  3. v1.1m-bootloader 1.15 files

    Fixes the FM-1's power-on keys.

    • FM-1: REC and PLAY at power-on now work (download mode and the recovery menu). On the FM-1, the key matrix only works while the backlight pin PA2 is driven low. The power-on check ran before anything drove it, so it saw no keys. The menu's own keys already worked.
    • The SMK-37 build changes only in its version text. The flash loader is unchanged (MFLR1.2).
    FileFor
    smk37-uboot.bootSMK-37 Pro / Elite
    fm1-uboot.bootFM-1
    mflr-loader-a.bin, mflr-loader-b.binM-Flasher's flash loader
    SHA256SUMSchecksums

    Install with M-Flasher after backing up your unit: m-flasher bootloader --file fm1-uboot.boot (or smk37-uboot.boot). The menu and M-Flasher show the version as 1.1-e9a25e1.

    Status:

    • FM-1: now tested on hardware: start-up, both power-on keys, the menu with its keys and LEDs, and download mode.
    • SMK-37 Pro: tested in full with 1.0.
    • SMK-37 Elite: not tested yet.