hey, been banging my head against this for a while now and cant figure it out.
standalone iwd fails to connect to my 5GHz AP every single time with reason 15 (4WAY_HANDSHAKE_TIMEOUT). the weird thing is wpa_supplicant + networkmanager works perfectly fine on the exact same hardware and same AP. 2.4GHz also works fine with iwd, its only 5GHz thats broken.
Hardware
mt7921e PCIe
Firmware Build Time: 20260224110909a
Kernel 6.12, iwd 3.10, NixOS 25.11
whats happening
authentication works, association works, TX power limit gets acknowledged, then exactly 5 seconds later it just dies with reason 15 and falls back to my 2.4GHz network. no EAPOL frames visible in logs at all.
dmesg
wlan0: authenticated
wlan0: associated
wlan0: Limiting TX power to 30 (30 - 0) dBm as advertised by AP
wlan0: deauthenticating from AP by local choice (Reason: 15=4WAY_HANDSHAKE_TIMEOUT)
my config
nixnetworking.wireless.iwd.enable = true;
networking.wireless.iwd.settings.General.ControlPortOverNL80211 = false;
networking.networkmanager.enable = false;
networking.wireless.enable = lib.mkForce false;
boot.kernelPackages = pkgs.linuxPackages_6_12;
hardware.enableAllFirmware = true;
what ive tried, nothing worked
ControlPortOverNL80211 = false — confirmed iwd loaded it, no difference
modprobe mt7921e disable_aspm=1 power_save=0 — reloaded module at runtime, no difference
disabled WMM APSD on the router — no difference
hardware.enableAllFirmware = true — already on latest firmware
pre-provisioning via /var/lib/iwd/Anonymous.psk
NetworkManager + iwd as backend
pinning older linux-firmware
EnableNetworkConfiguration = true in iwd settings
has anyone actually gotten MT7921 working on 5GHz with standalone iwd? any working combo of kernel/firmware/iwd settings
update:
tried a bunch more things, none worked:
systemd-networkd + iwd — same reason 15
linux-firmware downgraded to 20250509 — no difference
ControlPortOverNL80211 = false — no difference
modprobe mt7921e disable_aspm=1 power_save=0 — no difference
NM + iwd backend — iwd still does the handshake so same result
pre-provisioned /var/lib/iwd/Anonymous.psk — no difference
handshake dies exactly 5 seconds after association every single time. no EAPOL frames in logs at all. wpa_supplicant + NM connects fine on the same hardware same AP.