Skip to content

Firmware Receiver

OneSeventyFour edited this page May 15, 2026 · 2 revisions

Receiver firmware releases

All historical receiver firmware releases. The latest is at the top.

Version Date Highlights Pairs with dongle
v23 (current) 2026-05 Current baseline. v16+
v22 2026-05 Receiver-side configuration query/set protocol. Persisted fire_duration_ms in NVS. v16+
v16 2026-05 Boot-time status-LED sequence encodes FW_VERSION and NODE_ID as 3-digit decimal. v10+
v15 2026-05 OTA flash mode. New OTA_BEGIN/DATA/END/ABORT message types. NVS-preserving in-place updates. v10+
v14 2026-05 NODE_ID + RECEIVER_IDENT moved out of firmware into NVS. One binary serves the whole fleet. v8+
v13 2026-05 Relax disconnect tolerance (8 s floor, 6× adaptive, 90 s ceiling). v8+
v12 2026-05 Don't abort the show on radio dropout + clock-domain fix for disconnect detection. v8+
v11 2026-05 Adaptive disconnect detection + ACK-payload freshness flush. v8+
v10 2026-05 Fix RF address aliasing (BASE+N instead of `BASE N`).
v9 2026-04 ACK-payload protocol overhaul. Dynamic payloads, packed SHOW_LOADN, configurable RF channel. v4+
v8 Previous baseline (not separately documented). v3+
v7 2025-01 Migrated from RF24Mesh to pure RF24 with deterministic addressing. v3+
v6 2025-01 Added FW_VERSION tracking system with version-history comments. v2+
v1 – v5 Historical. Not separately documented.

What's in each download

Per Firmware downloads, each receiver release ships four files (built by devices/utils/build_receiver.sh from os4_receiver.ino):

os4_receiver_v<N>.bin              app partition           (flash @ 0x10000)
os4_receiver_v<N>.bootloader.bin   chip bootloader         (flash @ 0x1000)
os4_receiver_v<N>.partitions.bin   partition table         (flash @ 0x8000)
os4_receiver_v<N>.boot_app0.bin    OTA next-app pointer    (flash @ 0xe000)

Routine updates (wired or OTA) only need os4_receiver_v<N>.bin. Full / first-time flashes need all four.

How to upgrade

Already-deployed receivers can be upgraded over the air from the UI — see OTA flashing. Wired flashes use devices/utils/flash_receiver.py — see Flashing a receiver. Either path preserves NODE_ID / RECEIVER_IDENT in NVS as long as you don't run esptool erase_flash.

How to add a new release page

  1. Build and publish the firmware with ownerutils/deploy_receiver_firmware.
  2. Confirm the four .bin files are available under https://backyard-hero.com/download/firmware/receiver/.
  3. Add a row at the top of the table above and create a Firmware-Receiver-v<N>.md page modeled after v23 with the new release notes.
  4. Update the Latest releases section of Firmware downloads.

Clone this wiki locally