Skip to content

v0.8.3-esp32 — multistatic + csi_fps + control-packet fixes

Latest

Choose a tag to compare

@ruvnet ruvnet released this 27 Jun 17:22
c0d3d7c

ESP32-S3 CSI node firmware v0.8.3-esp32 — bug-fix release.

Fixed

  • #1170 — multistatic fusion DimensionMismatch flood. The live sensing-server bridge fed raw, un-canonicalized per-node CSI (HT20≈64 / HT40≈128/192 bins) into MultistaticFuser, so fusion errored every cycle on a mixed mesh and silently fell back to per-node sum/dedup. Node frames are now resampled onto the canonical 56-tone grid (resample-only, no z-score) before fusion.
  • #1180csi_fps_ema inflated 40–840×. Sub-millisecond UDP burst arrivals (36 µs → ~27 kHz) polluted the per-node frame-rate EMA. A 5 ms plausibility floor now rejects burst deltas, and the arrival anchor is kept across bursts so the next genuine gap measures true cadence.
  • #1183 — ENOMEM backoff starved control packets. Under a weak uplink the global CSI backoff also suppressed the ≤48 B/≤1 Hz feature_state/HEALTH/sync packets. A new priority send path bypasses the backoff gate (without touching the streak) for those control packets; the misleading "HEALTH sent" log now reports the real send result.

Tooling

  • Added scripts/firmware-release-guard.sh (#1194): regenerates the expected partition table from the variant's CSV and byte-compares it to the built partition-table.bin (+ flash-size cross-check), failing closed so a release can't ship a partition table that doesn't match its flash-size variant.

Verification (MEASURED)

  • wifi-densepose-signal: 501 passed, 0 failed
  • wifi-densepose-sensing-server: 677 passed, 0 failed
  • Firmware: both variants build clean (ESP-IDF v5.4); release guard PASS for 8MB (partitions_display.csv) and 4MB (partitions_4mb.csv).
  • Hardware smoke test PASS — flashed the 8MB build to an ESP32-S3 (QFN56 rev v0.2, the #1116 board); booted clean, streamed real WiFi CSI (mixed len=128/len=384, RSSI −42…−59), emitted HEALTH/feature_state via the #1183 priority path, mesh time-sync fail=0, and no #1116 edge_dsp watchdog crash over the capture. Note: #1183 starvation needs a weak (~−78 dBm) uplink to trigger; strong-RSSI bench run shows no regression but does not reproduce that specific condition.

Binaries

File Variant SHA-256
esp32-csi-node-s3-8mb.bin 8MB/common ed825c52468e8ecf1cfd14417914d9e2b6acd2b1489bd60168d2559ee3ba6c88
esp32-csi-node-s3-4mb.bin 4MB 94c547a033448b437a65659bbcd8c81616d5e5d83990a9f7829625a5581bad66
bootloader.bin 8MB/common 74f90ff55a097539d788bef133c6fd2b13ee85f53b1e07f23d65de2d2f63941d
ota_data_initial.bin 8MB/common 7d2c7ac4888bfd75cd5f56e8d61f69595121183afc81556c876732fd3782c62f
partition-table.bin 8MB/common 67222c257c0477501fd4002275638dc4262b34eb68235b8289fb1337054d322b
partition-table-4mb.bin 4MB 4c2cc4ffd52641e23b779bd57b3908014083ac3c1aab395756478c89e70d81f0