Skip to content

RTL8721Dx vs ESP32-S3 CSI comparison — RTL8721Dx has the only MEASURED throughput number #1943

Description

@ruvnet

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

  1. Both are 1×1 SISO — neither has spatial diversity from a single chip; that requires multiple physical boards on either platform.
  2. 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.
  3. 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.
  4. 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.
  5. 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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationhardware

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions