watchthelight labs

Releases

MtkWlanNative 0.4.15

0.4.15 · 2026-10-31

macOS now gets the link quality of the Wi-Fi link. Before this release State:/Network/Interface/en1/LinkQuality was never set, so apsd treated the link as bad and Apple push never connected over Wi-Fi. That kept iMessage, FaceTime and Handoff from working on this card. 0.4.15 reports it through setLQM once a second.

Also in this release:

  • Every scan result now carries its network's real width, built from the HT and VHT Operation elements, which fixes #1.
  • The country code is the access point's Country element, where it used to be XZ.
  • The extended BSS info now has HT and VHT maps.

Booted on 26.7.2 (25G332) on the Legion 5 with MtkWlan 0.12.1:

  • LinkQuality : 100 is set for en1.
  • apsd logs isBadLQ? NO and received a push.
  • wdutil info shows Country Code US and 5g108/80.
  • A scan lists every network at its 80 MHz width.

Full notes are in CHANGELOG.md.

MtkWlanNative.kext sha256 58be03d84c5fa520b67738278aa3dac71654e57accbdb9d618d0e0a8f600801d, built for ABI 25G241 and 25G332 (macOS 26.7.1 and 26.7.2).

Downloads

MtkWlanNative 0.4.14

0.4.14 · 2026-10-28

Adds macOS 26.7.2 (25G332). Its IO80211 and IOSkywalk class sizes, vtables and request slots are identical to 25G241's (tools/kcabi compare, verdict unchanged), so the same binary serves both builds; abi/25G332/ differs from abi/25G241/ only in the build name. The kext still refuses any build it does not list, and MtkWlan then keeps its Ethernet port.

Booted on 26.7.2 (25G332) on the Legion 5 with MtkWlan 0.12.1: the native interface came up at boot and joined the saved network on its own. Full notes in CHANGELOG.md.

MtkWlanNative.kext sha256 da575c6fbb215bbd8e8f6076f47f877ccffebe8d3a4487d5a007944df6894ce2, built for ABI 25G241 and 25G332 (macOS 26.7.1 and 26.7.2).

Downloads

MtkWlanNative 0.4.13

0.4.13 · 2026-10-23

The Wi-Fi details in macOS are real now (#1). Needs MtkWlan 0.12.1 for the rate fields; older cores fall back to the old answers.

wdutil info on the author's Legion 5 (VHT80 access point, channel 100):

PHY Mode       : 11ac
MCS Index      : 9
Guard Interval : 400
NSS            : 2
Channel        : 5g100/80
Tx Rate        : 866.0 Mbps

0.4.11 showed 20 MHz and a fixed 54 Mbps.

  • getMCS, getMCS_VHT and getGUARD_INTERVAL answered, with the layouts AppleBCMWLANCore uses on 25G241; the current channel carries its width and DFS flag.
  • The country code macOS sets goes to the core.
  • A private Wi-Fi address the core refuses is tried again every 2 s instead of once, so a network should no longer look dead until Private Wi-Fi Address is turned off.
  • Up to 128 networks in the Wi-Fi menu.

Thanks to f0xeri's qwz-macos for showing which requests Tahoe makes before it fills these fields. Full notes in CHANGELOG.md.

MtkWlanNative.kext sha256 ae75e20aba3c6949fa770613a612d9fb203a7b42ff1bb633a547d03911675f9f, built for ABI 25G241 (macOS 26.7.1).

Downloads

MtkWlanNative 0.4.11

0.4.11 · 2026-10-18

Faster upload: the Tx queues restart on the next 2 ms tick after the core frees a slot, instead of waiting for the 10 ms control poll that capped upload near 190 Mbit/s. Tx completion also moves its pending list once per tick instead of once per packet.

Tested on the author's laptop (macOS 26.7.1 25G241) with MtkWlan 0.11.3: about 410 Mbit/s of local UDP on VHT 80 MHz 2x2, gateway ping 3-4 ms. The release binary is the tested one (sha256 starts a69d78f4f576).

Downloads

MtkWlanNative 0.4.10

0.4.10 · 2026-10-18

Claims the MtkWlan core at the end of probe (needs MtkWlan 0.11.1), so a slow Apple interface start can no longer let the Ethernet front end win and leave the Wi-Fi menu empty until the next reboot. Every place start gives up now declines, so the fallback still comes at once when the front end cannot run. Debug boot-arg mtknativedelay=<ms> (max 60000) holds the interface start back for testing.

macOS 26.7.1 (25G241) only. Tested on the author's laptop with a forced 25 s delay: bound after 24.2 s, no fallback, lease, Wi-Fi menu. The release binary is the tested one (sha256 starts b5002eeb2b48).

Downloads

MtkWlanNative 0.4.9

0.4.9 · 2026-10-18

First stable release of the native Wi-Fi front end for the MediaTek MT7925 on macOS Tahoe 26.7.1 (25G241). With MtkWlan 0.11.0 and boot-args mtkfe=native mtknativeif=1: the Wi-Fi menu lists networks, macOS runs the scans and the joins, saves the network, auto-joins at boot, applies a private address per network, DHCP and a real default route; the link held for ten quiet minutes with zero leaves on the author's laptop. Since 0.4.5: the join lands on the access point macOS chose (0.4.6), CoreCapture pipes started after the core binding (0.4.4), beacon counter and link quality update events for the Family's missed-beacons check (0.4.7 to 0.4.9). Open networks tested; WPA2-PSK untested on air; no roaming, no sleep, no AWDL. Binary sha256 starts de1aff051348. The README says how to report results from another MediaTek card.

Downloads

MtkWlanNative 0.4.5 pre-release

0.4.5 · 2026-10-18

First public build of the native front end. Needs MtkWlan 0.11.0 and macOS 26.7.1 (25G241); boot-args mtkfe=native mtknativeif=1. 0.4.4 passed the full macOS-driven join on the author's laptop (auto-join at boot, DHCP, real default route); 0.4.5 adds the candidate-BSSID fix for the leave/rejoin loop and is marked pre-release until that boot test is in. Binary sha256 starts 33824bcef337. See the README for what works, what does not, and how to report results from another MediaTek card.

Downloads