Skip to content

docs: catch the README and both primers up with two weeks of work - #342

Merged
josephnef merged 2 commits into
masterfrom
docs-catchup-newcomers
Jul 26, 2026
Merged

docs: catch the README and both primers up with two weeks of work#342
josephnef merged 2 commits into
masterfrom
docs-catchup-newcomers

Conversation

@josephnef

@josephnef josephnef commented Jul 26, 2026

Copy link
Copy Markdown
Collaborator

47 commits landed since 12 July — the Kestrel Wi-Fi 6 HAL and its HE features,
six firmware-offload PRs, adaptive channel migration, LDPC as a first-class
primitive — and none of it reached the pages a newcomer actually reads.

What had drifted, all verified before writing:

  • six docs linked from nowhere in the README (he-trigger-ul,
    he-extended-range, 8852c-quirks, and the whole channel-migration trio —
    an entire subsystem with two demos, undiscoverable)
  • four demos missing from the binaries table (chanmig, chanscout,
    dwelltx, kestrelprobe)
  • the CMake option list predating DEVOURER_KESTREL_8852B/C and DEVOURER_PCIE
  • "Why devourer" not mentioning 802.11ax at all — the hardware table carried
    the 8852B/C rows, but the pitch had no HE, no extended range, no trigger
    vocabulary
  • the RF primer teaching the OFDM comb in §1 and never saying a Wi-Fi 6 radio
    slices it between users; §3 introducing FEC and never showing what it buys

Four new figures

House style throughout — one generator per figure in tools/, monitor_style
palette and chrome, save_gif(colors=48), Pillow only.

figure where what it shows
he_ofdma_trigger.gif RF primer §11 a grant table composed on the host, the Trigger frame built around it, and a monitor reading every parameter back off the air unchanged
he_extended_range.gif RF primer §12 the ER SU / DCM ladder — three ~3 dB rungs, each paid for in rate
ldpc_waterfall.gif RF primer §3 the coding-gain waterfall, and which receivers can actually decode it
fw_offload.gif driver primer §14 H2C as a speed technique rather than a message pipe

Each figure is scoped to what was measured, and each states its limit in the
same breath as its win:

  • The trigger figure shows the validated round trip — command in, frame out,
    parameters verified — which is what makes the adapter an instrument for 11ax
    work. One footer line carries the boundary: generating the schedule is
    available, owning it needs firmware these client parts don't carry, because
    only a firmware-scheduled trigger arms the receiving MAC's SIFS window.
  • The LDPC curve shape is labelled illustrative on its face; the measured
    quantity is the ~3 dB gap at the 10 %-delivery crossing. The truth table
    beside it is bench-derived from AdapterCaps — the 8821A misses VHT-LDPC,
    the 8814A decodes but reports no per-frame flag.
  • The offload figure ends on the honest half: offload frees the host, not the
    radio. The ~1.5 ms settle floor does not care who wrote the registers, so
    time-to-usable goes ~5 ms → ~1.7 ms, not to zero.

README

A Start-here reading order at the top of "Going deeper" (there are ~30 links
below it), Wi-Fi 6 and channel-migration value bullets, the missing demos and
build options, and homes for all six orphans.

Two stale facts corrected

  • Binary sizes were measured, not guessed. The page claimed ~1.0 MB /
    ~2.6 MB; it is 1.60 MB for an 8812AU-only rxdemo against 6.30 MB
    all-on, with 4.17 MB at 11ac-only — the verbatim-vendored halbb/halrf
    plane alone accounts for ~2.1 MB. CLAUDE.md carried the same stale pair and
    is fixed too.
  • Termux → PixelPilot as the example behind the no-kernel-driver claim: an
    FPV ground station on an unmodified phone is the real demonstration.

Verification

Checked as a loop, not by eye: zero orphan docs; the figure counts written in
both primer intros and the README equal the actual ![...] counts (15 and 14);
no missing image files; 46/46 ctest green.
docs/experiments/issue-330-rx-ring-starvation.md is deliberately left
unlinked — it is an ongoing experiment, not a feature.

🤖 Generated with Claude Code

josephnef and others added 2 commits July 26, 2026 21:46
47 commits landed since 12 July — the Kestrel Wi-Fi 6 HAL and its HE
features, six firmware-offload PRs, adaptive channel migration, LDPC as a
first-class primitive — and none of it reached the pages a newcomer
actually reads. Six docs were linked from nowhere, four demos were
missing from the binaries table, the CMake list predated the Kestrel
options, and "Why devourer" did not mention 802.11ax at all.

Four new figures, house style, one generator each:

- he_ofdma_trigger.gif (RF primer 11) — the section-1 comb sliced into
  resource units, and the Trigger frame naming who transmits where. Two
  lanes: what the standard does, and what host injection achieves on
  shipped client firmware, which is a correct frame on the air and no
  answer, because a host-injected frame never arms the MAC's SIFS
  receive window. That boundary is the teaching content.
- he_extended_range.gif (RF primer 12) — the ER SU / DCM range ladder,
  three rungs of ~3 dB, each paid for in rate, ending on the comparison
  that matters: narrowband is the bigger win but needs devourer at both
  ends; ER SU interoperates with anyone's 802.11ax.
- ldpc_waterfall.gif (RF primer 3) — section 3 walks the bits through
  the encoder and never says what it buys. The waterfall pair and the
  ~3 dB gap, plus the bench-derived truth table for which receivers can
  decode it, which is not uniform. The curve shape is labelled
  illustrative; the gap is the measured quantity.
- fw_offload.gif (driver primer 14) — H2C as a speed technique rather
  than a message pipe, and the honest half: offload frees the host, not
  the radio. The ~1.5 ms settle floor does not care who wrote the
  registers.

README also gains a Start-here reading order, Wi-Fi 6 and
channel-migration value bullets, the missing demos and build options,
and homes for all six orphans.

Two stale facts corrected while here. The binary-size claim was measured,
not guessed: an 8812AU-only rxdemo is ~1.6 MB against ~6.3 MB all-on, not
the ~1.0/~2.6 on the page — the verbatim-vendored halbb/halrf plane alone
accounts for ~2.1 MB. And Termux was a thin example of the no-kernel-
driver claim; PixelPilot, which runs devourer as an FPV ground station on
an unmodified phone, is the real one.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The first version spent half its canvas on an empty channel: a second
lane whose content was the absence of a reply. Nothing teaches well
there, and a reader opening the RF primer to learn what OFDMA is got a
figure that was 50% blank.

Show the validated capability instead. You write a grant table — who,
which resource unit, what MCS, how many streams, what target RSSI —
devourer builds the Trigger frame around it and airs it, and an
independent monitor pulls every parameter back off the air unchanged.
Command in, frame out, parameters verified. That round trip is what makes
the adapter an instrument for 11ax work: an arbitrary, exactly-specified
Trigger on demand, against equipment you want to characterise.

The boundary keeps one footer line and a paragraph, which is the weight
it deserves: generating the schedule is available, owning it needs
firmware these client parts don't carry.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@josephnef
josephnef merged commit 85c5f80 into master Jul 26, 2026
18 checks passed
@josephnef
josephnef deleted the docs-catchup-newcomers branch July 26, 2026 19:10
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