-
Notifications
You must be signed in to change notification settings - Fork 3
Firmware Receiver v16
| Released | 2026-05 |
| Status | Superseded by v22 |
| Pairs with dongle | v10+ |
| Predecessor | v15 |
| File | Purpose | Download |
|---|---|---|
os4_receiver_v16.bin |
App partition. | Download |
os4_receiver_v16.bootloader.bin |
Chip bootloader. | Download |
os4_receiver_v16.partitions.bin |
Partition table. | Download |
os4_receiver_v16.boot_app0.bin |
OTA "next-app" pointer. | Download |
Boot-time status-LED sequence now encodes FW_VERSION and NODE_ID as 3-digit decimal numbers across the 3 status LEDs.
The boot sequence is now three flashes:
-
FW_VERSION(digit-color, breath in/out) - Battery level (existing behavior, unchanged: bar count + color)
-
NODE_ID(digit-color, breath in/out)
The 1st and 3rd used to be a single fixed-purple breath and a fixed-white fade respectively, neither of which carried any per-unit information. That made it impossible to tell at a glance which firmware or which receiver had just powered up — a real problem during incremental rollouts and during fleet bring-up.
For both the version and node-id flashes, each status LED shows one decimal digit:
| LED | Digit |
|---|---|
| LED 0 | hundreds |
| LED 1 | tens |
| LED 2 | ones |
For example:
-
FW v20→ LED0 red(0), LED1 yellow(2), LED2 red(0) -
FW v16→ LED0 red(0), LED1 red(0), LED2 orange(6) -
NODE_ID 137→ LED0 blue(1), LED1 green(3), LED2 white(7)
Each digit 0..9 maps to a fixed, vivid color chosen so consecutive digits are maximally distinct (so 1 vs 2 or 7 vs 8 are obvious at a glance, even if 2 vs 5 could be confused at a distance):
| Digit | Color | Digit | Color | |
|---|---|---|---|---|
| 0 | red | 5 | cyan | |
| 1 | blue | 6 | orange | |
| 2 | yellow | 7 | white | |
| 3 | green | 8 | pink | |
| 4 | purple | 9 | lime |
The LEDs all breathe in/out together at the same brightness curve the old purple breath used, so the boot "feel" is unchanged — just informative.
Only the boot flashes change. The unprovisioned magenta breath, the show-time animations, and the OTA white breathe are untouched — those carry distinct semantics that shouldn't be repurposed. Unprovisioned units (NODE_ID==0) will show all-red(0) on the node-id flash, then transition into the magenta breath as usual.
- No wire-protocol changes. Drop-in compatible with any v10+ dongle.
- Cosmetic-only change to boot LEDs.
- OTA: OTA flashing.
- Wired: Flashing a receiver.
Getting started
- Overview
- Desktop installers (macOS / Windows)
- macOS
- Linux
- Windows
- Production vs Development
- Connecting the dongle
- Flash a receiver
- Flash a dongle
- OTA flashing
Raspberry Pi
System overview
Subsystems
Hardware
- Receiver firmware
- Dongle firmware
- RF protocol
- Contributor Portal — BOMs, schematics, and board resources
UI walkthrough
Reference
Downloads
- Firmware
- Installers
Module Build & User Guides
- Cue
- Receiver
- Dongle