You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Self-ping CSI source (#521/#954) yields only ~2–9 CSI/s when the AP answers ICMP at 802.11b rates #2287
The 50 Hz gateway self-ping is meant to guarantee an OFDM unicast CSI floor.
On our router the echo replies do arrive (~50/s, <1% timeouts), but about
98% of them are sent at 802.11b DSSS/CCK rates, which produce no CSI. Raw CSI
stays at 2–9 frames/s, the adaptive controller sits in ADAPT_STATE_DEGRADED,
and the node never reaches the ≥20 pps the pipeline expects. Ordinary unicast
UDP to the node, from the same router, goes out as HT and gives ~42 CSI/s.
data-to-me counts DATA frames whose addr1 is the station MAC in the
promiscuous callback, by rx_ctrl.sig_mode / rx_ctrl.rate (rate < 8 with sig_mode == 0 = 11b).
Things that did not help:
esp_wifi_config_11b_rate(WIFI_IF_STA, true) (disabling the node's own 11b
TX): 11b=1385 ht=32, unchanged.
Capping the esp_ping reply timeout at one interval (the IDF default is
1000 ms, which stalls the loop on each lost reply). Worth doing anyway, but
replies weren't the bottleneck here.
PC → node ICMP at 20 Hz: no CSI increase (the AP forwards ICMP at 11b too).
What does help: unicast UDP from a LAN host to the node at 50 Hz → raw
CSI 42.4/s (HT20, almost all STBC). It looks like the AP sends small ICMP
frames at the lowest basic rate, as some MediaTek drivers do for
"control-type" traffic.
Suggestions
Use UDP instead of ICMP for the built-in traffic source. For example, a
small UDP request to a service on the gateway that answers (DNS on :53 is
the common one), or an optional host-side "poke" that the sensing server
sends to each node it knows about.
Document the symptom: when yield stays low despite self-ping, check rx_ctrl.sig_mode/rate of the replies; 11b replies can never produce
CSI.
Set cfg.timeout_ms to the ping interval, so one lost reply doesn't stall
the 50 Hz loop for a second.
Activity
docs(firmware): document the self-ping 11b trap + cap ping timeout (r…
docs(firmware): add troubleshooting entry for the self-ping 11b trap (r…