ruvnet / ruvnet/RuView

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

Open
#1,943 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

hardware
Dominant language
Rust
Stars
94.5k
Forks
12.5k
Avg merge
21h 27m
Merged PRs (30d)
43

Description

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

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with scripts/benchmark-rtl8721dx-csi.py and the ESP32 CSI path noted at csi_collector.c:383-384. Build an equivalent benchmark for real ESP32-S3 hardware, then report a repeatable measured throughput number so the comparison is apples-to-apples.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
embedded-iot, performance
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.