Skip to content

Firmware Dongle v16

OneSeventyFour edited this page May 15, 2026 · 2 revisions

Dongle firmware v16 (current)

Released 2026-05
Status Current — recommended baseline
Pairs with receiver v22+
Predecessor v15

Downloads

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

Release notes

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> — set fire_duration_ms + fetch
  • Each command emits a single {"type":"rxcfg", ...} JSON line on receipt of the receiver's CONFIG_RESPONSE, carrying nodeID, FW / board version, NUM_BOARDS / noBoardsDetected / cuesAvailable, and the actually-applied (clamped) fire_duration_ms.
  • ACK choreography mirrors handleFlashBegin's: the dongle sends the CONFIG_QUERY (its auto-ACK carries stale RECEIVER_STATUS, which we ingest normally), then immediately sends a CLOCK_SYNC. The receiver loaded the CONFIG_RESPONSE into its ACK FIFO between those two writes, so the CLOCK_SYNC's auto-ACK carries the response. Done in the same dispatchOneCommand iteration so the CONFIG_RESPONSE can't get raced by another receiver's poll.
  • Auto-query: any newly-registered receiver (autocreate via getReceiverByIdent, including post-prune re-discovery) is marked configQueryPending. The next poll slot for that receiver dispatches a CONFIG_QUERY instead of a CLOCK_SYNC, which covers the "operator turned the unit off, added a cue board, turned it back on" case without UI involvement. Flag clears once the CONFIG_RESPONSE is ingested.
  • Per-receiver entries in the per-second status JSON now include fw / bv / nb / nbd / ca / fd so the host can recover full receiver state (e.g. post-restart) without re-querying.

Upgrade notes

  • Receiver pairing required: pair with receiver FW v22+ to actually exchange rxcfg data. Older receivers see the new CONFIG_QUERY opcode as unknown and ignore it; the dongle reports a timeout but otherwise keeps polling normally.

How to flash

Clone this wiki locally