OPLBOX
OPLBOX: custom firmware turning the M-VAVE FM-1 into an AdLib — OPL2 emulation, SoundFX Macs Opera player and .CMF tracker/editor
- Custom firmware
- Beta
- Medium brick risk
- Reversible
This project hasn't been claimed by its maintainer yet, so its details come from the community. Is it yours? Claim it
- USB: a SysEx from the computer (the installer's identity query,
fm1_install.py --info, the first stage of an install) dropped the FM-1 off USB: a burst of babble, a disconnect, a re-enumeration a second later; plain MIDI did not. The app was built at -O2 with the platform inside it, and the USB stack babbles at -O2 (Dinghy keeps -Os for that reason, its tools/build.py). Now the app and the platform build at -Os like Dinghy and the OPL core (dbopl2.c) is its own object at -O2, with its own header; the scope taps moved with it. Installs over a running OPLBOX no longer need the USB rescue. tests/run_host.shcompiles the core separately too.
Install over USB (FM-1 on, running any Felucca-family firmware, including 0.4.1 if the handshake lands; otherwise hold OCT− at power-on for the USB rescue, or use the boot-ROM route described in issue #1):
pip3 install mido python-rtmidi
python3 fm1_install.py oplbox-0.4.2.fwsc
Before you start
- How hard is it?
- EasyCopy a file or use a web page. No extra software.
- What you need
- A USB or MIDI cable
- Comfort with the command line
- A computer
- Can it break my device?
- Small chance of trouble, with a way to recover.
- Can I undo it?
- Yes. You can go back to the official software.
Did it work for you?
Did OPLBOX v0.4.2 work on your M-VAVE FM-1?
No reports yet for v0.4.2.
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 ("Install"):
Exactly like any Felucca-family firmware. Over USB from a computer, with the FM-1 switched on and running any firmware that has the update path (stock V14/V15, Felucca, SLOOP, Dinghy, …):
pip3 install mido python-rtmidi python3 tools/fm1install.py oplbox-0.4.1.fwsc # asks before it writes, restarts into OPLBOX python3 tools/fm1install.py --info # what the connected FM-1 runs
Or through the FM-1 Firmware Hub (https://fm1.designburgapps.com) in Chrome/Edge, which can install a local .fwsc. Installing firmware is at your own risk.
Back to stock or to any other firmware: the hub, or M-VAVE's own updater with their FM-1.fwsc — OPLBOX answers the updater like every firmware in the family.
If it will not start, or will not answer the installer: hold OCT− (only OCT−) before switching on, switch on, keep holding until the screen says OPLBOX USB RESCUE → no sound, only the updater; install anything from there. The key is read in the first 50 ms after power-up, so it must already be down. (0.4.1: on some boards the keys cannot be read at all until the screen's pins are set up, so the rescue never opened; the screen is now set up before the check, after dinghy PR #4.) A firmware that crashes twice at boot goes to the rescue by itself. If even that is gone, the chip's own boot ROM still updates over USB (FM-1-transporter).
If 0.1 is what is running (the one that starves itself): button presses are latched by a timer interrupt even [README truncated]
Risk and recovery
- Brick risk
- Medium
- Reversible
- Yes
- Requires opening the device
- No
From the project's README ("Install"):
Exactly like any Felucca-family firmware. Over USB from a computer, with the FM-1 switched on and running any firmware that has the update path (stock V14/V15, Felucca, SLOOP, Dinghy, …):
pip3 install mido python-rtmidi python3 tools/fm1install.py oplbox-0.4.1.fwsc # asks before it writes, restarts into OPLBOX python3 tools/fm1install.py --info # what the connected FM-1 runs
Or through the FM-1 Firmware Hub (https://fm1.designburgapps.com) in Chrome/Edge, which can install a local .fwsc. Installing firmware is at your own risk.
Back to stock or to any other firmware: the hub, or M-VAVE's own updater with their FM-1.fwsc — OPLBOX answers the updater like every firmware in the family.
If it will not start, or will not answer the installer: hold OCT− (only OCT−) before switching on, switch on, keep holding until the screen says OPLBOX USB RESCUE → no sound, only the updater; install anything from there. The key is read in the first 50 ms after power-up, so it must already be down. (0.4.1: on some boards the keys cannot be read at all until the screen's pins are set up, so the rescue never opened; the screen is now set up before the check, after dinghy PR #4.) A firmware that crashes twice at boot goes to the rescue by itself. If even that is gone, the chip's own boot ROM still updates over USB (FM-1-transporter).
If 0.1 is what is running (the one that starves itself): button presses are latched by a timer interrupt even [README truncated]
Releases
| Version | Name | Released |
|---|---|---|
| v0.4.2 | OPLBOX 0.4.2Latest | 24 October 2026 |
| v0.4.1 | OPLBOX 0.4.1 | 23 October 2026 |
| v0.4 | OPLBOX 0.4 | 23 October 2026 |
| v0.3.4 | OPLBOX 0.3.4 | 23 October 2026 |
| v0.3.3 | OPLBOX 0.3.3 | 23 October 2026 |
| v0.3.2 | OPLBOX 0.3.2 | 23 October 2026 |
| v0.3.1 | OPLBOX 0.3.1 | 23 October 2026 |
| v0.2 | OPLBOX 0.2 | 23 October 2026 |
| v0.1 | OPLBOX 0.1 | 23 October 2026 |
Credits, license and support
- License
- GPL-3.0