You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The RTL8822E family (WiFi-only RTL8812EU0bda:a81a + BT-combo RTL8822EU0bda:e822, chip-id 0x17, Jaguar3) carries several documented-but-not-root-caused quirks and untested areas. This issue tracks a systematic campaign to (a) root-cause the open ones, (b) confirm the ones we work around blindly, and (c) land a definitive docs/8822e-quirks.md so nothing about this chip is folklore.
Known quirks — root-caused vs OPEN
#
Quirk
Status
Code
1
Path-B OFDM TXAGC (0x41e8) desenses RX — any nonzero write near-deafens the RX, value-independent, field-specific. Neutralized structurally (skip_path_b_ofdm_ref gated on _rx_wanted); cost = path-B OFDM TX pinned to table default in TX+RX.
ROOT CAUSE OPEN — "suspected path-B TSSI/gain-stage asymmetry vs the kernel's"
2.4 GHz RX-deaf without a 3-wire re-tune — BB-window RF writes don't push RF18/RXBB to the 2G analog front-end; needs the 0x1830[29]/0x4130[29] brackets. Fixed, but fragile (5 GHz survives on init defaults).
Retrofit RX is unreliable — DEVOURER_TX_WITH_RX must be set beforeInitWrite; post-hoc filter re-open + enable_rx_path is unreliable.
known, document + test
RtlJaguar3Device.h:45
6
IQK clears the 40 MHz TX_CCK_IND bit (hardware-observed on the 8812EU) — calibration-order fix-up.
fixed, verify
RadioManagementJaguar3.h:204
7
The BT-combo RTL8822EU (0bda:e822) is entirely untested — all EU validation to date is the WiFi-only 8812EU. Does the combo part need the coex runtime thread the way the CU does?
UNKNOWN
Jaguar3Calibration.h:20, coex thread notes in CLAUDE.md
Test matrix to close the gaps
Small mods to build on android #1 (the big one): bisect devourer's TXAGC bring-up sequence against the vendor kernel's (tests/eu_txagc_regdiff.sh + tests/decode_txagc.py already diff 0x18e8/0x41e8). Determine whether a correct path-B TSSI/gain-stage setup lets 0x41e8 be programmed without desense — i.e. recover path-B OFDM TX power in TX+RX mode. Confirm/refute the TSSI-asymmetry hypothesis with RX-sensitivity (MDS) measurements as 0x41e8 and the path-B TSSI regs are swept.
Log libusb error code in rtw_read #2: validate 2.4 GHz RX across every channel switch and bandwidth (20/40/80 + 5/10 narrowband), incl. 5↔2.4 GHz band hops (tests/eu_rx_validate.sh), asserting the front-end actually re-tunes each time.
Fix unreadable code in logs #3: root-cause the 2.4 GHz TX shortfall — PA bias (efuse PPG_PABIAS_2G*), TXAGC reference, or the same 2G-front-end path as Log libusb error code in rtw_read #2 on the TX side. SDR duty × PHY-rate on-air (tests/bench_onair.py), compared to the vendor driver.
Board variance: repeat on ≥2 different 8812EU/8822EU boards (efuse RFE-type / PA-bias layouts differ — HalJaguar3.cpp:101 handles rfe_type 21..24).
Full per-band × per-bandwidth × RX/TX/full-duplex matrix via tests/regress.py (EU rows already present) + the on-air/SDR benches.
Deliverable
docs/8822e-quirks.md — every confirmed behaviour, each quirk marked root-caused or worked-around, the residual costs (e.g. path-B TX power in TX+RX), and the reproducers. Update the README bench row once #3 is understood.
Hardware
Reference: LB-LINK BL-M8812EU2 (0bda:a81a, WiFi-only). Needed additionally: an RTL8822EU (BT combo, 0bda:e822) and a second 8812EU/8822EU board for variance. VM per tests/setup_vm.sh for the kernel-cross-validation cells.
Goal
The RTL8822E family (WiFi-only RTL8812EU
0bda:a81a+ BT-combo RTL8822EU0bda:e822, chip-id0x17, Jaguar3) carries several documented-but-not-root-caused quirks and untested areas. This issue tracks a systematic campaign to (a) root-cause the open ones, (b) confirm the ones we work around blindly, and (c) land a definitivedocs/8822e-quirks.mdso nothing about this chip is folklore.Known quirks — root-caused vs OPEN
0x41e8) desenses RX — any nonzero write near-deafens the RX, value-independent, field-specific. Neutralized structurally (skip_path_b_ofdm_refgated on_rx_wanted); cost = path-B OFDM TX pinned to table default in TX+RX.RadioManagementJaguar3.{h,cpp}(apply_power_by_rate_8822e,wr(0x41e8,…)),RtlJaguar3Device.h(_rx_wanted)0x1830[29]/0x4130[29]brackets. Fixed, but fragile (5 GHz survives on init defaults).RadioManagementJaguar3.cpp:172HalJaguar3.cpp(cache_efuse_8822e,efuse_pwr_cut_8822e),RtlJaguar3Device.cpp:1068DEVOURER_TX_WITH_RXmust be set beforeInitWrite; post-hoc filter re-open +enable_rx_pathis unreliable.RtlJaguar3Device.h:45TX_CCK_INDbit (hardware-observed on the 8812EU) — calibration-order fix-up.RadioManagementJaguar3.h:2040bda:e822) is entirely untested — all EU validation to date is the WiFi-only 8812EU. Does the combo part need the coex runtime thread the way the CU does?Jaguar3Calibration.h:20, coex thread notes in CLAUDE.mdTest matrix to close the gaps
tests/eu_txagc_regdiff.sh+tests/decode_txagc.pyalready diff0x18e8/0x41e8). Determine whether a correct path-B TSSI/gain-stage setup lets0x41e8be programmed without desense — i.e. recover path-B OFDM TX power in TX+RX mode. Confirm/refute the TSSI-asymmetry hypothesis with RX-sensitivity (MDS) measurements as0x41e8and the path-B TSSI regs are swept.tests/eu_rx_validate.sh), asserting the front-end actually re-tunes each time.efuse PPG_PABIAS_2G*), TXAGC reference, or the same 2G-front-end path as Log libusb error code in rtw_read #2 on the TX side. SDR duty × PHY-rate on-air (tests/bench_onair.py), compared to the vendor driver.HalJaguar3.cpp:101handles rfe_type 21..24).Full per-band × per-bandwidth × RX/TX/full-duplex matrix via
tests/regress.py(EU rows already present) + the on-air/SDR benches.Deliverable
docs/8822e-quirks.md— every confirmed behaviour, each quirk marked root-caused or worked-around, the residual costs (e.g. path-B TX power in TX+RX), and the reproducers. Update the README bench row once #3 is understood.Hardware
Reference: LB-LINK BL-M8812EU2 (
0bda:a81a, WiFi-only). Needed additionally: an RTL8822EU (BT combo,0bda:e822) and a second 8812EU/8822EU board for variance. VM pertests/setup_vm.shfor the kernel-cross-validation cells.