Skip to content

v0.3.0-beta — experimental Wi-Fi 6 (802.11ax), fixes joins on slow APs

Pre-release
Pre-release

Choose a tag to compare

@eiyuumiru eiyuumiru released this 21 Oct 13:17

This beta adds opt-in 802.11ax (HE) support. It also fixes joins that timed out
on access points that are slow to answer. It is still experimental:

  • It is developed on one laptop (Lenovo Legion Slim 5 16APH8, RZ616, macOS 26.7.1).
  • 802.11ax was tested by @abhinavchandhu5-droid on a custom-built desktop
    (Ryzen 5 5600, RTX 3060) with an MT7922 PCIe card, on macOS 15.8.1 and a
    Wi-Fi 6 mesh AP. Thank you for testing!

Downloads

  • AirportMtkWlan-Sequoia-v0.3.0-beta.zip: native Wi-Fi menu, for macOS 15 Sequoia.
  • AirportMtkWlan-Tahoe-v0.3.0-beta.zip: native Wi-Fi menu, for macOS 26 Tahoe.
  • SimpleMtkWlan-v0.3.0-beta.zip: Ethernet-style; join with mtkctl.
  • mtkctl-v0.3.0-beta.zip: command-line client for both kexts.

Both AirportMtkWlan zips contain a kext named AirportMtkWlan.kext. Use the one
for your macOS version: a Sequoia build loads on Tahoe but never attaches. Load
only one kext.

Changes since v0.2.1

  • Experimental 802.11ax (HE), off by default. Add the boot-arg amtk_he=1
    to offer HE when joining. When the AP agrees, the driver sets the firmware up
    the way Linux mt7921 does:

    • HE MCS 0-11, 40/80 MHz, LDPC;
    • no 160 MHz, no beamforming, no TWT, no 6 GHz.

    To go back to 802.11ac without rebooting, run mtkctl knob 0x1002; it takes
    effect from the next join.

  • Fixed joins timing out in the association step. The driver put the
    firmware into deep sleep right after sending the Association Request. Mesh
    and other APs that take ~15 ms to answer never had their reply seen, so every
    join timed out, with or without HE. The firmware now stays awake until the
    link is up. This fix applies with and without amtk_he=1.

  • Three net80211 fixes found along the way:

    • The HE capabilities element was sent with a garbage length.
    • The channel width could be widened to 160 MHz from the AP's capabilities
      alone.
    • Two 802.11ax 2-stream rate rows were 2× and 4× too high.
  • New mtkctl sta: shows the current link (mode, channel, width, RSSI, MCS,
    rate, BSSID). It leaves out the SSID, so the output is safe to paste into a
    bug report.

Known problems

  • 802.11ax has been tested on very few APs. If HE causes trouble, remove
    amtk_he=1 or run mtkctl knob 0x1002, then report the output of
    mtkctl sta and mtkctl log.
  • macOS link-quality reports still carry no RSSI.
  • Sleep/wake is not tested.
  • No WPA3-only (SAE) networks, no 160 MHz, no 6 GHz.

For installation and troubleshooting, see the README.

Built from eb9024b (Debug, x86_64, unsigned). The driver code is the same as
81e4232, the build @abhinavchandhu5-droid tested. Checksums are in SHA256SUMS.txt.