watchthelight labs

Other MediaTek cards (MT7921, RZ608, MT7922, RZ616): what the port needs, testers wanted #2

openhelp wanted
watchthelight 2026-10-20

This driver runs the MediaTek MT7925 (14c3:7925) and matches the AMD RZ717 (14c3:0717), which is the same chip. The MT7921, MT7921K (RZ608), MT7922 (RZ616), MT7920 and MT7902 are not supported, and the chip check in src/MtkWlan.cpp refuses them on purpose: a kext that loads on a card it cannot bring up would take away the Wi-Fi that SimpleMtkWlan and its forks give those cards today.

What the MT7921/MT7922 port needs (from reading Linux mt76, mt7921 and mt7925 drivers side by side; nothing of this is written yet):

  1. Firmware: WIFI_RAM_CODE_MT7961_1.bin and WIFI_MT7961_patch_mcu_1_2_hdr.bin instead of the MT7925 pair. tools/gen_firmware.py embeds the files by name and checks firmware/SHA256SUMS; the loader in src/MtkFw.cpp reads the same header layout, so this part is a file swap plus the chip id in the check.
  2. MCU commands: the MT7925 driver uses the UNI command set throughout. The MT7921 family answers most of them, but a few (station record, bss info, the channel switch) are the older non-UNI commands in mt76's mt7921 driver. src/MtkScan.cpp and src/MtkJoin.cpp are where the calls live.
  3. Register map and DMA: WFDMA ring bases differ between the two families; src/MtkRegs.cpp and src/MtkDma.cpp hold the MT7925 values, mt76's mt7921/regs.h has the others.
  4. TX power tables (src/MtkPower.cpp) are per chip; the firmware's defaults are safe until then.
  5. The Bluetooth loader is a separate matter: the MT7921/MT7922 Bluetooth firmware files and WMT sequence differ, and SimpleMtkBtFw already covers them.

What I need: a card. I only have the MT7925 laptop. If you have an MT7921, RZ608, MT7922 or RZ616 in an OpenCore machine and are willing to run test builds and send tools/mtk-report.sh archives, reply here with the PCI ids (ioreg -p IOPCI -l | grep -E '"IOName"|vendor-id|device-id' -A2 or the System Information PCI pane) and your macOS build. A card on loan would be faster still.

Until this closes, the right driver for those cards is SimpleMtkWlan (pengubow and forks) or AirportMtkWlan for the native menu on macOS 15.2 to 15.x.

watchthelight 2026-10-22

Upstream scout, 2026-10-22: for MT7922 / RZ616 owners, hbyonly1/itlmt7922-wifi is a working port of itlmt7925 to the older Connac2 firmware family (14c3:0616). The author reports WPA2 with HT/VHT on real hardware on macOS 15.8.1, through an Ethernet back end with a menu app, no native AirPort front end yet. It's Clear BSD, and its docs/PORTING.md lists the register, TXWI/RXD and key-table differences this issue asks about. If you have one of those cards, that's the project to try today.

Write-up: https://github.com/watchthelight-labs/research/blob/main/scout/mt7925-wifi/2026-10-22.md

watchthelight 2026-10-31

An update on other MediaTek cards, from a research pass on 2026-10-31.

Linux splits this family into two generations behind one shared library (mt792x-lib):

Card PCI ID Generation Linux firmware
MT7921 / RZ608 14c3:7961, 14c3:0608 connac2 WIFI_RAM_CODE_MT7961_1.bin
MT7920 14c3:7920 (or 7961 with a bound-out bit) connac2 WIFI_RAM_CODE_MT7961_1a.bin
MT7922 / RZ616 14c3:7922, 14c3:0616 connac2 WIFI_RAM_CODE_MT7922_1.bin
MT7902 14c3:7902 connac2, its own DMA layout WIFI_RAM_CODE_MT7902_1.bin
MT7925 / RZ717 14c3:7925, 14c3:0717 connac3 mediatek/mt7925/WIFI_RAM_CODE_MT7925_1_1.bin (what we ship)
MT7927 / RZ738 14c3:7927, 14c3:6639, 14c3:0738 connac3 variant mediatek/mt7927/WIFI_RAM_CODE_MT6639_2_1.bin

The connac3 cards are the nearest to our MT7925 code. MT7927 is still the hardest of them: Linux needed its own DMA rings, reset sequence and ASPM handling. The connac2 cards (MT7921, MT7922, MT7920) use an older firmware command set, so they need a second backend in the core. The front end and the Wi-Fi menu stay the same for every card. The plan, in order:

  1. A chip table in MtkWlan picks the card from its CHIPID register. An unknown card then reports its id and stops cleanly, where today the driver refuses to start.
  2. A wider core interface for 6 GHz and 160 MHz.
  3. The connac2 backend, which needs test cards.

Scope is PCIe only. USB dongles and SDIO are out for now.

If you have one of these cards in a Hackintosh, these help most:

  • the card name and the laptop or board;
  • ioreg -r -n pci14c3,<id> -l | head -40 (or the line from system_profiler SPPCIDataType with the vendor, device and subsystem IDs);
  • whether Bluetooth on it shows up as a USB device (system_profiler SPUSBDataType | grep -i -A3 mediatek).

Please don't load MtkWlan on a card other than an MT7925 yet. It will not start there.

Reply on GitHub