mt7921e: firmware stops responding after s2idle resume, no error logged, scans never complete

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

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
35/100
Issue type
Bug
Clarity
Needs clarification
Activity status
Quiet
Tech stack
c
Domain
networking

Research direction

Start by reproducing the s2idle resume failure on the listed MT7921e system and compare kernel messages before and after resume. Trace the mt7921e suspend/resume path and the modprobe unload/reload workaround, then verify that firmware recovery completes scans and restores normal txpower without requiring module reload.

Written by the indexing model from the issue text.

Description

System

  • Pop!_OS 24.04, kernel 7.0.11-76070011-generic, AMD laptop (s2idle)
  • MT7921: HW/SW Version 0x8a108a10, WM Firmware 20260106153507

Symptom

After resume from s2idle, WiFi is up but finds no networks. rfkill clear, interface present, wpa_supplicant attached. The first scan after resume never completes, so all later scans are rejected:

wpa_supplicant[1238]: wlp99s0: Reject scan trigger since one is already pending

iw dev wlp99s0 info shows txpower 3.00 dBm (normally 20-27 dBm). The driver logs nothing: no timeout, no semaphore error, no reset. This differs from the known noisy variants (Launchpad #1975444, #554): the firmware dies silently.

Not reproducible on every cycle. Another resume the same day reconnected within 5 sec, then the next resume hit the bug.

Workaround

modprobe -r mt7921e && modprobe mt7921e

Restores WiFi immediately, no reboot needed. Have not yet tested disable_aspm=1.

Logs

Resume at 12:33:39. Last WiFi kernel message is the disconnect at suspend (12:26:13). After resume there are zero mt7921e/wlp99s0 kernel messages, while NetworkManager re-attaches normally:

12:33:39 kernel: PM: suspend exit
12:33:39 NetworkManager: device (wlp99s0): state change: unmanaged -> unavailable (reason 'managed')
12:33:39 NetworkManager: device (wlp99s0): supplicant interface state: internal-starting -> disconnected
12:33:39 NetworkManager: device (wlp99s0): state change: unavailable -> disconnected (reason 'supplicant-available')
12:40:46 wpa_supplicant: wlp99s0: Reject scan trigger since one is already pending

Full journal available on request.

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.