v1611

ruvnet/RuViewv1611Jun 9, 2026by github-actions[bot]

AI Summary

This release resolves CSI starvation issues on the ESP32 where the device would enter a degraded state due to a lack of received OFDM frames. The fix adds a self-ping mechanism to generate a baseline of traffic, ensuring consistent CSI capture.

Key Highlights

  • Resolves CSI starvation and degraded status caused by sparse beacon traffic in quiet networks.
  • Added a self-ping mechanism to the DHCP gateway to generate ~50 Hz OFDM unicast traffic.
  • Ensures stable CSI yield (~15 pps) regardless of promiscuous filter settings.
  • Verified on ESP32-S3 hardware with adaptive control states.

Full Release Notes

Automated release from CI pipeline

**Changes:**
fix(esp32): add connected-STA self-ping CSI traffic source (#954) (#985)

The ESP32 CSI engine only produces CSI for received OFDM frames (L-LTF/
HT-LTF). On a quiet network — or on a display-enabled build where the
#893 MGMT->MGMT+DATA promiscuous upgrade is skipped (has_display=true) —
the only CSI-eligible frames are sparse beacons (often non-OFDM DSSS),
so wifi_csi_callback can starve to yield=0pps -> DEGRADED -> motion=0
(#521, #954).

Fix (additive): pin a ~50 Hz OFDM unicast floor by pinging the STA's own
DHCP gateway. The router's ICMP echo replies are OFDM frames destined to
this station and drive the CSI engine regardless of promiscuous filter
state or ambient traffic. Mirrors Espressif's esp-csi csi_recv_router
reference. Promiscuous capture (#396/#893) is left fully intact so
multistatic/multi-node sensing still hears other stations' frames.

Reconciles PR #955 (which removed promiscuous entirely and conflicted
with the already-shipped #893 DATA-capture path) into an additive change
on current main.

Verified on ESP32-S3 (N16R8, COM8), ESP-IDF v5.4:
  Promiscuous mode enabled (MGMT-only, RuView#396)
  self-ping started -> 192.168.1.1 @50Hz (CSI OFDM source, fix #521/#954)
  CSI cb #1: len=128 rssi=-40 ch=5
  adaptive_ctrl: state=6 yield=13-19pps motion=1.00 presence>0  (SENSE_ACTIVE)
DEGRADED cleared; CSI yield stable ~15 pps over 60 s.

Co-authored-by: Meraj <merajmehrabi@gmail.com>

**Docker Image:**
`ghcr.io/ruvnet/RuView:5789351b78f1f4c9dcd4bc15117588911b12dc2d`