Firmware files and a small cross-platform installer/cache for MiSTer Addons products.
| Project | Local file | Source |
|---|---|---|
| Reflex Prism | reflex-prism/prism-v1-r10/prism_dac.uf2 |
misteraddons/Reflex-Prism prism-v1-r10 |
| Reflex Adapt | reflex-adapt/v2.01/ |
misteraddons/Reflex-Adapt-Legacy v2.01 |
| Reflex CTRL Genesis 6 | reflex-ctrl/v0.7.12/GP2040-CE_0.7.12_ReflexCtrlGenesis6.uf2 |
OpenStickCommunity/GP2040-CE v0.7.12 |
| Reflex CTRL NES | reflex-ctrl/v0.7.12/GP2040-CE_0.7.12_ReflexCtrlNES.uf2 |
OpenStickCommunity/GP2040-CE v0.7.12 |
| Reflex CTRL SNES | reflex-ctrl/v0.7.12/GP2040-CE_0.7.12_ReflexCtrlSNES.uf2 |
OpenStickCommunity/GP2040-CE v0.7.12 |
| Reflex CTRL Saturn | reflex-ctrl/v0.7.12/GP2040-CE_0.7.12_ReflexCtrlSaturn.uf2 |
OpenStickCommunity/GP2040-CE v0.7.12 |
| Reflex CTRL Virtual Boy | reflex-ctrl/v0.7.12/GP2040-CE_0.7.12_ReflexCtrlVB.uf2 |
OpenStickCommunity/GP2040-CE v0.7.12 |
| Reflex Encode | reflex-encode/v0.7.12/GP2040-CE_0.7.12_ReflexEncodeV1.2.uf2 |
OpenStickCommunity/GP2040-CE v0.7.12 |
| Reflex Encode V2.0 | reflex-encode/v0.7.12/GP2040-CE_0.7.12_ReflexEncodeV2.0.uf2 |
OpenStickCommunity/GP2040-CE v0.7.12 |
| MiSTercade V1 | mistercade-v1/main-2025/_MiSTercade_V1-2025.zip |
misteraddons/MiSTercade _MiSTercade_V1-2025.zip |
| MiSTercade V2 firmware | mistercade-v2/main/Scripts/_MiSTercade_V2_/GP2040-CE_latest_MiSTercadeV2.uf2 |
OpenStickCommunity/GP2040-CE v0.7.12 |
| MiSTercade V2 flash nuke | mistercade-v2/main/Scripts/_MiSTercade_V2_/flash_nuke.uf2 |
OpenStickCommunity/GP2040-CE v0.7.12 |
| MiSTercade V2 scripts | mistercade-v2/main/Scripts/_MiSTercade_V2_/MiSTercade_V2_*.sh |
misteraddons/MiSTercadeV2 scripts folder |
Windows:
- Use the bundled
FirmwareInstaller.exefromFirmwareInstaller-windows.zipwhen available; it includes Python, the catalog, the Windows GUI wrapper, andpyserial. - To run from source, install Python 3 with Tkinter support, then install serial support:
python -m pip install pyserial
python firmware_installer.pymacOS:
- Install Python 3.
- Install
pyserial; Prism firmware updates require it for the USB CDC bootloader command and post-flash sanity check:
python3 -m pip install pyserial
python3 firmware_cli.pyOn macOS, the RP2040 bootloader should appear as /Volumes/RPI-RP2. There is currently no signed/notarized macOS app or DMG; use the Terminal CLI from source.
Cross-platform firmware installer: run python firmware_installer.py, choose a product from the dropdown, then connect each RP2040 board. The app uses cached firmware when available, downloads the selected firmware when missing, waits for RPI-RP2, copies the UF2, waits for the bootloader drive to detach, then waits for controller/gamepad enumeration or product-specific post-flash checks before showing a green check and returning to the next-device wait. Products with a pre_flash_bootloader catalog entry can also enter bootloader mode from a matching USB serial VID:PID before flashing.
The catalog is in firmware_catalog.json. GP2040-CE products ship local mirrors and can still resolve from the latest OpenStickCommunity/GP2040-CE release by asset name.
MiSTercade V1 and Reflex Adapt V1.x are 32u4 packages. The frontend can cache/download them, but this RPI-RP2 installer does not flash 32u4 firmware yet.
Terminal CLI mode is also available. With no arguments, firmware_cli.py lists available products:
python3 firmware_cli.py
python3 firmware_cli.py --list-catalog
python3 firmware_cli.py --product reflex-prism
python3 firmware_cli.py --firmware path/to/firmware.uf2Flashing is continuous by default: after one device completes, the CLI waits for the next RPI-RP2 bootloader drive or configured serial bootloader device. Add --once only when you want to flash one device and exit.
When reflex-prism is selected, the CLI downloads the latest Prism prism_dac.uf2 from this GitHub repo when needed, watches for Prism USB CDC VID:PID 16D0:14F6, verifies the reported hardware target is a supported Reflex Prism DAC V1 target, sends bootloader, flashes it, runs the Prism USB CDC sanity check, then waits for disconnect before arming for the next Prism. Catalog Prism firmware cannot start from an already-mounted BOOTSEL/manual RPI-RP2 drive because the hardware target cannot be verified there; manually browsed custom UF2 files still work for recovery.
The original installer script also accepts the same headless arguments:
python firmware_installer.py --firmware path/to/firmware.uf2
python firmware_installer.py --list-catalog
python firmware_installer.py --product reflex-ctrl-nes --download
python firmware_installer.py --product reflex-ctrl-nesBuild a Windows executable:
.\build_windows_exe.ps1
.\dist\FirmwareInstaller\FirmwareInstaller.exeThe executable is a PyInstaller onedir build. It bundles the catalog, checksums, mirrored firmware folders, and Windows GUI script, then uses FirmwareInstaller.exe itself for catalog, download, and flash subprocesses. No system Python install is required for the built app.
Reflex Prism: use prism_dac.uf2 for the Prism firmware update. The latest mirrored release is prism-v1-r10.
Reflex Prism update checks use firmware_catalog.json source type github_repo_latest_semver_file. The installer lists misteraddons/firmware/reflex-prism, prefers prism-v1-rX release directories by release number, and downloads prism_dac.uf2 from the latest directory. tools/sync_prism_firmware.py mirrors the latest misteraddons/Reflex-Prism release into this repo and updates the catalog, README, and checksums together. Downloads and local UF2 files are validated as structurally valid UF2 images and, for RP2040 entries, must carry UF2 family ID 0xE48BFF56. Before flashing Prism catalog firmware, the installer opens the normal USB CDC VID:PID 16D0:14F6, runs dashboard config get, and blocks the update unless Hardware target is one of the supported Reflex Prism DAC V1 targets; after flashing, it opens the same serial console and sanity-checks status plus dashboard config get. Source runs need pyserial; the Windows bundled installer includes it.
Reflex Adapt: copy reflex_updater.sh to the Scripts folder on the MiSTer SD card, or use reflex-v2.01.zip for the desktop updater package.
MiSTercade V1: extract _MiSTercade_V1-2025.zip to the Scripts folder on the MiSTer SD card and run the included updater script.
MiSTercade V2: copy the _MiSTercade_V2_ folder into the MiSTer SD card Scripts folder. Hold JOY1 PROG, JOY2 PROG, or both while powering on, then run MiSTercade_V2_Program.
Checksums are in checksums.sha256.
Run the source audit locally:
python tools/audit_firmware_sources.pyThe Audit Firmware Sources GitHub Action runs the same check daily and on demand. It compares mirrored files against source release digests or source repo file hashes, verifies checksums.sha256, and validates RP2040 UF2 family IDs. If any source repo is private, set a SOURCE_REPO_TOKEN or FIRMWARE_REPO_TOKEN secret with read access to those repos.
The Sync Prism Firmware GitHub Action runs daily, on demand, and from repository_dispatch event type reflex-prism-release. It mirrors the latest or requested Reflex-Prism release, runs the source audit, and commits only when the mirror changes.
The Build Windows Installer GitHub Action builds FirmwareInstaller-windows.zip on demand. Pushing a tag named installer-v* or firmware-v* also creates a GitHub release with the installer zip, catalog, and checksums.
These files are mirrors of upstream firmware artifacts. Use upstream docs and release notes as the source of truth when flashing hardware.