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.

jigyanshu-codes 2026-11-06

Hardware Report: ASUS Vivobook 15 (X1504ZA) - MT7902

  • Laptop: ASUS Vivobook 15 (X1504ZA / Alder Lake i5-1235U)
  • Wi-Fi Card: MediaTek MT7902 (PCIe 14c3:7902)
  • macOS Version: macOS Tahoe 26.7.2 (Darwin 25.6.0)

Bluetooth USB Status:
Bluetooth controller is present on internal USB 2.0 bus:

  • Vendor ID: 0x13D3 (AzureWave / MediaTek)
  • Product ID: 0x3579
  • Device Class: 0xEF (Wireless Device) / Location: 0x14A00000
  • Shows up under bluetoothd as THIRD_PARTY_DONGLE on USB.

Happy to provide additional ioreg dumps or test experimental MtkWlan builds on MT7902!

watchthelight 2026-11-07

Thanks, that's the first MT7902 report here. Honest status: the MT7902 needs a different backend (the older connac2 family, with its own DMA layout) that I haven't started, so there's nothing to test on it yet and MtkWlan won't start on it. MtkBt doesn't know 13D3:3579 either, since it only loads MT7925 Bluetooth firmware.

The plan is a chip table first that reads the id and stops cleanly on cards it doesn't support, and that probe-only build is what I'd ask you to run. Until then, the card's subsystem id would help: the SUBSYS_ part of its hardware id in Windows Device Manager, or the subsystem-id and subsystem-vendor-id of the 14c3:7902 entry in IORegistryExplorer.

jigyanshu-codes 2026-11-07

Thanks for the clear explanation regarding the connac2 vs connac3 backend! That explains our findings completely.

Here are the exact subsystem and hardware IDs from Windows Device Manager and macOS IORegistry for the ASUS Vivobook 15 (X1504ZA):

Wi-Fi (PCIe MT7902)

  • Hardware ID: PCI\VEN_14C3&DEV_7902&SUBSYS_55201A3B&REV_00
  • Subsystem ID (SUBSYS_): 55201A3B
    • Subsystem Vendor ID: 0x1A3B (AzureWave)
    • Subsystem Device ID: 0x5520
  • macOS IOReg compatible: <"pci1a3b,5520", "pci14c3,7902", "pciclass,028000", "PXSX">
  • ACPI Path: \_SB.PC00.RP07.PXSX

Bluetooth (USB 13D3:3579)

Regarding Bluetooth: we actually have 13D3:3579 running 100% natively on macOS Tahoe (audio streaming, microphone input, scanning, pairing). We built a dedicated injector loading the MT7902 RAM code and ROM patch (BT_RAM_CODE_MT7902_1_1_hdr.bin + rom_patch_e2.bin) via USB control transfers:
https://github.com/jigyanshu-codes/SimpleMtkBtFw/releases/tag/v1.1.1
Feel free to use the code or firmware offsets if helpful for MtkBt!

Whenever you have a probe-only test build or start the connac2 backend branch, I would be more than happy to test it on hardware and provide immediate logs!

Image
watchthelight 2026-11-10

Thanks, I've noted the IDs (subsystem 1A3B:5520, AzureWave). Good to know 13D3:3579 runs with your injector. MtkBt only handles the MT7925, and it's ISC, so I can't take GPL-3.0 code into it, but SimpleMtkBtFw is clearly the right answer for MT7902 Bluetooth today.

Nothing to test on the Wi-Fi side yet. I'll ask here when a probe-only build exists.

watchthelight 2026-11-10

A note for MT7927 (RZ738) owners: qqwqtzd/mt7927-hackintosh is a port of this driver, the menu kext and the Bluetooth loader to that chip, and its README reports it running on Tahoe 26.7.1 and 26.7.2. I have not tested it and have no MT7927 here. I asked the author whether the patches can come upstream: qqwqtzd/mt7927-hackintosh#1

Reply on GitHub