mt7921e (MT7922 14c3:0616): 5GHz 4-way handshake timeout (reason=15 / WRONG_KEY loop) on reconnect with firmware 20260724143402

Open
#1,178 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
42/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
c, linux
Domain
backend

Research direction

Start by tracing the MT7921e 5GHz connection and WPA2 handshake paths in the driver; the report identifies the MT7922 device and provides reproduction steps and sanitized NetworkManager logs, but does not name source files or tests. Reproduce reconnects on 5GHz and compare them with the reliable 2.4GHz workaround; done means reconnecting on 5GHz completes the handshake without reason=15 timeouts.

Written by the indexing model from the issue text.

Description

Bug Description

On a clean installation of Fedora 45 (GNOME) with a MediaTek MT7922 (14c3:0616, Lenovo subsystem 17aa:e0c6), disconnecting and reconnecting to a dual-band (2.4GHz/5GHz) WPA2-Personal Wi-Fi network (or rebooting the system) results in a persistent authentication loop on the 5GHz band.

During reconnection on 5GHz, the connection reaches the 4way_handshake state, times out after ~1 second, and disconnects with reason=15 (4WAY_HANDSHAKE_TIMEOUT), which wpa_supplicant reports as reason=WRONG_KEY. This causes GNOME / NetworkManager to repeatedly prompt for the Wi-Fi password. The faulty state persists across warm reboots and sometimes cold boots, requiring dozens of manual connection attempts until a handshake randomly succeeds.

Workaround: Pinning the NetworkManager connection profile to the 2.4GHz band (band=bg) resolves the issue immediately; reconnections work on the very first attempt without timeouts. The issue occurs exclusively on the 5GHz band.

Hardware & System Information
  • OS: Fedora Linux 45 (Workstation Edition / GNOME)
  • Kernel: 7.2.15-300.fc45.x86_64
  • Wi-Fi Card (lspci -nnk):
01:00.0 Network controller [0280]: MEDIATEK Corp. MT7922 802.11ax PCI Express Wireless Network Adapter [14c3:0616]
    Subsystem: Lenovo Device [17aa:e0c6]
    Kernel driver in use: mt7921e
    Kernel modules: mt7921e
  • Firmware Version (dmesg):
mt7921e 0000:01:00.0: enabling device (0000 -> 0002)
mt7921e 0000:01:00.0: ASIC revision: 79220010
mt7921e 0000:01:00.0: HW/SW Version: 0x8a108a10, Build Time: 20260724143257a
mt7921e 0000:01:00.0: WM Firmware Version: ____000000, Build Time: 20260724143402
Steps to Reproduce
  1. Connect to a dual-band (2.4GHz/5GHz shared SSID) WPA2-Personal AP where the client selects the 5GHz band.
  2. Toggle Wi-Fi off and back on in GNOME Settings (or reboot the machine).
  3. Observe wpa_supplicant / NetworkManager failing during 4way_handshake with reason=15 and entering a password prompt loop.
Troubleshooting / Workarounds Already Tested
  1. Security mode: Already set to WPA/WPA2 Personal (not WPA3/SAE).
  2. MAC Address Randomization: Setting cloned-mac-address to permanent did not resolve the issue.
  3. PCIe ASPM: Reloading the module with sudo modprobe -r mt7921e && sudo modprobe mt7921e disable_aspm=1 did not resolve the 5GHz handshake timeout (still required multiple manual connection attempts).
  4. PMF & Wi-Fi Power Save: Setting 802-11-wireless-security.pmf disable, 802-11-wireless.powersave 2, and sudo iw dev wlp1s0 set power_save off did not resolve the issue on 5GHz.
  5. Band Pinning (Working Workaround): Locking the profile to 2.4GHz (802-11-wireless.band bg) works immediately and reliably across toggles and reboots.
Sanitized Logs (journalctl -u NetworkManager -u wpa_supplicant)
Nov 07 09:26:58 fedora NetworkManager[6508]: <info>  [1794040018.0983] device (wlp1s0): supplicant interface state: inactive -> authenticating
Nov 07 09:26:58 fedora NetworkManager[6508]: <info>  [1794040018.1209] device (wlp1s0): supplicant interface state: authenticating -> associating
Nov 07 09:26:58 fedora NetworkManager[6508]: <info>  [1794040018.2146] device (wlp1s0): supplicant interface state: associating -> 4way_handshake
Nov 07 09:26:59 fedora wpa_supplicant[1492]: wlp1s0: CTRL-EVENT-DISCONNECTED bssid=XX:XX:XX:XX:XX:XX reason=15
Nov 07 09:26:59 fedora wpa_supplicant[1492]: wlp1s0: CTRL-EVENT-SSID-TEMP-DISABLED id=0 ssid="<REDACTED_SSID>" auth_failures=1 duration=10 reason=WRONG_KEY
Nov 07 09:26:59 fedora NetworkManager[6508]: <info>  [1794040019.2753] device (wlp1s0): supplicant interface state: 4way_handshake -> disconnected
Nov 07 09:26:59 fedora NetworkManager[6508]: <info>  [1794040019.2754] device (wlp1s0): state change: config -> need-auth (reason 'supplicant-disconnect', managed-type: 'full')
Dominant language
C
Stars
895
Forks
461
PR merge metrics
No merged PRs in 30d

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from openwrt/mt76

All issues in openwrt/mt76

Similar issues

More C issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.