Releases
WTLWireless 0.14.0
One kext in place of three. WTLWireless.kext holds the Wi-Fi driver, and inside it (Contents/PlugIns) the Wi-Fi menu part and the Bluetooth firmware loader. It replaces MtkWlan.kext 0.13.0, MtkWlanNative.kext 0.4.17 and MtkBt.kext 0.2.4. The code of the three is unchanged; the names, the packaging and the version (one for all three now) are new. This repository was renamed from WTLMtkWireless to WTLWireless with this release, and WTLWifiMenu and WTLMtkBluetooth are archived. Old links redirect.
Download WTLWireless-0.14.0-RELEASE.zip. It has the kext, INSTALL.md, a config-snippet.plist, the licences and a Recovery folder with the mtkwifi tool.
Coming from the old kexts
- Copy
WTLWireless.kexttoEFI/OC/Kexts. - In
config.plist,Kernel > Add: remove the entries forMtkWlan.kext,MtkWlanNative.kextandMtkBt.kext, and add three for the bundle, the driver first:WTLWireless.kext(Contents/MacOS/WTLWireless)WTLWireless.kext/Contents/PlugIns/WTLWirelessNative.kext(Contents/MacOS/WTLWirelessNative, MinKernel 25.0.0, MaxKernel 25.99.99)WTLWireless.kext/Contents/PlugIns/WTLWirelessBt.kext(Contents/MacOS/WTLWirelessBt)
- Delete the three old kext folders.
boot-args (mtkfe=native mtknativeif=1), the Bluetooth NVRAM keys, BlueToolFixup and LegionBtFix stay as they are, and macOS keeps its saved networks and paired devices. Do not run old and new together: if MtkWlan.kext is still loaded, the new driver leaves the card to it and says so in the MtkConflict property of the card's PCI device.
What else is different
- The classes are now
WTLWireless,WTLWirelessNativeandWTLWirelessBt(forioreg -rc). The properties (MtkState,MtkNative...,MtkBt...) keep their names. mtkwifi,tools/wifi.shandtools/mtk-report.shfind the driver under either class name.- Sources are in
src/core,src/nativeandsrc/bt, and./build.shbuilds the whole bundle. - macOS builds for the Wi-Fi menu are the same as before: 26.7.1 (25G241), 26.7.2 (25G332), 26.7.3 (25G342) and the 26.7.3 developer beta 25G416. On any other build the driver shows its Ethernet port by itself.
How it was checked
The host harness records 3589 events; against 0.13.0 the 3573 hardware lines are identical and one status line differs, the one that names the Wi-Fi menu part. Then two boots on a Legion 5 15IAX10 (macOS 26.7.3 developer beta, 25G416, MT7925 14c3:7925): first Wi-Fi from the bundle with MtkBt 0.2.4 still loaded, then all three parts from the bundle. Wi-Fi joined the saved WPA2 network at boot both times: same channel list as 0.13.0, 5 GHz, 80 MHz, MCS 9, 2 streams, 866 Mbit/s. Bluetooth: MtkBtState ready after 1251 ms, controller on, the known devices still listed.
Not checked on hardware for this release: pairing a new Bluetooth device, a connection and audio (the loader's code did not change), the MtkConflict path and the Ethernet fallback under the new names (host test only).
sha256
129744934a921eb64ba5fe58a8e16bfd581e85fbaa69e8baf2639a0046e91a4e WTLWireless.kext/Contents/MacOS/WTLWireless
fc91675d01ee12359caa5da196195911bf2e61aa08117f16dc4e75e0cce1fb5f WTLWireless.kext/Contents/PlugIns/WTLWirelessNative.kext/Contents/MacOS/WTLWirelessNative
e755a8c20aed5955aaef568747a29e40d924baea78c1f06a708cc1c057cbac67 WTLWireless.kext/Contents/PlugIns/WTLWirelessBt.kext/Contents/MacOS/WTLWirelessBt
These are the binaries from the two test boots. ./build.sh at this tag with Apple clang 21.0.0 (clang-2100.1.1.101) gives the same three files.
Downloads
- WTLWireless-0.14.0-RELEASE.zip 1978 KB · 16 downloads
MtkWlan 0.13.0
Core API version 6: the driver now tells a front end what the chip is. Nothing changes in bring-up, scan, join or the data path. Use it with MtkWlanNative 0.4.17, which reads the new calls; the bundle mt7925-wifi-bundle-0.13.0+0.4.17.zip has both. Versions 1 to 5 of the API are untouched, so MtkWlanNative 0.4.16 also keeps working with this driver.
get_chip_info: chip name, chip ID, PCI device ID, firmware build string, and two sets of capabilities.hw_*is what the silicon can do; the plain fields are what this driver version uses (no 6 GHz because that needs WPA3-SAE, two streams, 80 MHz at most, no HE or EHT yet).get_channels2: the country's channels with a band and passive / DFS flags. A channel number alone stops being enough once 6 GHz is on.get_link_chan: the channel of the association with band, width and centre.
This is step two of making the driver cover more MT792x chips than the MT7925: 0.12.2 moved the chip differences into a table, this release stops the Wi-Fi menu front end from assuming one chip.
How it was checked: the host harness records the same 3589 register accesses and firmware commands as for 0.12.2, and runs the new calls next to the old ones while joined (36 channels, all agree). Then one boot on a Legion 5 15IAX10, macOS 26.7.3 developer beta (25G416), MT7925 14c3:7925, with MtkWlanNative 0.4.17: joined at boot, same channel list, 11ac, 80 MHz, MCS 9, 2 streams, 866 Mbit/s.
MtkWlan.kext sha256 ca49b5f46caaa2c13d1fc8e7cc6fbaf33c6d7127876c8bd3d2f594179472f9a0. A build from this tag with tools/build-mac.sh gives the same binary.
Downloads
- mt7925-wifi-bundle-0.13.0+0.4.17.zip 1522 KB · 4 downloads
- MtkWlan-0.13.0-RELEASE.zip 1451 KB · 6 downloads
MtkWlan 0.12.2
Nothing changes in how the driver treats an MT7925. This release puts what differs between MT792x chips into a table, so that another chip becomes a second row and not a fork. Use it with MtkWlanNative 0.4.16; the bundle mt7925-wifi-bundle-0.12.2+0.4.16.zip has both.
- Chip table (
src/MtkChip.cpp): PCI IDs, register map, firmware, WFSYS reset register, RX rings and their interrupt bits, the prefetch table and the capabilities. One row today, MT7925. - Unknown cards are left alone. The driver looks the PCI device ID up before its first register access. No row means no mapping and no writes; the node shows
MtkChipUnsupported. MtkFrontEndtells the truth. It shows the front end asked for after themtkfe=boot-arg. Before, it kept the Info.plist defaultethernetwhile the native front end ran (#6).MtkFrontEndActivestill says what runs.- New properties for reports:
MtkPciDevice,MtkPciSubsystem,MtkChipName,MtkChipBands,MtkChipNss,MtkChipMaxBw.
How it was checked: a host harness ran bring-up, scan, join, country change, reload and shutdown against a simulated MT7925 and recorded every register access and firmware command (3589 events). The record is identical before and after the change. Then one boot on a Legion 5 15IAX10, macOS 26.7.3 developer beta (25G416), MT7925 14c3:7925: joined at boot, 11ac, 80 MHz, MCS 9, 2 streams, 866 Mbit/s, the same as 0.12.1.
MtkWlan.kext sha256 5fa4777852426d3906f8729edc5504b81c8de0fda5d1e4ec37699bba24ea17a9. A build from this tag with tools/build-mac.sh gives the same binary.
Downloads
- mt7925-wifi-bundle-0.12.2+0.4.16.zip 1520 KB · 2 downloads
- MtkWlan-0.12.2-RELEASE.zip 1450 KB · 3 downloads
MtkWlan 0.12.1
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.
MtkAutoNetworksandtools/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
- mt7925-wifi-bundle-0.12.1+0.4.13.zip 1521 KB · 49 downloads
- mt7925-wifi-bundle-0.12.1+0.4.14.zip 1522 KB · 38 downloads
- mt7925-wifi-bundle-0.12.1+0.4.15.zip 1519 KB · 81 downloads
- mt7925-wifi-bundle-0.12.1+0.4.16.zip 1519 KB · 5 downloads
- MtkWlan-0.12.1-RELEASE.zip 1449 KB · 92 downloads
MtkWlan 0.11.3
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
- mt7925-wifi-bundle-0.11.3+0.4.11.zip 1492 KB · 32 downloads
- MtkWlan-0.11.3-RELEASE.zip 1444 KB · 42 downloads
MtkWlan 0.11.1
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.1-RELEASE.zip 1443 KB · 8 downloads
MtkWlan 0.11.0
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.11.0-RELEASE.zip 1437 KB · 9 downloads
MtkWlan 0.10.0
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.10.0-RELEASE.zip 1442 KB · 7 downloads
MtkWlan 0.9.0
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
- MtkWlan-0.9.0-RELEASE.zip 1441 KB · 6 downloads