diff --git a/README.md b/README.md index d7f7b32..683fc72 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,8 @@ The posture is **prove parity first, then improve**: ## Stock vs. this image Stock figures are from Release 20260907, re-measured 2026-09-10 from the extracted release -([`docs/stock-inventory/20260907/`](docs/stock-inventory/20260907/)). +([`docs/stock-inventory/20260907/`](docs/stock-inventory/20260907/)). The Wi-Fi and Bluetooth +rows are newer: they were re-measured against Release 20260912 on 2026-10-01. | | Stock MiSTer | This image | |---|---|---| @@ -74,7 +75,7 @@ Stock figures are from Release 20260907, re-measured 2026-09-10 from the extract | **SSH key login** | `authorized_keys` is lost on every Linux update | Read from the FAT card, so it survives updates | | **`.7z` extractor for updates** | p7zip 16.02 (2016), fetched off the internet as `linux/7za` | 7-Zip 26.03, built from source and shipped ([ADR 0023](docs/decisions/0023-ship-7zip-instead-of-fetching-p7zip-16.md)) | | **Wi-Fi** | Mainline drivers with firmware for most USB chips; no Broadcom, Redpine, `ath9k_htc` or Wi-Fi 6E | The same, plus those four families ([details](#wi-fi-and-bluetooth)) | -| **Bluetooth firmware** | Broad; missing the Realtek Wi-Fi 6 combo chips' Bluetooth | Broad; each side ships a few blobs the other lacks ([details](#wi-fi-and-bluetooth)) | +| **Bluetooth firmware** | Broad; missing the Realtek Wi-Fi 6 combo chips' Bluetooth | Everything stock ships that a driver loads, plus those ([details](#wi-fi-and-bluetooth)) | | **Filesystems** | Mainline exFAT and FAT; no NTFS; no way to repair exFAT | Same exFAT and FAT, plus NTFS and an on-device exFAT check and repair | | **Timezone on a fresh card** | UTC until the user runs `timezone.sh` | Detected once, on the first network connection ([ADR 0025](docs/decisions/0025-first-boot-timezone-autodetect.md)) | | **Image headroom** | 6.3% free in a 375 MiB image | 512 MiB image; CI fails a build that leaves under 15% free | @@ -268,8 +269,9 @@ rootfs (re-checked 2026-10-01). Background audits: [`docs/wifi-parity.md`](docs/ | Chip family | Stock | This image | Verified | |---|---|---|---| | Realtek 802.11n/ac (`rtl8xxxu`, `rtw88`: RTL8188, 8710, 8811/8821, 8812, 8814, 8822, 8723DU) | With firmware | Same | **Hardware** (RTL8822BU, WPA3 5 GHz) | -| Realtek Wi-Fi 6 (RTL8851BU, 8852BU) | `rtw89` with firmware | Same | Build | -| Realtek Wi-Fi 6E (RTL8852CU/8832CU) | None | Out-of-tree `rtl8852cu-morrownr`, the only USB driver that exists | Build | +| Realtek Wi-Fi 6 (RTL8851BU, 8852BU; RTL8852AU on the 7.2 kernels) | `rtw89` with firmware (no 8852AU) | Same, plus 8852AU | Build | +| Realtek Wi-Fi 6E (RTL8852CU/8832CU) | None | Out-of-tree `rtl8852cu-morrownr` on 6.18; mainline `rtw89` on the 7.2 kernels | Build | +| Realtek Wi-Fi 7 (RTL8922AU) | None | Mainline `rtw89`, 7.2 kernels only | Build | | AICSemi AIC8800 family (Tenda U2/U11, TX1U Nano…) | Driver and firmware | Same | Build | | MediaTek (MT7601U, MT76x0U/x2U, MT7663U, MT7921U, MT7925U) | `mt76` with firmware | Same | Build | | RTL8192DU | With firmware | Same | Build | @@ -278,15 +280,16 @@ rootfs (re-checked 2026-10-01). Background audits: [`docs/wifi-parity.md`](docs/ | Atheros AR9170 | `carl9170` without its firmware, so it fails | With firmware | Build | | Atheros AR6003/AR6004 | `ath6kl`, partial firmware | Same | Build | | Redpine RS9113/RS9116 | None | `rsi` with firmware | Build | -| Ralink RT73, Marvell (`mwifiex`, `libertas`) | Driver without firmware | Same (gap on both sides) | — | -| Bluetooth: Realtek | Missing the Wi-Fi 6 combo chips (RTL8851BU, 8852AU/BU/CU) | Has those; missing RTL8761CU and RTL8922AU | Pairing: **hardware** | -| Bluetooth: Qualcomm / Atheros | `ath3k` plus AR3012 configs; the full USB QCA rampatch set | `ath3k`; QCA Rome (6174A) only | Build | -| Bluetooth: MediaTek | MT7961, MT7925; no MT7922 | MT7961, MT7925; no MT7961 `1a` variant | Build | +| Ralink RT73, Marvell 88W8797/8801/8997 (`mwifiex`) | Driver without firmware | With firmware | Build | +| Bluetooth: Realtek | Missing the Wi-Fi 6 combo chips (RTL8851BU, 8852AU/BU/CU) | Has those, plus RTL8761CU and RTL8922AU | Pairing: **hardware** | +| Bluetooth: Qualcomm / Atheros | `ath3k`; the USB QCA rampatch set | Same, plus the QCA2066 board variant | Build | +| Bluetooth: MediaTek | MT7961, MT7925 | MT7920, MT7922, MT7961, MT7925 | Build | Deliberate omissions: Qualcomm QCA9377 over USB (`ath10k_usb`), whose upstream Kconfig says it "will not fully work" (stock ships it), plus four 2000s-era 802.11b/g drivers and a LiFi driver. Two Bluetooth drivers (Intel, BCM2033) build without firmware because none exists -for hardware this board can host. +for hardware this board can host. Marvell `libertas` (2006–07) still builds without firmware, +as on stock. Per-file detail: [`docs/firmware-parity.md`](docs/firmware-parity.md). ### The real-time kernel diff --git a/board/mister/de10nano/linux-rt.fragment b/board/mister/de10nano/linux-rt.fragment index 42f2089..1804943 100644 --- a/board/mister/de10nano/linux-rt.fragment +++ b/board/mister/de10nano/linux-rt.fragment @@ -175,3 +175,9 @@ CONFIG_PSTORE_PMSG=y CONFIG_NETCONSOLE=y CONFIG_NETCONSOLE_DYNAMIC=y + +# --- rtw89 USB drivers new in 7.x (not in 6.18; firmware already ships) ------- +# RTL8852AU (Wi-Fi 6), RTL8852CU (Wi-Fi 6E; 6.18 uses out-of-tree rtl8852cu-morrownr), RTL8922AU (Wi-Fi 7). +CONFIG_RTW89_8852AU=m +CONFIG_RTW89_8852CU=m +CONFIG_RTW89_8922AU=m diff --git a/board/mister/de25nano/linux.config b/board/mister/de25nano/linux.config index 0edb417..89982dc 100644 --- a/board/mister/de25nano/linux.config +++ b/board/mister/de25nano/linux.config @@ -293,3 +293,8 @@ CONFIG_SPI_SPIDEV=y # fragment. CONFIG_USB_DWC2=y CONFIG_USB_DWC2_HOST=y +# rtw89 USB drivers new in 7.x, not in the shared fragment (6.18 lacks them; firmware already ships). +# RTL8852AU (Wi-Fi 6), RTL8852CU (Wi-Fi 6E), RTL8922AU (Wi-Fi 7). +CONFIG_RTW89_8852AU=m +CONFIG_RTW89_8852CU=m +CONFIG_RTW89_8922AU=m diff --git a/docs/buildroot-config.md b/docs/buildroot-config.md index a147f03..2eca885 100644 --- a/docs/buildroot-config.md +++ b/docs/buildroot-config.md @@ -3613,10 +3613,13 @@ build installs nothing and exits 0 — `make linux-firmware-dirclean` first. | `_MEDIATEK_MT7921_BT` | v10.2 Bluetooth firmware for combo/BT dongles whose driver we already build (`docs/bluetooth-parity.md`); same class of gap as ath3k below — the driver binds, then dies at `request_firmware()`. `mediatek/BT_RAM_CODE_MT7961_1_2_hdr.bin` — the BT half of the MT7921AU combo dongle whose WiFi half we already ship. Requested by `btmtk.c`; without it WiFi works and BT does not | | `_MEDIATEK_MT7922_BT` | `mediatek/BT_RAM_CODE_MT7922_1_1_hdr.bin` — btusb carries MT7922 USB IDs, so this is a reachable USB path, not just the M.2 part | | `_MEDIATEK_MT7925_BT` | `mediatek/mt7925/BT_RAM_CODE_MT7925_1_1_hdr.bin` — BT half of the MT7925U combo | +| `_MEDIATEK_MT7920_BT` | `mediatek/BT_RAM_CODE_MT7961_1a_2_hdr.bin` — btmtk's `FIRMWARE_MT7920`, BT half of the MT7920 (2026-10, `docs/firmware-parity.md`) | | `_QUALCOMM_6174A_BT` | `qca/rampatch_usb_00000302.bin` + `qca/nvm_usb_00000302.bin` — QCA ROME 6174A over USB. btusb requests exactly the "_usb_" names (`btusb.c`: "qca/rampatch_usb_%08x.bin"), and its QCA path is self-contained — it needs no `CONFIG_BT_QCA`, so this firmware is the only missing piece. 132 KiB | | `_ATHEROS_6004` | `ath6k/AR6004/hw1.2` + `hw1.3` (132 KiB) — ath6kl_usb (`CONFIG_ATH6KL_USB=m`, new in v10.1; AR6003/AR6004 802.11n USB) | | `_REDPINE_RS9113` | `rsi/rs9113_*.rps` — rsi_usb | | `_REDPINE_RS9116` | `rsi/rs9116_wlan.rps`, requested by `rsi_91x_hal.c:35` (both toggles needed; `CONFIG_RSI_USB=m`) | +| `_RALINK_RT73` | `rt73.bin` — rt73usb was built without it; 2 KB (2026-10) | +| `_MWIFIEX_USB8797`, `_MWIFIEX_USB8801` | `mrvl/usb8797_uapsta.bin`, `usb8801_uapsta.bin` — mwifiex_usb (2026-10; `usbusb8997_combo_v4.bin` comes from linux-firmware-extra) | | `_AR3011` | `ath3k-1.fw` — the ath3k driver (`CONFIG_BT_ATH3K=m`, already on) for AR3011 USB Bluetooth. The driver was built but its firmware was NEVER installed, so every AR3011 dongle failed at `request_firmware()`; this closes that gap | | `_AR3012_USB` | `ar3k/*.dfu` — AR3012 USB Bluetooth patch/config RAM images, loaded by the same ath3k driver (and by btusb for the newer AR3012 IDs) | | `_BRCM_BCM43XX` | `brcm/brcmfmac4373.bin` + the 43xx SDIO/PCIe siblings — brcmfmac (`CONFIG_BRCMFMAC=m`, new). Implicitly `select`s `BR2_PACKAGE_LINUX_FIRMWARE_CYPRESS_CYW43XX` (`cypress/cyfmac*`, the same silicon post-acquisition) | diff --git a/docs/firmware-parity.md b/docs/firmware-parity.md index 59b9f74..05fb3a6 100644 --- a/docs/firmware-parity.md +++ b/docs/firmware-parity.md @@ -659,3 +659,42 @@ runs (287 MiB used / 225 MiB free, and 290/222) both predate this, and nobody ha re-run `scripts/check-size-budget.sh` since. 6.6 MiB against ~222 MiB free is ~3% of headroom, so the budget is not in danger — but that is arithmetic on a stale measurement, not a measurement. + +### 2026-10-01 — parity re-measured against stock Release 20260912 + +Stock 20260912 was compared per driver: for every Wi-Fi/Bluetooth module in each image, +`modinfo -F firmware` against the files that ship (stock: `modules.tar.gz`, +`firmware.tar.gz`, the zImage's IKCONFIG, and the base rootfs, which is where its +`regulatory.db` lives). Stock had closed most of its gaps. These are the files it shipped +and we did not, plus gaps on both sides, and what this change does with each. The cut-off +is chips under ~15 years old, or anything free when its driver is already built. + +| Added | Driver | Chip, year | Size | +|---|---|---|---| +| `qca/rampatch_usb_*`, `qca/nvm_usb_*` (all upstream USB names) + `qca/QCA2066/` | btusb (no `CONFIG_BT_QCA` needed) | Rome 2.0–3.2 (2014–16), WCN6855/QCA2066 (2020–21), WCN785x (2023) | ~1.3 MB | +| `rtl_bt/rtl8761cu_{fw,config}.bin` | btrtl | RTL8761CU USB dongle (2023) | 10 KB | +| `rtl_bt/rtl8922au_{fw,config}.bin` | btrtl | RTL8922AU Wi-Fi 7 combo, BT half (2024) | 71 KB | +| `mediatek/BT_RAM_CODE_MT7961_1a_2_hdr.bin` (`_MEDIATEK_MT7920_BT`) | btmtk | MT7920 BT half (2023) | 483 KB | +| `mrvl/usb8797_uapsta.bin`, `usb8801_uapsta.bin` (`_MWIFIEX_USB8797/8801`), `mrvl/usbusb8997_combo_v4.bin` | mwifiex_usb | 88W8797 (2012), 88W8801 (2014), 88W8997 (2016) | 1.4 MB | +| `rt73.bin` (`_RALINK_RT73`) | rt73usb | RT73 (2005): over the cut-off, but 2 KB and the driver is already built | 2 KB | + +Checked and **not** added: + +- `ar3k//{PS_ASIC.pst,RamPatch.txt,ar3kbdaddr.pst}` (stock ships them): only the UART + `hci_ath` path reads these; USB `ath3k.c` loads `ar3k/AthrBT_*.dfu` and `ramps_*.dfu`, + which already ship. +- `rtlwifi/rtl8723bu_bt.bin` (stock ships it): stock's copy is byte-identical to + linux-firmware's `rtlwifi/rtl8723bs_bt.bin` (the SDIO part, renamed), and 6.18's + `rtl8xxxu` never requests it: `enable_bluetooth` is read but never set, so RTL8723BU + always loads `rtl8723bu_nic.bin`. +- `mrvl/usb8766_uapsta.bin` (2011), `libertas/usb8388*`, `lbtf_usb.bin` (2006–07): ancient. + Their drivers still build without firmware, as on stock. +- `xone_dongle_02f9.bin`, `xone_dongle_091e.bin` (stock ships them): xone's own table marks + both PIDs as adapters built into laptops (ASUS/Lenovo, Surface Book 2). + +Stock-side findings for upstream (not changes here): stock lacks BT firmware for the Realtek +Wi-Fi 6 combos (`rtl8851bu`, `rtl8852au/bu/btu/cu`) and `carl9170-1.fw`, and builds no +`brcmfmac`, `ath9k_htc` or `rsi`. Several of its blobs are older than linux-firmware: +`rtl_bt/rtl8761bu_fw.bin` (2021; upstream 2023), `rtl_bt/rtl8822cu_fw.bin` and +`rtl8723d_fw.bin` (2018), `rtlwifi/rtl8188eufw.bin` and `rtl8192cu/eu*` (2018), and +`regulatory.db` (2022). It does not need `rtl_bt/rtl8761b_fw.bin`, which is the UART variant. diff --git a/docs/wifi-parity.md b/docs/wifi-parity.md index eabac11..b0dbb3e 100644 --- a/docs/wifi-parity.md +++ b/docs/wifi-parity.md @@ -1451,3 +1451,18 @@ at libusb finding no real device. `udevadm test` loads the rules file without co a device. - The DE25-Nano has no rootfs overlay and does not select the userspace profile, so none of this reaches it. That is consistent with its bare-developer-OS scope (ADR 0027). + +## 14. USB drivers new in 7.2 (2026-10-01) + +A diff of every Kconfig symbol under `drivers/net/wireless` and `drivers/bluetooth`, +6.18.54 against 7.2.8, finds three new USB Wi-Fi drivers and no new Bluetooth ones: +`RTW89_8852AU` (RTL8852AU, Wi-Fi 6), `RTW89_8852CU` (RTL8852CU, Wi-Fi 6E) and +`RTW89_8922AU` (RTL8922AU, Wi-Fi 7). None is in 6.18.y. All three are enabled on both 7.2 +kernels: `board/mister/de10nano/linux-rt.fragment` for the DE10 RT kernel, and +`board/mister/de25nano/linux.config` for the DE25. They are not in the shared fragment, +which must stay a no-op against the DE10's 6.18 config. Their firmware (`rtw89/rtw8852a_fw*`, +`rtw8852c_fw*`, `rtw8922a_fw*`) already ships via `_RTL_RTW89`. + +On 6.18, RTL8852CU stays on the out-of-tree `rtl8852cu-morrownr`, which is built only +against the 6.18 kernel, so the two drivers never compete for the same device IDs. The 7.2 +removals are PCMCIA Bluetooth cards and non-wireless staging drivers, none of them built here. diff --git a/package/linux-firmware-extra/Config.in b/package/linux-firmware-extra/Config.in index 215ff5a..d7a1785 100644 --- a/package/linux-firmware-extra/Config.in +++ b/package/linux-firmware-extra/Config.in @@ -3,12 +3,15 @@ config BR2_PACKAGE_LINUX_FIRMWARE_EXTRA depends on BR2_PACKAGE_LINUX_FIRMWARE default y help - Thirteen firmware files that a currently in-tree 6.18 kernel driver + Firmware files that a currently in-tree 6.18 kernel driver genuinely still requests, but that Buildroot's own linux-firmware package (BR2_PACKAGE_LINUX_FIRMWARE, see the Config.in one menu up) has NO sub-option for -- upstream linux-firmware ships every one of - these thirteen, Buildroot's curated Config.in list just never grew a - toggle for them. + them, Buildroot's curated Config.in list just never grew a toggle. + + 2026-10 additions (docs/firmware-parity.md, "2026-10-01"): btusb's + Qualcomm USB rampatch/NVM set (Rome, WCN6855/QCA2066, WCN785x), + btrtl's rtl8761cu and rtl8922au, and mwifiex_usb's 8997 blob. Seven are stock-parity files (docs/stock-inventory/20260907/firmware.md, re-based on stock release_20260907 in 2026-09): the four original diff --git a/package/linux-firmware-extra/linux-firmware-extra.mk b/package/linux-firmware-extra/linux-firmware-extra.mk index c3fd873..7abade7 100644 --- a/package/linux-firmware-extra/linux-firmware-extra.mk +++ b/package/linux-firmware-extra/linux-firmware-extra.mk @@ -107,6 +107,50 @@ LINUX_FIRMWARE_EXTRA_MEMBERS = \ mediatek/mt7663pr2h.bin \ mediatek/mt7663pr2h_rebb.bin \ mediatek/mt7668pr2h.bin \ + mrvl/usbusb8997_combo_v4.bin \ + qca/QCA2066/nvm_usb_00130201_030a.bin \ + qca/QCA2066/nvm_usb_00130201_gf_030a.bin \ + qca/QCA2066/rampatch_usb_00130201.bin \ + qca/nvm_usb_00000200.bin \ + qca/nvm_usb_00000201.bin \ + qca/nvm_usb_00000300.bin \ + qca/nvm_usb_00000302_eu.bin \ + qca/nvm_usb_00130200.bin \ + qca/nvm_usb_00130200_0104.bin \ + qca/nvm_usb_00130200_0105.bin \ + qca/nvm_usb_00130200_0106.bin \ + qca/nvm_usb_00130200_0107.bin \ + qca/nvm_usb_00130200_0109.bin \ + qca/nvm_usb_00130200_0110.bin \ + qca/nvm_usb_00130201.bin \ + qca/nvm_usb_00130201_010a.bin \ + qca/nvm_usb_00130201_010b.bin \ + qca/nvm_usb_00130201_0303.bin \ + qca/nvm_usb_00130201_gf.bin \ + qca/nvm_usb_00130201_gf_010a.bin \ + qca/nvm_usb_00130201_gf_010b.bin \ + qca/nvm_usb_00130201_gf_0303.bin \ + qca/nvm_usb_00190200.bin \ + qca/nvm_usb_00190200_0104.bin \ + qca/nvm_usb_00190200_0106.bin \ + qca/nvm_usb_00190200_0108.bin \ + qca/nvm_usb_00190200_0109.bin \ + qca/nvm_usb_00190200_010a.bin \ + qca/nvm_usb_00190200_010c.bin \ + qca/nvm_usb_00190200_010e.bin \ + qca/nvm_usb_00190200_0110.bin \ + qca/nvm_usb_00190200_0111.bin \ + qca/nvm_usb_00190200_0112.bin \ + qca/rampatch_usb_00000200.bin \ + qca/rampatch_usb_00000201.bin \ + qca/rampatch_usb_00000300.bin \ + qca/rampatch_usb_00130200.bin \ + qca/rampatch_usb_00130201.bin \ + qca/rampatch_usb_00190200.bin \ + rtl_bt/rtl8761cu_config.bin \ + rtl_bt/rtl8761cu_fw.bin \ + rtl_bt/rtl8922au_config.bin \ + rtl_bt/rtl8922au_fw.bin \ rtlwifi/rtl8192dufw.bin \ rtlwifi/rtl8192fufw.bin \ rtlwifi/rtl8710bufw_SMIC.bin \ diff --git a/package/mister-firmware/Config.in b/package/mister-firmware/Config.in index f2f0688..3b7e7ea 100644 --- a/package/mister-firmware/Config.in +++ b/package/mister-firmware/Config.in @@ -16,6 +16,7 @@ config BR2_PACKAGE_MISTER_FIRMWARE select BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7921 select BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7925 select BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX + select BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73 select BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX select BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX select BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX_BT @@ -28,6 +29,7 @@ config BR2_PACKAGE_MISTER_FIRMWARE select BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7921_BT select BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7922_BT select BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7925_BT + select BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7920_BT select BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_6174A_BT select BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6004 select BR2_PACKAGE_LINUX_FIRMWARE_REDPINE_RS9113 @@ -36,6 +38,8 @@ config BR2_PACKAGE_MISTER_FIRMWARE select BR2_PACKAGE_LINUX_FIRMWARE_AR3012_USB select BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XX select BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX + select BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8797 + select BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8801 select BR2_PACKAGE_WIRELESS_REGDB select BR2_PACKAGE_LINUX_FIRMWARE_EXTRA select BR2_PACKAGE_BCM20702_FIRMWARE diff --git a/scripts/ci-tests.sh b/scripts/ci-tests.sh index 321678d..d4bf846 100755 --- a/scripts/ci-tests.sh +++ b/scripts/ci-tests.sh @@ -937,14 +937,19 @@ for f in \ mediatek/mt7925/BT_RAM_CODE_MT7925_1_1_hdr.bin \ qca/rampatch_usb_00000302.bin qca/nvm_usb_00000302.bin \ brcm/BCM-0bb4-0306.hcd brcm/BCM20702A1-0b05-17cb.hcd \ - rtl_bt/rtl8761b_fw.bin rtl_bt/rtl8761bu_fw.bin + rtl_bt/rtl8761b_fw.bin rtl_bt/rtl8761bu_fw.bin \ + rtl_bt/rtl8761cu_fw.bin rtl_bt/rtl8922au_fw.bin \ + qca/rampatch_usb_00130201.bin qca/rampatch_usb_00190200.bin \ + qca/QCA2066/rampatch_usb_00130201.bin \ + mediatek/BT_RAM_CODE_MT7961_1a_2_hdr.bin rt73.bin \ + mrvl/usb8797_uapsta.bin mrvl/usb8801_uapsta.bin mrvl/usbusb8997_combo_v4.bin do tar_has "usr/lib/firmware/$f" || fw_missing="$fw_missing $f" done if [ -z "$fw_missing" ]; then - pass "WiFi/BT firmware: mt7663/ath3k/brcmfmac/rtl8192du/rsi + MTK-BT/QCA-BT/brcm-hcd/rtl8761b present" + pass "WiFi/BT firmware: mt7663/ath3k/brcmfmac/rtl8192du/rsi/rt73/mwifiex + MTK-BT/QCA-BT/brcm-hcd/rtl_bt present" else - fail "WiFi/BT firmware: mt7663/ath3k/brcmfmac/rtl8192du/rsi + MTK-BT/QCA-BT/brcm-hcd/rtl8761b present" \ + fail "WiFi/BT firmware: mt7663/ath3k/brcmfmac/rtl8192du/rsi/rt73/mwifiex + MTK-BT/QCA-BT/brcm-hcd/rtl_bt present" \ "missing:$fw_missing -- a driver would probe then fail at request_firmware()" fi @@ -967,6 +972,42 @@ else "missing:$v101_missing -- a CONFIG_ symbol was dropped, or the module tree is stale" fi +# rtw89 USB drivers that exist only on 7.x, enabled on both 7.2 kernels (docs/wifi-parity.md section 14). +# Asserted on the module trees because olddefconfig drops a fragment symbol silently. +RTW89_7X_MODS="rtw89_8852au rtw89_8852cu rtw89_8922au" +RT_KVER=$(sed -n 's/^BR2_PACKAGE_LINUX_RT_VERSION="\([^"]*\)".*$/\1/p' \ + "$ROOT/configs/mister_de10nano_defconfig" | tail -1) +rt89_missing="" +for m in $RTW89_7X_MODS; do + tar_has "usr/lib/modules/$RT_KVER/kernel/drivers/net/wireless/realtek/rtw89/$m.ko.xz" \ + || rt89_missing="$rt89_missing $m" +done +if [ -z "$RT_KVER" ]; then + fail "RT kernel WiFi: rtw89 8852au/8852cu/8922au .ko.xz present" "could not read BR2_PACKAGE_LINUX_RT_VERSION" +elif [ -z "$rt89_missing" ]; then + pass "RT kernel WiFi: rtw89 8852au/8852cu/8922au .ko.xz present ($RT_KVER)" +else + fail "RT kernel WiFi: rtw89 8852au/8852cu/8922au .ko.xz present ($RT_KVER)" \ + "missing:$rt89_missing -- dropped from board/mister/de10nano/linux-rt.fragment, or linux-rt is stale" +fi +DE25_KVER=$(sed -n 's/^BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="\([^"]*\)".*$/\1/p' \ + "$ROOT/configs/mister_de25nano_defconfig" | tail -1) +DE25_MODDIR="$ROOT/output-de25/target/lib/modules/$DE25_KVER/kernel/drivers/net/wireless/realtek/rtw89" +if [ ! -d "$ROOT/output-de25/target/lib/modules/$DE25_KVER" ]; then + skip "DE25 kernel WiFi: rtw89 8852au/8852cu/8922au .ko.xz present" "no output-de25 module tree for ${DE25_KVER:-?} -- the DE25 stack has not been built" +else + de25_89_missing="" + for m in $RTW89_7X_MODS; do + [ -f "$DE25_MODDIR/$m.ko.xz" ] || de25_89_missing="$de25_89_missing $m" + done + if [ -z "$de25_89_missing" ]; then + pass "DE25 kernel WiFi: rtw89 8852au/8852cu/8922au .ko.xz present ($DE25_KVER)" + else + fail "DE25 kernel WiFi: rtw89 8852au/8852cu/8922au .ko.xz present ($DE25_KVER)" \ + "missing:$de25_89_missing -- dropped from board/mister/de25nano/linux.config, or the DE25 kernel is stale" + fi +fi + # The SDIO bus drivers for the three vendors whose USB driver we build are all # `default y`/`default m` under CONFIG_MMC=y, so each needs an explicit `is not # set` in linux.config or olddefconfig silently builds a second bus driver for a