Flash firmware onto your badge straight from this page — no toolchain, no drivers, no command line. The browser talks to the badge over USB and writes the image itself, and it can install the badge’s asset files in the same sitting.
Chromium-family browsers only
This uses WebUSB, which
only Chrome, Edge, Brave, Opera and Arc implement. Firefox and Safari do not
ship it and never show the device chooser. On those, flash from a terminal with
dfu-util instead.
Linux users: you need a udev rule granting your user access to the bootloader, otherwise the device appears in the chooser but fails to open.
dfu-util.1 Pick your badge
2 Put the badge in DFU mode, then connect
- Product
- —
- Serial
- —
- VID:PID
- —
- Mode
- —
3 Choose the firmware
4 Flash
5 Add the asset files
Firmware alone leaves the badge without artwork. In DFU mode it also
appears as a small USB drive named CYBR followed by four hex
digits; the sprites, sponsor slides and the event programme belong in the
root of that drive. Each firmware image has its own set — the one below
follows your choice in step 3.
Copy them straight to the drive
Pick the CYBR… drive when your browser asks, and the files
are written for you — no download, no unzipping.
Or download the zip
Unpack it into the root of the badge drive, not into a subfolder. Eject the drive when you are done, then power-cycle the badge.
5 Add the data it needs
Diagnostics
If something goes wrong
The device chooser is empty. The badge is not in DFU mode. Put it in the bootloader first (for the Cyber Ægg: unplug, hold Execute, plug back in — the LED blinks red), then click Connect again.
It connects but says “application firmware (CDC)”. Same cause: you reached the running firmware rather than the bootloader. Power-cycle into DFU mode.
“Failed to open the device” on Linux. A udev rule is missing. The badge’s own repository ships one — install it, replug, and retry.
The flash stopped part-way. Nothing is bricked. The bootloader writes directly to the application partition, so an interrupted write just leaves the badge sitting in DFU mode. Reconnect and flash again.
Checksum mismatch. The download did not match the hash published alongside it and was refused before anything was written. Reload the page and retry; if it persists, report it.
The badge says “No sprites on flash”. The firmware is installed but the asset files are not. Do step 5 above, then power-cycle.
I flashed DOOM and nothing happens / it asks for game data. Flashing DOOM is only half of it. DOOM ignores the USB drive entirely: its game data goes into the badge’s QSPI flash over a serial connection, so you need to upload a WAD before there is anything to play.
Sprites are missing or wrong after switching edition. Each firmware image ships its own asset set, and the Community Edition draws a good deal more than the standard one. Install the assets that belong to the image you flashed — step 5 follows your choice in step 3 automatically.
No drive appears to copy assets onto. The badge only exposes its USB drive in DFU mode, the same mode you flash from. If you already power-cycled to boot the new firmware, go back into DFU mode.
The copy finished but the badge still looks empty. Eject the drive in your file manager before unplugging. Until you do, the writes may still be sitting in your operating system’s cache rather than on the badge.
Flashing without a browser
Every image offered here is a plain .bin for the application partition, so
dfu-util takes it directly:
dfu-util -d 1915:521f -D cyber-aegg.bin
Adding a badge or a firmware image
The flasher is driven entirely by data/firmwares.toml in the
website repository. Add the image under
static/firmware/<badge-id>/, record it in that file together with its
sha256sum, and it appears here — there is no backend to deploy.
Asset payloads work the same way. Build the archive with flat, deflate-compressed
entries, drop it in static/assets/<badge-id>/, and point the badge’s assets
entry at it:
cd assets/to-badge && zip -rX -9 cyber-aegg-assets.zip .
Two constraints worth knowing:
- Images must be hosted on this site. A cross-origin download needs CORS headers, and release assets on Codeberg and GitHub do not send them.
- Only application images. A combined image that includes the bootloader
(for the Cyber Ægg,
cyber-aegg-full.bin) starts at address0x00000000and is meant for SWD / J-Link recovery. DFU writes the application partition, so publishing a combined image here would brick badges.