Skip to content

Firmware Receiver v22

OneSeventyFour edited this page May 15, 2026 · 2 revisions

Receiver firmware v22

Released 2026-05
Status Superseded by v23
Pairs with dongle v16+
Predecessor v16

Downloads

File Purpose Download
os4_receiver_v22.bin App partition. Download
os4_receiver_v22.bootloader.bin Chip bootloader. Download
os4_receiver_v22.partitions.bin Partition table. Download
os4_receiver_v22.boot_app0.bin OTA "next-app" pointer. Download

Release notes

Receiver-side configuration query/set protocol (paired with dongle FW v16+).

  • Two new message types:
    • RECEIVER_CONFIG_QUERY (18) — dongle → receiver
    • RECEIVER_CONFIG_RESPONSE (19) — receiver → dongle (in ACK payload)
  • The query carries a flags byte plus per-config fields. Today the only knob is fire_duration_ms (gated by CFG_FLAG_SET_FIRE_DURATION); more knobs will land in the same struct's reserved space without a wire-protocol bump. flags=0 is a pure fetch (no settings written).
  • The response is a fixed-size 17-byte struct carrying NODE_ID, FW / board version, NUM_BOARDS / noBoardsDetected / cuesAvailable, and the persisted fire_duration_ms (plus 8 bytes reserved for future fields).
  • cuesAvailable = 0 when no cue boards are detected (noBoardsDetected true), otherwise NUM_BOARDS * 8 (NUM_LEDS). Reported authoritatively here so the host UI no longer has to guess from operator-edited cue counts.
  • fire_duration_ms is now persisted in the same NVS namespace as the identity ("byh_rx", key "fire_dur"), defaulting to 1000 ms on a fresh unit. Replaces the compile-time #define FIRE_MS_DURATION 1000 — the host can tune fire pulse width per-receiver without a reflash.
  • ACK choreography mirrors the OTA_BEGIN handshake: a query's auto-ACK fires before the receiver CPU runs (so it carries stale status), then the receiver loads the CONFIG_RESPONSE into the FIFO and sets a configResponsePending flag. The flag suppresses periodic / post-command status refreshes from clobbering the response, so any subsequent inbound command (the dongle queues a CLOCK_SYNC right after the query) carries the response in its auto-ACK. The flag auto-clears on the first non-config inbound command, restoring normal RECEIVER_STATUS piggybacking thereafter.

Upgrade notes

  • Dongle pairing required. Pair with dongle FW v16+ — older dongles never send CONFIG_QUERY, so the new code paths are dormant but harmless on a v22 receiver.
  • fire_duration_ms of 1000 ms is preserved by the NVS migration; existing receivers behave identically until the host pushes a new value.

How to flash

Clone this wiki locally