Summary
Detailed comparative analysis of RuView's two real (non-simulated) hardware WiFi CSI implementations: the existing ESP32-S3 CSI node and the new RTL8721Dx (Realtek AmebaDplus) CSI node added this session (ADR-323, branch feat/rtl8721dx-csi-bringup, commit 72bfb5059).
Full report: https://gist.github.com/ruvnet/554751b1068c48f7ee210aa447cd4088
Headline findings
- Both are 1×1 SISO — neither has spatial diversity from a single chip; that requires multiple physical boards on either platform.
- RTL8721Dx has a genuinely passive CSI mode (
RTW_CSI_MODE_NORMAL, samples real AP beacons/data with zero injected traffic). ESP32's CSI capture always self-injects probe/NDP frames to guarantee reports (csi_collector.c:383-384) — there's no pure-passive equivalent.
- The starkest asymmetry: measured performance. RTL8721Dx now has a MEASURED, repeatable real-hardware benchmark (
scripts/benchmark-rtl8721dx-csi.py): 14.67 fps baseline → 66.40 fps tuned. ESP32 CSI has never been benchmarked on real hardware in this repo — the "~20 Hz" / "20-100 Hz" figures in its docs are configuration values, not measurements, and ADR-028's own audit flags a separate "54,000 fps" claim elsewhere as unverified.
- ESP32 is far more mature as a product: OTA, a 4-tier on-device DSP pipeline (up to WASM-based programmable sensing), TDM multi-node scheduling (ADR-029 — which directly solves a channel-contention problem the RTL8721Dx work hit and left unsolved this session), QEMU CI with fuzzing. RTL8721Dx is currently a raw CSI streamer with none of that.
- A real, vendor-independent bug was found in the process:
wifi-densepose-sensing-server --source auto silently never binds the UDP CSI receiver on any host machine that has its own WiFi adapter — affects ESP32 ingestion equally, not just Realtek.
Suggested follow-up
The most actionable next step: build an ESP32 equivalent of scripts/benchmark-rtl8721dx-csi.py and run it against real ESP32-S3 hardware, so the throughput comparison above stops being "one side was measured, one wasn't" and becomes a real apples-to-apples number.
Co-Authored-By: claude-flow ruv@ruv.net
Summary
Detailed comparative analysis of RuView's two real (non-simulated) hardware WiFi CSI implementations: the existing ESP32-S3 CSI node and the new RTL8721Dx (Realtek AmebaDplus) CSI node added this session (ADR-323, branch
feat/rtl8721dx-csi-bringup, commit72bfb5059).Full report: https://gist.github.com/ruvnet/554751b1068c48f7ee210aa447cd4088
Headline findings
RTW_CSI_MODE_NORMAL, samples real AP beacons/data with zero injected traffic). ESP32's CSI capture always self-injects probe/NDP frames to guarantee reports (csi_collector.c:383-384) — there's no pure-passive equivalent.scripts/benchmark-rtl8721dx-csi.py): 14.67 fps baseline → 66.40 fps tuned. ESP32 CSI has never been benchmarked on real hardware in this repo — the "~20 Hz" / "20-100 Hz" figures in its docs are configuration values, not measurements, and ADR-028's own audit flags a separate "54,000 fps" claim elsewhere as unverified.wifi-densepose-sensing-server --source autosilently never binds the UDP CSI receiver on any host machine that has its own WiFi adapter — affects ESP32 ingestion equally, not just Realtek.Suggested follow-up
The most actionable next step: build an ESP32 equivalent of
scripts/benchmark-rtl8721dx-csi.pyand run it against real ESP32-S3 hardware, so the throughput comparison above stops being "one side was measured, one wasn't" and becomes a real apples-to-apples number.Co-Authored-By: claude-flow ruv@ruv.net