Jaguar3 (RTL8822CU / RTL8812CU) userspace port#102
Open
josephnef wants to merge 4 commits into
Open
Conversation
2403c8e to
6b4e0d5
Compare
Adds a self-contained Jaguar3 (rtl8822c PHY generation) HAL under src/jaguar3/ for the RTL8822CU / RTL8812CU, dispatched at the factory by USB PID. Ports Realtek's vendor bring-up from source: power-on, HalMAC firmware download, MAC/BB/RF init, and the halrf calibration the TX path needs (3-wire RF + DACK + beamforming init), then RX and on-air TX at 20 MHz plus the 5/10 MHz narrowband re-clock the Jaguar-1 silicon lacks. Sustained continuous TX on UNII-1 is kept alive by a coex runtime thread that ports the rtw88 watchdog's 5 GHz coex path. Introduces a chip-family-agnostic IRtlDevice interface: RtlJaguarDevice (Jaguar1) and the new RtlJaguar3Device both implement it, and the demos and the WiFiDriver factory treat them uniformly via dynamic_cast for chip-specific features. The library takes no behaviour from environment variables — narrowband bandwidth and the TX-power reference go through the API (SelectedChannel / SetTxPower); the CLI demos read env and call the API. Validated on RTL8812CU hardware (RX and on-air TX both SDR-confirmed). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
6b4e0d5 to
2c7f253
Compare
Document the second-generation Jaguar3 (rtl8822c) support alongside the Jaguar1 family: intro, hardware landscape, the out-of-scope naming traps (8822CU/Jaguar3 in scope vs 8822BU/Jaguar2 out of scope), and the project layout (src/jaguar3/, hal/phydm/rtl8822c/). Add the RTL8812CU row to the on-air TX throughput table with band-grouped numbers measured on hardware via the same SDR channel-occupancy method as the other chips (tests/bench_onair.py, MCS7/20 MHz, saturating flood): 2.4 GHz 65, UNII-1 60, UNII-2/3 61 Mbps. A new '‡' legend marks the UNII-2/3 ~50-60 s sustained-TX stop. RTL8812CU added to bench_onair.py so the table stays reproducible. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
On-hardware retest (RTL8812CU, ch149, USRP B210 channel-occupancy): sustained continuous TX holds flat at ~93% duty / ~60 Mbps for ~3 min with zero bulk-OUT failures — the previously-documented "~50-60 s stop on UNII-2/3" no longer reproduces. The coex runtime thread added for UNII-1 also keeps the upper band alive. Update README table (drop the '‡' stop caveat) and CLAUDE.md to current state; DFS UNII-2 channels (ch100/120/144) remain unvalidated and are called out as such. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
On-hardware (RTL8812CU, USRP B210 channel-occupancy) the DFS UNII-2 channels now validated alongside UNII-1/UNII-3: ch100/120/144 each held ~93% duty / ~60 Mbps (MCS7/20) flat across 20/50/80 s, ~40k submits, zero bulk-OUT failures — no CAC/radar gating blocked TX. Drop the "DFS not yet validated" caveat from README + CLAUDE.md. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds the Realtek Jaguar3 (
rtl8822cPHY generation) chip family todevourer — RTL8822CU / RTL8812CU (
0bda:c812,0bda:c82c, …) — as aself-contained HAL under
src/jaguar3/, dispatched at theWiFiDriverfactory by USB PID.
What it does
Ports Realtek's vendor bring-up from source:
silicon physically lacks), selected through
SelectedChannelkeeps sustained continuous TX alive on UNII-1
Architecture
Introduces a chip-family-agnostic
IRtlDeviceinterface.RtlJaguarDevice(Jaguar1) and the new
RtlJaguar3Deviceboth implement it; the demos andthe factory treat them uniformly, downcasting only for chip-specific
research helpers. The shared substrate (
RtlUsbAdapter, radiotap,PhyTableLoader) is reused.The library takes no behaviour from environment variables: narrowband
bandwidth and the TX-power reference go through the API
(
SelectedChannel/SetTxPower). The CLI demos read env and call the API.The 8822C phydm tables under
hal/phydm/rtl8822c/are generated from theupstream Realtek source by
tools/extract_8822c_phy_tables.py.Validation
Validated on RTL8812CU hardware — RX and on-air TX are both SDR-confirmed,
including the narrowband re-clock. Hardware testers for RTL8822CU and the
rtl8822eparts (8812EU/8822EU, not yet wired) are welcome.