This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Flash your badge

    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.

    This browser cannot flash. WebUSB is required, and only Chromium-family browsers ship it (Chrome, Edge, Brave, Opera, Arc). Firefox and Safari do not. You can still flash from a terminal with dfu-util.

    1 Pick your badge

    BornHack 2026 — Cyber Ægg Badge documentation →

    2 Put the badge in DFU mode, then connect

    disconnected
    Product
    Serial
    VID:PID
    Mode

    3 Choose the firmware

    4 Flash

    idle
    Do not unplug the badge while it is writing. The bootloader writes straight to the application partition — there is no backup slot — so an interrupted flash leaves the badge in DFU mode until you flash it again. That is recoverable; just re-run the 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.

    idle
    This browser has no File System Access API, so it cannot write to the drive directly. Download the zip below instead.

    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 address 0x00000000 and is meant for SWD / J-Link recovery. DFU writes the application partition, so publishing a combined image here would brick badges.