ESP32 CSI Node firmware v0.7.0
Tag: v0.7.0-esp32
Date: 2026-05-23
Branch: adr-110-esp32c6 (PR #764)
Status: ADR-110 firmware-side substrate closed
Why a major bump
This release marks the end of the firmware-side ADR-110 push. Everything the
firmware can deliver toward §B's multistatic alignment story without
hardware-blocked dependencies is shipped, measured, and witnessed:
- §A0.7 / §A0.8 / §A0.10: ESP-NOW cross-board mesh proven and quantified
(99.43–99.56 % match, 104.1 µs smoothed offset stdev, 1.4 ppm crystal-skew
tracking, ≤100 µs alignment target empirically met). - §A0.12: 32-byte UDP sync packet (magic
0xC511A110) emits alongside CSI
frames so downstream multistatic fusion can pair(node_id, sequence)to
recover mesh time per frame. - §A0.13 (new in v0.7.0): ADR-018 byte 19 bit 4 ("cross-node sync valid")
now sourced fromc6_sync_espnow_is_valid()too, not just the
IDF-v5.4-broken 802.15.4 path. Mixed S3+C6 fleets correctly advertise
sync via the working transport.
What remains is outside the firmware:
- Host-side parser (sketched as
archive/v1/src/hardware/csi_extractor.py:SyncPacketParser) - Multistatic CSI fusion in
wifi-densepose-signal - 11ax-cooperative AP (or future IDF that exposes AP-side HE config)
- INA226 / Joulescope for the ≤5 µA LP-core measurement
What's new vs v0.6.9
- Bit-4 sync-valid wire fix (
csi_collector.c:221): bit 4 is set when
eitherc6_timesync_is_valid()orc6_sync_espnow_is_valid()returns
true. Pre-v0.7.0 frames from sync'd ESP-NOW nodes falsely advertised "no
sync" because the 802.15.4 path is broken and was the only flag source. - Python host-side stub (
archive/v1/src/hardware/csi_extractor.py):
SyncPacketParser+SyncPacketdataclass ready for the
sensing-server to wire in. - Doc:
ESP32BinaryParserdocstring now mentions the sibling sync packet- the v0.7.0 bit-4 broadening.
Build artifacts
| Target | Binary | Size | Partition slack |
|---|---|---|---|
esp32s3 (8 MB)
| esp32-csi-node-s3-8mb.bin
| 1094 KB | 47 % |
esp32c6 (4 MB)
| esp32-csi-node-c6-4mb.bin
| 1019 KB | 45 % |
SHA-256 sums in SHA256SUMS.txt. Backwards-compatible at the wire level
with v0.6.6 / v0.6.7 / v0.6.8 / v0.6.9. Mixed-version fleets keep working;
only nodes flashed with v0.7.0+ get the bit-4 fix.
Total scope of the loop sprint (iter 1 → iter 12)
10 firmware features shipped, 13 witness entries (§A0.1 → §A0.13),
3 GitHub releases (v0.6.7 / v0.6.8 / v0.6.9 / this v0.7.0), 11 commits
on the branch. The firmware now ships a complete, measured, and
quantitatively documented two-node mesh substrate for multistatic CSI
fusion.