Badge Launcher v1.0.0
Badge Launcher v1.0.0
Dual-boot for the Retia 2024 DEF CON badge: hold UP, tap RESET, pick a firmware from the TFT menu, and it's running ~10 seconds later. No computer needed. Guarded by a cat.
Install
pip install esptool
esptool --chip esp32s3 --port <PORT> write-flash 0x0 launcher.factory.binOne flash sets the badge up completely (sd-card.zip onto a FAT micro-SD card (dedicated slot, under the D-pad) to get the full menu:
| Menu entry | What it is |
|---|---|
doom-silent.bin |
PrBoom (DOOM shareware), quiet |
doom-audio.bin |
Same, with piezo SFX (GPIO9 sigma-delta) |
meshtastic-standard.bin |
Meshtastic 2.7.23, stock behavior |
meshtastic-lowpower.bin |
Meshtastic 2.7.23, ~39% lower idle draw — the daily driver |
wled-pride.bin |
WLED — boots the 10 ear NeoPixels straight into a Pride 2015 rainbow 🌈 |
Drop your own launcher-compatible .bin in /firmware/ on the card and it appears in the menu — see the README for the two-line PlatformIO recipe.
Meshtastic settings (owner, region, keys) survive every switch — the launcher never touches nvs/spiffs. The bundled WLED is built FS-less specifically so it doesn't clobber that storage either (verified: a Meshtastic owner survives a WLED round-trip). Interrupted installs can't brick the badge: the launcher lives in the factory partition and the bootloader falls back to it.
Not included: the Meshtastic MUI touch build (3.1 MB) — it cannot fit the shared app slot alongside the resident Doom WADs; flash it over USB from DefconBadge2026 instead.
Verified
All acceptance criteria hardware-tested on the bench (2026-07-08): install & boot each firmware from SD, 9.4 s Doom switch with resident WADs, settings intact across switches and 9 reboots, interrupted-install recovery + retry, hold-UP entry, zero added boot latency on normal power-on. WLED added and verified end-to-end (menu → install from SD → Pride rainbow; Meshtastic settings survive the round-trip).
🤖 Generated with Claude Code