watchthelight labs

Releases

MtkWlan 0.12.1

0.12.1 · 2026-10-23

Restart-safe, self-healing, and the first core that tells the native front end the real link rate. Use it with MtkWlanNative 0.4.13.

  • Warm restarts keep the card (#1). Restart and power off now quiesce the chip, and attach recovers a wedged one (WFSYS reset, then a PCIe function level reset). On the author's Legion 5 the first warm restart under 0.12 came back with Wi-Fi up and a clean firmware load.
  • Link supervisor. A link that stays associated but stops passing traffic is noticed within about 8 s and rejoined, or the firmware is reloaded without dropping the interface (MtkStallSec, mtkstall=).
  • Bigger scan cache (128 networks) and the join ROC is held through the WPA2 handshake.
  • Core API v5: rate details (PHY, MCS, streams, width, guard interval) and the country code. Outside the US and its territories the radio only gets more passive, never louder.
  • MtkAutoNetworks and tools/recovery/ for the installer and Recovery.

Tested on macOS 26.7.1 (25G241), Legion 5 15IAX10, MT7925 14c3:7925: joined at boot, and macOS reported 11ac, 80 MHz, MCS 9, 2 streams, 866 Mbit/s. That figure is the negotiated maximum; the firmware sent no TX status records on this link. Full notes in CHANGELOG.md.

MtkWlan.kext sha256 a15f492e7ca9004360fefe58d5286489b5848849ac6fd2e390aac3563ebea73d.

2026-10-28: runs unchanged on macOS 26.7.2 (25G332). The native Wi-Fi menu there needs MtkWlanNative 0.4.14; the bundle mt7925-wifi-bundle-0.12.1+0.4.14.zip has both.

Downloads

MtkWlan 0.11.3

0.11.3 · 2026-10-18

Tx data ring 256 -> 1024 slots, and a new administrator-only user-client selector (kMtkUcTune) that sets the Tx in-flight cap live. The default cap stays at 128 frames with a Tx block-ack session. Use it with MtkWlanNative 0.4.11, which restarts the Tx queues within 2 ms instead of 10 ms.

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

Bundle (added 2026-10-20): mt7925-wifi-bundle-0.11.3+0.4.11.zip holds this kext and MtkWlanNative 0.4.11 with INSTALL.md and the config.plist snippet, for the whole Wi-Fi set in one download.

Downloads

MtkWlan 0.11.1

0.11.1 · 2026-10-18

Fixes the start-up race behind a missing Wi-Fi menu. With mtkfe=native the core started its Ethernet front end after a fixed 15 s and then refused the native front end for the whole boot; Apple's IO80211SkywalkInterface start takes 0 to 26 s on 25G241, so some boots came up with the card as an Ethernet port. A front end can now claim the core at probe, and the core then waits up to 90 s (a front end that gives up still declines at once). Use it with MtkWlanNative 0.4.10. Also matches PCI 14C3:0717 (AMD RZ717 on AM5 desktop boards), untested on that card so far.

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

Downloads

MtkWlan 0.11.0

0.11.0 · 2026-10-18

Core ops v4: set_mac changes the station address after bring-up (the firmware station interface is re-added with it), which lets the native front end MtkWlanNative apply the per-network private address macOS picks. tools/mtk-report.sh collects a redacted bug report; the README says how to report results from other MediaTek cards. Ethernet front end unchanged. Built for macOS 26.7.1 (25G241); binary sha256 starts 7c28683322bc.

Downloads

MtkWlan 0.10.0

0.10.0 · 2026-10-17

MediaTek MT7925 (14C3:7925) Wi-Fi kext for OpenCore hackintosh, tested on a Lenovo Legion 5 15IAX10 with macOS Tahoe 26.7.1 (25G241) and OpenCore 1.0.8.

What's new since 0.9.0: the core exposes ops table v3 (set_mode, get_bss, get_channels, tx_bytes) and picks its front end from MtkFrontEnd in Info.plist (Ethernet by default; a native Wi-Fi front end can attach and the core falls back to Ethernet if it does not come up). mtkwifi reports the active front end and stands down when a native front end owns the interface. Behaviour on the Ethernet front end is unchanged from 0.9.0. Full list in CHANGELOG.md.

Measured on an open 5 GHz network (boot N-95, 2026-10-17): 192.7 Mb/s down, 134.6 Mb/s up (20 MB POST), 16 ms idle ping, 0 % loss. WPA2 is still host-tested only.

The zip holds MtkWlan.kext plus LICENSE, NOTICE.md and LICENSES/, which must stay with the binary. The kext binary is the exact file from that boot. It was built a few minutes before the last 0.10.0 source edit (MtkNet.cpp publishing the MtkFrontEndActive registry property), so a clean build of this tag gives a different hash; both are in the README.

sha256 MtkWlan.kext/Contents/MacOS/MtkWlan: 00f68f99d8e6ab2ea4cc3ba36f7b44a7d7bcd9fc32440ecc80674a0b62de3394

Downloads

MtkWlan 0.9.0

0.9.0 · 2026-10-17

MediaTek MT7925 (14C3:7925) Wi-Fi kext for OpenCore hackintosh, tested on a Lenovo Legion 5 15IAX10 with macOS Tahoe 26.7.1 (25G241) and OpenCore 1.0.8.

What's new since 0.6.0: the network name is no longer fixed in Info.plist. The driver scans and joins from its own state machines, the mtkwifi tool (in tools/mtkwifi) lists networks, joins one and keeps saved networks for the autojoin daemon at boot, and WPA2-PSK is implemented in the driver. Block ack in both directions and TX power tables came in 0.7.0; the core / Ethernet front end split in 0.8.0. Full list in CHANGELOG.md.

Measured on an open 5 GHz network: 190.8 Mb/s down, 174.8 Mb/s up, 16 ms idle ping. WPA2 is host-tested only, not yet proven on a real network; please report either way.

The zip holds MtkWlan.kext plus LICENSE, NOTICE.md and LICENSES/, which must stay with the binary. The kext binary is the exact file that produced the numbers above; a clean build of this tag with Apple clang 17 (tools/build-mac.sh) reproduces it.

sha256 MtkWlan.kext/Contents/MacOS/MtkWlan: d52449f9b8ee16e1e1c32a0362fb6d8f4dc1758fb2c4cdc2054de82ea03f89b0

Downloads