Skip to content

5/10 MHz narrowband on the RTL8814AU — completing the series#221

Merged
josephnef merged 1 commit into
masterfrom
jaguar1-8814au-narrowband
Jul 8, 2026
Merged

5/10 MHz narrowband on the RTL8814AU — completing the series#221
josephnef merged 1 commit into
masterfrom
jaguar1-8814au-narrowband

Conversation

@josephnef

Copy link
Copy Markdown
Collaborator

What

5/10 MHz narrowband on the RTL8814AU (4T4R) — the last chip in the series that hadn't been cracked, and the one whose bandwidth register genuinely doesn't look like it has a narrowband path. This completes narrowband across every supported chip and generation.

The trap it was hiding

The 8814's phy_SetBwRegAdc_8814A only pokes 0x8ac[1:0] — a 20/40/80 mode selector with no sub-20 value — so the divider looks absent. Worse: the 8812AU divide (which writes [9:8]/[21:20]) narrows nothing on the 8814 (first attempt: all three widths read 16.4 MHz on the SDR).

The crack was in the vendor's own field comment, not its code: 0x8ac[28, 21:20, 16, 9:6, 1:0]. That's the 8822B layout — the ADC clock is [9:8]+[16] and the DAC clock is [21:20]+[28], with the [16]/[28] high bits dominating (which the executed code never writes). Clear those high bits and write the 8821C/8822B divide codes verbatim (10 MHz 3/3, 5 MHz 2/2, small-BW 2/1) and the 8814 narrows exactly like an 8822B.

Result (bench, RTL8814AU 4T4R, host-pushed TX via the 3081 MCU)

  • SDR occupied bandwidth: 20M=16.4, 10M=8.2, 5M=4.1 MHz
  • 8814AU 10 MHz TX → Jaguar3 RX 8800; Jaguar3 10 MHz TX → 8814AU RX 7800
  • 8814AU 5 MHz TX @2.4 GHz → J3 RX 8800; 20 MHz regression 8700; ctest 13/13
  • Caps verified on hardware: RTL8814Anarrowband=1, bw=[5,10,20,40,80] (8812A same; the 8821A correctly stays narrowband=0 / [20,40,80])

The full picture

Narrowband now spans every supported chip — Jaguar1 (8812AU/8811AU/8814AU), Jaguar2 (8822B/8821C), Jaguar3 (8822C/8822E) — with one characterized exclusion, the 8821A (its 1T1R clock tree starves TX when the DAC clock is divided).

docs/narrowband.md's "walls" section now records the per-die encoding trap — the same register block can carry the same fields under a different value encoding per die; a divide that reads dead may just be landing in the wrong sub-field, so read the vendor's field comments, not just the code it executes — in place of the old "8814 is unported" note. README and CLAUDE.md updated to match.

🤖 Generated with Claude Code

The last chip in the series. The 8814A's phy_SetBwRegAdc only pokes
0x8ac[1:0] (a 20/40/80 mode selector with no sub-20 value), so the
divider looked absent — and the 8812AU divide (writing [9:8]/[21:20])
narrows nothing on it. But the vendor's own field comment documents the
full 0x8ac set as [28, 21:20, 16, 9:6, 1:0]: the 8814 shares the *8822B*
layout, where the ADC clock is [9:8]+[16] and the DAC clock is
[21:20]+[28] — the [16]/[28] high bits dominate. Clearing them and
writing the 8821C/8822B divide codes verbatim (10 MHz 3/3, 5 MHz 2/2,
small-BW 2/1) narrows the 8814 exactly as it does an 8822B.

Bench-verified (RTL8814AU 4T4R, host-pushed TX via the 3081 MCU):
- SDR occupied bandwidth: 20M=16.4, 10M=8.2, 5M=4.1 MHz
- 8814AU 10M TX -> Jaguar3 RX 8800; J3 10M TX -> 8814AU RX 7800
- 8814AU 5M TX @2.4G -> J3 RX 8800; 20M regression 8700; ctest 13/13
- caps: RTL8814A narrowband=1 bw=[5,10,20,40,80] (8812A same; 8821A
  correctly stays narrowband=0 / [20,40,80])

Narrowband now spans every supported Jaguar1 chip except the 8821A
(DAC-clock divide starves its 1T1R TX path). Docs/README/CLAUDE updated;
the narrowband doc's "walls" now records the per-die encoding trap
(same fields, different sub-field) instead of calling the 8814 unported.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@josephnef josephnef merged commit aef9b69 into master Jul 8, 2026
15 checks passed
@josephnef josephnef deleted the jaguar1-8814au-narrowband branch July 8, 2026 16:33
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