-
Notifications
You must be signed in to change notification settings - Fork 3
Firmware Dongle v16
OneSeventyFour edited this page May 15, 2026
·
2 revisions
| Released | 2026-05 |
| Status | Current — recommended baseline |
| Pairs with receiver | v22+ |
| Predecessor | v15 |
| File | Purpose | Download |
|---|---|---|
os4_dongle_v16.bin |
App partition. | Download |
os4_dongle_v16.bootloader.bin |
Chip bootloader. First-time flash only. | Download |
os4_dongle_v16.partitions.bin |
Partition table. First-time flash only. | Download |
os4_dongle_v16.boot_app0.bin |
OTA "next-app" pointer. | Download |
Receiver-side config query/set (paired with receiver FW v22+).
- Two new message types:
-
RECEIVER_CONFIG_QUERY (18)— dongle → receiver -
RECEIVER_CONFIG_RESPONSE (19)— receiver → dongle (in ACK payload)
-
- New serial command:
-
rxcfg IDENT— pure fetch (flags=0) -
rxcfg IDENT fd <ms>— setfire_duration_ms+ fetch
-
- Each command emits a single
{"type":"rxcfg", ...}JSON line on receipt of the receiver'sCONFIG_RESPONSE, carryingnodeID, FW / board version,NUM_BOARDS/noBoardsDetected/cuesAvailable, and the actually-applied (clamped)fire_duration_ms. - ACK choreography mirrors
handleFlashBegin's: the dongle sends theCONFIG_QUERY(its auto-ACK carries staleRECEIVER_STATUS, which we ingest normally), then immediately sends aCLOCK_SYNC. The receiver loaded theCONFIG_RESPONSEinto its ACK FIFO between those two writes, so theCLOCK_SYNC's auto-ACK carries the response. Done in the samedispatchOneCommanditeration so theCONFIG_RESPONSEcan't get raced by another receiver's poll. -
Auto-query: any newly-registered receiver (autocreate via
getReceiverByIdent, including post-prune re-discovery) is markedconfigQueryPending. The next poll slot for that receiver dispatches aCONFIG_QUERYinstead of aCLOCK_SYNC, which covers the "operator turned the unit off, added a cue board, turned it back on" case without UI involvement. Flag clears once theCONFIG_RESPONSEis ingested. - Per-receiver entries in the per-second status JSON now include
fw/bv/nb/nbd/ca/fdso the host can recover full receiver state (e.g. post-restart) without re-querying.
-
Receiver pairing required: pair with receiver FW v22+ to actually exchange
rxcfgdata. Older receivers see the newCONFIG_QUERYopcode as unknown and ignore it; the dongle reports a timeout but otherwise keeps polling normally.
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