Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 12 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 |
|---|---|---|
Expand All @@ -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)) |
Comment thread
mcfbytes marked this conversation as resolved.
| **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 |
Expand Down Expand Up @@ -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 |
Expand All @@ -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

Expand Down
6 changes: 6 additions & 0 deletions board/mister/de10nano/linux-rt.fragment
Original file line number Diff line number Diff line change
Expand Up @@ -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
Comment thread
mcfbytes marked this conversation as resolved.
5 changes: 5 additions & 0 deletions board/mister/de25nano/linux.config
Original file line number Diff line number Diff line change
Expand Up @@ -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
Comment thread
mcfbytes marked this conversation as resolved.
3 changes: 3 additions & 0 deletions docs/buildroot-config.md
Original file line number Diff line number Diff line change
Expand Up @@ -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) |
Expand Down
39 changes: 39 additions & 0 deletions docs/firmware-parity.md
Original file line number Diff line number Diff line change
Expand Up @@ -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/<id>/{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.
15 changes: 15 additions & 0 deletions docs/wifi-parity.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
9 changes: 6 additions & 3 deletions package/linux-firmware-extra/Config.in
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
44 changes: 44 additions & 0 deletions package/linux-firmware-extra/linux-firmware-extra.mk
Original file line number Diff line number Diff line change
Expand Up @@ -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 \
Expand Down
4 changes: 4 additions & 0 deletions package/mister-firmware/Config.in
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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
Expand Down
47 changes: 44 additions & 3 deletions scripts/ci-tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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
Expand Down
Loading