mt7921e fails to load firmware on every boot on a Gigabyte X670E AORUS MASTER
Nobody has claimed this yet.
- Dominant language
- C
- Stars
- 888
- Forks
- 436
- PR merge metrics
- No merged PRs in 30d
Description
Summary
mt7921e fails to load firmware on every boot on a Gigabyte X670E AORUS MASTER with the onboard MT7922 — Failed to start patch / Failed to release patch semaphore / hardware init failed, reproducible from a genuine cold boot (not just after a prior crash/suspend). Reproduces identically across three different kernel builds (7.1.5, 7.0.14, 7.0.0). Extensive elimination of platform-level causes (ASPM, IOMMU, interrupt delivery, PCIe link integrity, firmware version) points to the firmware handshake/protocol itself rather than any host-side configuration.
Hardware
- Motherboard: Gigabyte X670E AORUS MASTER (rev 1.1)
- BIOS: F41 (2026-02-06) — current/near-current; AGESA changelog has no WiFi/PCIe-endpoint-relevant entries
- WiFi chip: MediaTek MT7922 802.11ax PCI Express Wireless Network Adapter (onboard, soldered)
- PCI address:
0000:0f:00.0, IOMMU group 21 - Driver:
mt7921e(in-tree)
Software
Reproduced identically on three separate kernel builds:
-
7.1.5-070105-generic(mainline-style build) -
7.0.14 -
7.0.0-29-generic(stock Ubuntu-packaged kernel) -
linux-firmware:
20260319.git217ca6e4.1ubuntu -
Firmware files present:
WIFI_MT7922_patch_mcu_1_1_hdr.bin.zst,WIFI_RAM_CODE_MT7922_1.bin.zst(dated 2026-07-13, matches the March 2026 upstream MT7922 firmware update) -
Firmware build reported by driver:
HW/SW Version: 0x8a108a10, Build Time: 20260224103145a— this line always appears, but the driver never reaches the subsequent successful "WM Firmware Version" line on any boot. Failure is at the very first handshake step, every time.
Log output
Kernel 7.1.5: reproducible every modprobe mt7921e
[13568.352617] mt7921e 0000:0f:00.0: ASIC revision: 79220010
[13568.443742] mt7921e 0000:0f:00.0: HW/SW Version: 0x8a108a10, Build Time: 20260224103145a
[13571.496478] mt7921e 0000:0f:00.0: Message 00000007 (seq 8) timeout
[13571.496485] mt7921e 0000:0f:00.0: Failed to start patch
[13574.504352] mt7921e 0000:0f:00.0: Message 00000010 (seq 9) timeout
[13574.504359] mt7921e 0000:0f:00.0: Failed to release patch semaphore
[13574.593749] mt7921e 0000:0f:00.0: HW/SW Version: 0x8a108a10, Build Time: 20260224103145a
[13577.640211] mt7921e 0000:0f:00.0: Message 00000007 (seq 2) timeout
[13577.640218] mt7921e 0000:0f:00.0: Failed to start patch
[13580.649086] mt7921e 0000:0f:00.0: Message 00000010 (seq 3) timeout
[13580.649092] mt7921e 0000:0f:00.0: Failed to release patch semaphore
[13580.740254] mt7921e 0000:0f:00.0: HW/SW Version: 0x8a108a10, Build Time: 20260224103145a
[13583.783966] mt7921e 0000:0f:00.0: Message 00000007 (seq 11) timeout
[13583.783973] mt7921e 0000:0f:00.0: Failed to start patch
[13586.791832] mt7921e 0000:0f:00.0: Message 00000010 (seq 12) timeout
[13586.791839] mt7921e 0000:0f:00.0: Failed to release patch semaphore
[13586.870965] mt7921e 0000:0f:00.0: HW/SW Version: 0x8a108a10, Build Time: 20260224103145a
[13589.928701] mt7921e 0000:0f:00.0: Message 00000007 (seq 5) timeout
[13589.928707] mt7921e 0000:0f:00.0: Failed to start patch
[13592.936587] mt7921e 0000:0f:00.0: Message 00000010 (seq 6) timeout
[13592.936593] mt7921e 0000:0f:00.0: Failed to release patch semaphore
[13593.028042] mt7921e 0000:0f:00.0: HW/SW Version: 0x8a108a10, Build Time: 20260224103145a
[13596.071467] mt7921e 0000:0f:00.0: Message 00000007 (seq 14) timeout
[13596.071475] mt7921e 0000:0f:00.0: Failed to start patch
[13599.079319] mt7921e 0000:0f:00.0: Message 00000010 (seq 15) timeout
[13599.079325] mt7921e 0000:0f:00.0: Failed to release patch semaphore
[13599.170484] mt7921e 0000:0f:00.0: HW/SW Version: 0x8a108a10, Build Time: 20260224103145a
[13602.215536] mt7921e 0000:0f:00.0: Message 00000007 (seq 8) timeout
[13602.215543] mt7921e 0000:0f:00.0: Failed to start patch
[13605.223080] mt7921e 0000:0f:00.0: Message 00000010 (seq 9) timeout
[13605.223089] mt7921e 0000:0f:00.0: Failed to release patch semaphore
[13605.314228] mt7921e 0000:0f:00.0: HW/SW Version: 0x8a108a10, Build Time: 20260224103145a
[13608.358945] mt7921e 0000:0f:00.0: Message 00000007 (seq 2) timeout
[13608.358951] mt7921e 0000:0f:00.0: Failed to start patch
[13611.367808] mt7921e 0000:0f:00.0: Message 00000010 (seq 3) timeout
[13611.367815] mt7921e 0000:0f:00.0: Failed to release patch semaphore
[13611.458993] mt7921e 0000:0f:00.0: HW/SW Version: 0x8a108a10, Build Time: 20260224103145a
[13614.503678] mt7921e 0000:0f:00.0: Message 00000007 (seq 11) timeout
[13614.503684] mt7921e 0000:0f:00.0: Failed to start patch
[13617.510553] mt7921e 0000:0f:00.0: Message 00000010 (seq 12) timeout
[13617.510560] mt7921e 0000:0f:00.0: Failed to release patch semaphore
[13617.601718] mt7921e 0000:0f:00.0: HW/SW Version: 0x8a108a10, Build Time: 20260224103145a
[13620.646434] mt7921e 0000:0f:00.0: Message 00000007 (seq 5) timeout
[13620.646441] mt7921e 0000:0f:00.0: Failed to start patch
[13623.654297] mt7921e 0000:0f:00.0: Message 00000010 (seq 6) timeout
[13623.654303] mt7921e 0000:0f:00.0: Failed to release patch semaphore
[13623.745790] mt7921e 0000:0f:00.0: HW/SW Version: 0x8a108a10, Build Time: 20260224103145a
[13626.791168] mt7921e 0000:0f:00.0: Message 00000007 (seq 14) timeout
[13626.791174] mt7921e 0000:0f:00.0: Failed to start patch
[13629.798047] mt7921e 0000:0f:00.0: Message 00000010 (seq 15) timeout
[13629.798054] mt7921e 0000:0f:00.0: Failed to release patch semaphore
[13629.870299] mt7921e 0000:0f:00.0: hardware init failed
[13898.538896] mt7921e 0000:0f:00.0: ASIC revision: 79220010
[13898.626024] mt7921e 0000:0f:00.0: HW/SW Version: 0x8a108a10, Build Time: 20260224103145a
[13901.658758] mt7921e 0000:0f:00.0: Message 00000007 (seq 8) timeout
[13901.658765] mt7921e 0000:0f:00.0: Failed to start patch
[13904.666643] mt7921e 0000:0f:00.0: Message 00000010 (seq 9) timeout
[13904.666650] mt7921e 0000:0f:00.0: Failed to release patch semaphore
[13904.759110] mt7921e 0000:0f:00.0: HW/SW Version: 0x8a108a10, Build Time: 20260224103145a
[13907.803498] mt7921e 0000:0f:00.0: Message 00000007 (seq 2) timeout
[13907.803505] mt7921e 0000:0f:00.0: Failed to start patch
[13910.810369] mt7921e 0000:0f:00.0: Message 00000010 (seq 3) timeout
[13910.810376] mt7921e 0000:0f:00.0: Failed to release patch semaphore
[13910.901806] mt7921e 0000:0f:00.0: HW/SW Version: 0x8a108a10, Build Time: 20260224103145a
[13913.947250] mt7921e 0000:0f:00.0: Message 00000007 (seq 11) timeout
[13913.947257] mt7921e 0000:0f:00.0: Failed to start patch
[13916.954124] mt7921e 0000:0f:00.0: Message 00000010 (seq 12) timeout
[13916.954131] mt7921e 0000:0f:00.0: Failed to release patch semaphore
[13917.046659] mt7921e 0000:0f:00.0: HW/SW Version: 0x8a108a10, Build Time: 20260224103145a
[13920.089999] mt7921e 0000:0f:00.0: Message 00000007 (seq 5) timeout
[13920.090007] mt7921e 0000:0f:00.0: Failed to start patch
[13923.097884] mt7921e 0000:0f:00.0: Message 00000010 (seq 6) timeout
[13923.097891] mt7921e 0000:0f:00.0: Failed to release patch semaphore
[13923.180085] mt7921e 0000:0f:00.0: HW/SW Version: 0x8a108a10, Build Time: 20260224103145a
[13926.233739] mt7921e 0000:0f:00.0: Message 00000007 (seq 14) timeout
[13926.233745] mt7921e 0000:0f:00.0: Failed to start patch
[13929.241618] mt7921e 0000:0f:00.0: Message 00000010 (seq 15) timeout
[13929.241625] mt7921e 0000:0f:00.0: Failed to release patch semaphore
[13929.333043] mt7921e 0000:0f:00.0: HW/SW Version: 0x8a108a10, Build Time: 20260224103145a
[13932.378474] mt7921e 0000:0f:00.0: Message 00000007 (seq 8) timeout
[13932.378480] mt7921e 0000:0f:00.0: Failed to start patch
[13935.385360] mt7921e 0000:0f:00.0: Message 00000010 (seq 9) timeout
[13935.385368] mt7921e 0000:0f:00.0: Failed to release patch semaphore
[13935.476846] mt7921e 0000:0f:00.0: HW/SW Version: 0x8a108a10, Build Time: 20260224103145a
[13938.522219] mt7921e 0000:0f:00.0: Message 00000007 (seq 2) timeout
[13938.522225] mt7921e 0000:0f:00.0: Failed to start patch
[13941.529093] mt7921e 0000:0f:00.0: Message 00000010 (seq 3) timeout
[13941.529099] mt7921e 0000:0f:00.0: Failed to release patch semaphore
[13941.620546] mt7921e 0000:0f:00.0: HW/SW Version: 0x8a108a10, Build Time: 20260224103145a
[13944.664963] mt7921e 0000:0f:00.0: Message 00000007 (seq 11) timeout
[13944.664969] mt7921e 0000:0f:00.0: Failed to start patch
[13947.672848] mt7921e 0000:0f:00.0: Message 00000010 (seq 12) timeout
[13947.672855] mt7921e 0000:0f:00.0: Failed to release patch semaphore
[13947.764290] mt7921e 0000:0f:00.0: HW/SW Version: 0x8a108a10, Build Time: 20260224103145a
[13950.809713] mt7921e 0000:0f:00.0: Message 00000007 (seq 5) timeout
[13950.809720] mt7921e 0000:0f:00.0: Failed to start patch
[13953.816598] mt7921e 0000:0f:00.0: Message 00000010 (seq 6) timeout
[13953.816605] mt7921e 0000:0f:00.0: Failed to release patch semaphore
[13953.908050] mt7921e 0000:0f:00.0: HW/SW Version: 0x8a108a10, Build Time: 20260224103145a
[13956.952465] mt7921e 0000:0f:00.0: Message 00000007 (seq 14) timeout
[13956.952472] mt7921e 0000:0f:00.0: Failed to start patch
[13959.960329] mt7921e 0000:0f:00.0: Message 00000010 (seq 15) timeout
[13959.960336] mt7921e 0000:0f:00.0: Failed to release patch semaphore
[13960.031615] mt7921e 0000:0f:00.0: hardware init failed
Pattern repeats indefinitely on retry; device never comes up.
Diagnostics performed
| Layer | Test | Result |
|---|---|---|
| PCIe ASPM (kernel global) | pcie_aspm=off boot param | Confirmed applied (cat /proc/cmdline, dmesg PCIe ASPM is disabled); no change |
| PCIe ASPM (hardware) | lspci -vvv LnkCtl | Confirmed ASPM Disabled at hardware level |
| PCIe ASPM (driver-internal) | modprobe mt7921e disable_aspm=1 | No change |
| IOMMU | dmesg | grep -iE "AMD-Vi|IOMMU|IO_PAGE_FAULT" | Zero fault events, only normal group enumeration |
| PCIe link integrity | AER capability (UESta/CESta/severity regs) | All flags clear, no sticky errors ever recorded |
| PCIe link training | LnkSta | Clean: Speed 5GT/s, Width x1, TrErr- Train- |
| Runtime power management | /sys/.../power/control | Already on (not auto), not a factor |
| Interrupt delivery | /proc/interrupts before/after a forced reload | Confirmed incrementing (32→80) — host is being interrupted by the device |
| Firmware version | dmesg build date vs. installed package | Current; no older firmware version available locally to bisect against |
| Kernel/driver source | 3 kernels (2 custom-built, 1 stock Ubuntu) | Identical failure on all three |
| Cold boot | Full power-off (not warm reboot) | No change |
| BIOS version | F41, current | No WiFi/PCIe-relevant changelog entries found |
The interrupt-delivery result seems like the most useful data point here: the device is successfully signaling the host, but the driver isn't getting a response it can use to complete the handshake. Combined with a fully clean AER block, this points away from a link/power/routing issue on the host side and toward the firmware load protocol/sequencing itself.
lspci -vvv output
0f:00.0 Network controller: MEDIATEK Corp. MT7922 802.11ax PCI Express Wireless Network Adapter
Subsystem: MEDIATEK Corp. MT7922 802.11ax PCI Express Wireless Network Adapter
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR-
Capabilities: [108 v1] Latency Tolerance Reporting
Max snoop latency: 0ns
Max no snoop latency: 0ns
Capabilities: [110 v1] L1 PM Substates
L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
PortCommonModeRestoreTime=3us PortTPowerOnTime=52us
L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
T_CommonMode=0us LTR1.2_Threshold=284672ns
L1SubCtl2: T_PwrOn=150us
Capabilities: [200 v2] Advanced Error Reporting
UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP-
ECRC- UnsupReq- ACSViol- UncorrIntErr- BlockedTLP- AtomicOpBlocked- TLPBlockedErr-
PoisonTLPBlocked- DMWrReqBlocked- IDECheck- MisIDETLP- PCRC_CHECK- TLPXlatBlocked-
UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP-
ECRC- UnsupReq- ACSViol- UncorrIntErr+ BlockedTLP- AtomicOpBlocked- TLPBlockedErr-
PoisonTLPBlocked- DMWrReqBlocked- IDECheck- MisIDETLP- PCRC_CHECK- TLPXlatBlocked-
UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+
ECRC- UnsupReq- ACSViol- UncorrIntErr+ BlockedTLP- AtomicOpBlocked- TLPBlockedErr-
PoisonTLPBlocked- DMWrReqBlocked- IDECheck- MisIDETLP- PCRC_CHECK- TLPXlatBlocked-
CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr- CorrIntErr- HeaderOF-
CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+ CorrIntErr+ HeaderOF-
AERCap: First Error Pointer: 00, ECRCGenCap- ECRCGenEn- ECRCChkCap- ECRCChkEn-
MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
HeaderLog: 00000000 00000000 00000000 00000000
Kernel driver in use: mt7921e
Kernel modules: mt7921e
Possibly related
this is a regression, as I remember WiFi working fine on my PC when I built it
PR #1040 — "wifi: mt76: mt792x: fix firmware reload failure after previous load crash" (zbowling, opened 2026-01-01, still open) targets the "stuck semaphore after a previous crashed load" scenario. That may share the same underlying semaphore-handling code path, but doesn't fully match what I'm seeing here — this failure reproduces on a genuine first attempt after a full cold boot, not only as leftover state from a prior failure. Flagging in case it's the same root cause, or a related-but-distinct bug in the same area.
I attempted to build the DKMS package at github.com/zbowling/mt7925 to test the above patch directly, but it fails to compile against kernel 7.1.5 headers (struct <anonymous> has no member named 'u' in mt76_connac_mac.c, around the mgmt->u.action.u.addba_req access) — the patch set appears to predate a mac80211 header restructuring, so I wasn't able to test it directly.
Happy to provide
- Full support from my side available on request, I lost wifi on my PC and very motivated to help in any means
- Any additional test the maintainers would find useful — I have a fully reproducible setup
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at the mt7921e driver’s firmware-handshake path and compare the patch-start and semaphore failures with the reported MT7922 firmware behavior. Reproduce with modprobe mt7921e and inspect dmesg; done means the device completes firmware initialization reliably after a cold boot.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c, linux
- Domain
- networking, operating-systems
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100