Skip to content

RTL8733B: SDR RF characterization + on-air throughput benchmark (blocked on BL-M8733BU2 arrival) #390

Description

@josephnef

The RTL8733B backend merged in #388 has no RF-domain measurement at all — the DUT bench had no SDR. Every RF claim in docs/rtl8733b.md is therefore a delivery/readback claim, and the README bandwidth cells for RTL8731BU are . This issue closes that gap once a second module (BL-M8733BU2) is on the bench.

Everything here is hardware-gated: it cannot start before the board arrives.

Why it matters beyond bookkeeping

  • AdapterCaps::narrowband_ok is false purely for want of an SDR (#TBD-narrowband depends on this issue). The 5/10 MHz register sequence already reads back on hardware; occupied-bandwidth proof is the missing evidence.
  • The README table is the first thing an integrator reads. A row next to benchmarked 8812EU/8852BU rows reads as "untested silicon" when what is actually missing is one instrument.
  • A one-unit result is not a population (docs/rtl8733b.md, "Known gaps"). The second module makes every number below a two-sample claim.

Work items

  1. Absolute output power, per band and per rate. 1/2/5.5/11 Mbps CCK and 6 Mbps OFDM on 2.4 GHz; 6 Mbps OFDM and HT MCS0/4/7 on both bands. The backend has no TX-power API surface beyond its safe TSSI target (kSafeTssiTargetQdbm8733b) — establish what that target actually radiates before anyone proposes raising it.
  2. Occupied bandwidth + spectral mask at 20 and 40 MHz, both bands. This is the gate for the narrowband work and the sanity check on the 40 MHz centre-channel table.
  3. EVM at the top of the ladder (MCS7/20, MCS7/40). Per docs/bench-testing-near-field.md, EVM — not SNR — is the saturation tell; take the near-field precautions.
  4. On-air TX throughput via tests/bench_onair.py: Mbps = SDR duty × PHY rate, never monitor-sniffer frame counts (a sensitive receiver decodes weak frames and masks a real drop). Fill the README RTL8731BU row's 2.4 GHz / 5 GHz / 40 MHz cells.
  5. TSSI target validation. Confirm the closed-loop target is met and stable across a bounded run, and that the safe cap is neither leaving margin on the table nor overdriving the PA.

Traps this specific chip has already demonstrated

  • TSSI needs settling time, and a fast rate-switching run lies about power. Measured on the f72b DUT during rtl8733b: add RTL8731BU/RTL8733BU USB RX and TX #388: alternating CCK and OFDM at ~9 ms/frame leaves CCK airing ~5 dB above its settled level; the same stream paced to 86 ms/frame lands on the settled value. Any power or mask measurement taken during a mixed-rate stream is measuring the tracking loop, not the transmitter. Pace single-rate, let it settle, then measure.
  • The CCK↔OFDM TSSI table switch costs 84 ms (rtl8733b: CCK<->OFDM TSSI table switch costs 84 ms (136 USB register ops) inside send_packet #389). Do not build a per-rate sweep that flips the table between every sample and then wonder why the numbers drift.
  • One clean SDR read per session — a second back-to-back sdr_duty read can fail to reacquire and report ~0. Pin the B210 serial (the bench has two).
  • Re-check a known-good control adapter each session before believing any absolute number.

Acceptance criteria

  • README RTL8731BU (and RTL8733BU if the arriving board is that die) bandwidth cells populated from bench_onair.py, with the DUT model named as the other rows do.
  • docs/rtl8733b.md "Known gaps" loses the "No SDR was available" bullet and gains the measured OBW / mask / EVM / power table — each favourable number paired with its adversarial counterpart (worst band, worst rate, near-field caveat), per the repo's docs convention.
  • Every number reproducible from a script committed under tests/, not from a shell transcript.

Follow-up to #388. Related: #233.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions