Getting started
Welcome to the BornHack 2026 Cyber Ægg badge. This guide takes you from “unbox” to “actually playing with it” in a few minutes.
First power-on
A fresh badge runs a built-in factory self-test on the very first boot. You will see a FACTORY TEST screen with a small PASS/FAIL grid, followed by ALL PASS. After that the badge goes straight to the application on every boot; the self-test never runs again unless the firmware is wiped.
The very first boot then plays a short one-time sponsor slideshow (the event logos, then the badge-sponsor logos, a couple of seconds each) before dropping you on the Main screen. It only runs once per badge — you can replay it any time from Main → Badge sponsors.
The LED sequence at every boot is:
- Pulsing orange — hardware initialisation
- Pulsing blue — display and LoRa radio coming up (about 13 seconds)
- A single green flash — ready
You then land on the Main screen.
Controls
The badge has a 5-way joystick on the left and two thumb buttons on the right:
| Control | Action |
|---|---|
| Execute / joystick press (Fire) | Select / activate |
| Cancel | Back / dismiss |
| Up / Down | Move the cursor inside the current screen |
| Left / Right | Switch to the next top-level screen |
Top-level screens
The interface is a carousel — Left / Right cycles through the top-level screens:
| Screen | What it is |
|---|---|
| Game | BornPets — virtual pet, mini-games and hatchery |
| Main | Root menu: Bornagotchi · Settings · About · Badge sponsors |
| PMs | Private mesh messages inbox |
| Channel | Group / room mesh chat |
| Adverts | Recently heard mesh adverts |
| Tokens | Collected NFC tokens |
| Clock | Digital / analog watch face and alarm |
| Calendar | Month grid and per-day timeline |
| Name | Big conference-badge name view |
| My QR | Your mesh identity QR code to share with other badges |
Pair with the MeshCore app
The badge speaks the MeshCore companion protocol over Bluetooth Low Energy. Install the MeshCore app on Android / iOS, or open https://app.meshcore.nz/ in a browser that supports Web Bluetooth (Chrome / Edge on desktop or Android).
- Make sure Bluetooth is on — Main → Settings → Bluetooth should read
BLE: ON. - In the app, scan for devices. Your badge advertises as
Cyber Ægg XXYY, whereXXYYis four hex characters unique to your badge. - The phone shows a passkey prompt and the badge shows a 6-digit passkey on its display. Type that number into the phone.
- Once bonded, the app can set the clock, manage contacts, send and receive mesh messages, change the LoRa preset and more.
Set the time
The badge has no battery-backed real-time clock, so the clock resets to “not set” on every reboot. There are two ways to set it:
- MeshCore app — connect over Bluetooth and the app pushes your phone’s time to the badge.
- Near a synced repeater — a known-good mesh repeater advertises its time periodically and your badge picks it up automatically.
Set your timezone once under Main → Settings → Timezone — that setting persists.
Charging
Plug any USB-C cable into the badge to charge it. Charge state is shown on the on-screen battery icon (there is no dedicated charge LED).
Two things that look like faults but aren’t: the charge bolt disappearing while USB is still plugged means charging is complete (it returns by itself if the cell drains), and the battery icon can lag up to a minute behind reality — it is only re-sampled every 60 seconds.
USB drag-and-drop
When plugged in over USB-C the badge appears as a small drive named CYBR<4 hex>. You can drop these files into its root:
| File | Effect |
|---|---|
ALARMS.ICS | iCalendar file — imports alarms and calendar events |
030000.PCX … 030009.PCX | Sponsor slides shown on the splash carousel |
<6 hex>.PCX | Game sprites |
PETS.CFG | Add / rename pets (with their sprite PCX files) — see Games |
BORNPETS.CFG | Override the BornPets game balance |
LUT.CFG | Custom e-paper waveform (advanced — calibrated display LUT) |
Reboot the badge after copying files (re-plug USB) for the changes to take effect.
LUT.CFG is an advanced tweak: it overrides the panel’s built-in display waveform with a calibrated one (e.g. faster refresh). If a custom LUT ever renders badly, hold Fire (joystick press) while booting to force the safe built-in waveform for that boot, then delete or fix the file. A malformed or wrong-panel LUT.CFG is rejected automatically.
Firmware update
The easiest route is the Flash page: it writes the firmware and the badge’s asset files straight from a Chromium-family browser, with no toolchain to install.
To do it by hand, slide the ON/OFF switch (top-left on the front of the badge) off and then back on while holding Execute to enter the bootloader (DFU) mode — the LED blinks red. (The battery keeps the badge running, so unplugging USB will not restart it.) You can then flash a new firmware image with dfu-util:
dfu-util -d 1915:521f -D cyber-aegg.bin
The firmware is open source and built with Rust / Embassy — see Ranzbak/bornhack-firmware-2026 for source, build instructions and pre-built images.