Skip to content

docs/bench: on-air TX throughput vs wfb-ng (svpcom) + SDR duty tool#109

Merged
josephnef merged 1 commit into
masterfrom
feat/wfb-onair-benchmark
Jun 27, 2026
Merged

docs/bench: on-air TX throughput vs wfb-ng (svpcom) + SDR duty tool#109
josephnef merged 1 commit into
masterfrom
feat/wfb-onair-benchmark

Conversation

@josephnef

@josephnef josephnef commented Jun 26, 2026

Copy link
Copy Markdown
Collaborator

What

An SDR-measured on-air TX throughput benchmark for the Jaguar family — per-chip, and devourer (userspace libusb) vs wfb-ng (the svpcom/rtl8812au driver + wfb_tx) — plus a ceiling-free measurement tool and a writeup of the most efficient wfb-ng config.

devourer vs wfb-ng (USRP B210 channel-occupancy, clean 5 GHz ch149, 1500 B)

Config devourer wfb-ng (svpcom + wfb_tx)
MCS1 / 20 MHz 94.6 % → 12.3 Mbps 94.5 % → 12.3 Mbps
MCS7 / 20 MHz 80.1 % → 52.1 Mbps 79.8 % → 51.9 Mbps
MCS7 / 40 MHz 62.7 % → ~85 Mbps

Both deliver the same on-air injection throughput. After FEC (k/n=8/12): MCS1 ≈ 8 Mbps, MCS7 ≈ 35 Mbps — consistent with wfb-ng's ~7 Mbps default and OpenIPC's 52-total/36-video figures.

Per-chip on-air throughput (README hardware table)

HT MCS7 / 20 MHz, USRP-measured. 8812AU is the fully-benchmarked reference (56 / 52 / 52 Mbps at 2.4 GHz / UNII-1 / UNII-3). 8821AU does 54 / 32 / 28. 8814AU saturates 2.4 GHz (65) and reaches ~32 Mbps at 5 GHz on a powered port.

USB-power caveat: 5 GHz TX is current-hungry and browns out through deep bus-powered hub chains — frames submit fine but on-air power collapses, intermittently, while 2.4 GHz keeps working. Figures marked in the README are bench-power-bound, not chip limits. A new CLAUDE.md USB Vbus sag gotcha documents the symptom, the uhubctl recovery, and the powered-hub fix (plus how to avoid mis-diagnosing it as a per-chip/EFUSE/gate bug).

Other findings

  • The kernel injection rate is the driver: svpcom ~52 Mbps vs in-tree rtw88 ~6 Mbps.
  • svpcom builds on the host 6.18 kernel (and the VM's 5.15) — bare-metal wfb-ng on a modern host works.
  • No VM-passthrough penalty: same svpcom + injector, bare-metal 80.5 % vs qemu-xhci passthrough 80.4 %.

Changes

  • tests/sdr_duty.py — USRP energy/duty-cycle on-air throughput (ceiling-free; a Wi-Fi monitor sniffer caps ~2900 fps and undercounts).
  • tests/bench_onair.py — per-chip per-band on-air throughput sweep (drives the README table).
  • txdemo DEVOURER_TX_PAYLOAD_BYTES — pad PSDU to N (3993 = wfb-ng max frame).
  • inject_beacon.py --size + --max-rate AF_PACKET blaster.
  • docs/wfb-ng-tuning.md — optimal wfb-ng config (svpcom driver, MCS/40 MHz/short-GI/LDPC/STBC, tx-pwr override, clean 5 GHz) + the comparison + methodology + reproduce steps.
  • README.md — per-chip on-air TX throughput in the hardware-landscape table.
  • CLAUDE.md — USB Vbus-sag hardware gotcha.

🤖 Generated with Claude Code

@josephnef josephnef force-pushed the feat/wfb-onair-benchmark branch from c3e5b4d to 6994dc0 Compare June 26, 2026 15:31
@josephnef josephnef changed the title docs/bench: SDR-verified on-air TX parity with wfb-ng (svpcom) docs/bench: on-air TX throughput vs wfb-ng (svpcom) + SDR duty tool Jun 26, 2026
@josephnef josephnef force-pushed the feat/wfb-onair-benchmark branch from 6994dc0 to 82eb509 Compare June 26, 2026 15:52
…R tools

Per-chip on-air TX throughput measured by USRP channel-occupancy, with the
8812AU as the benchmarked reference; devourer matches wfb-ng on the svpcom
driver at parity (docs/wfb-ng-tuning.md). Adds tests/sdr_duty.py (ceiling-free
duty-cycle metric), tests/bench_onair.py, the DEVOURER_TX_PAYLOAD_BYTES knob,
and a USB Vbus-sag hardware gotcha (5 GHz TX browns out through bus-powered hub
chains — use a powered hub / root port; figures marked with a dagger are
power-bound on the test bench, not chip limits).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@josephnef josephnef force-pushed the feat/wfb-onair-benchmark branch from 82eb509 to fd0a8ed Compare June 27, 2026 06:04
@josephnef josephnef merged commit 118edcc into master Jun 27, 2026
6 checks passed
@josephnef josephnef deleted the feat/wfb-onair-benchmark branch June 27, 2026 06:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant