openwrt / openwrt/mt76

MT7902 (14c3:7902) mt7902e/mt7921e fails to init — "Failed to get patch semaphore" + garbled WM Firmware Version (same as #1062)

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

Nobody has claimed this yet.

Dominant language
C
Stars
888
Forks
436
PR merge metrics
No merged PRs in 30d

Description

Body:

System Information:
Laptop Model: ASUS (Mendocino platform, Radeon 610M iGPU)
WLAN Chipset: MediaTek MT7902 802.11ax PCIe [Filogic 310] (PCI ID 14c3:7902)
Subsystem: AzureWave Device 5520
OS: Ubuntu 26.04 LTS (Resolute)
Kernel version: 7.0.0-29-generic
ASIC revision: 79020000

Description of the problem:

Same symptom as #1062. The card is UNCLAIMED on stock kernel (7.0.0-29-generic) since in-tree mt7921e on this kernel has no alias for 14c3:7902:

modinfo mt7921e | grep 7902 → no output

Built and loaded the out-of-tree hmtheboy154/mt7902 driver (mt7902e.ko) manually (signed against an enrolled MOK for Secure Boot). Module loads and claims the PCI device, but firmware/MCU handshake fails:

mt7902e 0000:02:00.0: enabling device (0000 -> 0002)
mt7902e 0000:02:00.0: ASIC revision: 79020000
mt7902e 0000:02:00.0: HW/SW Version: 0x8a108a10, Build Time: 20250521121214a
mt7902e 0000:02:00.0: WM Firmware Version: ____000000, Build Time: 20250521121249
mt7902e 0000:02:00.0: Message 00020001 (seq 1) timeout
mt7902e 0000:02:00.0: Message 00000010 (seq 8) timeout
mt7902e 0000:02:00.0: Failed to get patch semaphore

This repeats in a loop — driver keeps retrying, firmware version string never resolves to real values, interface never comes up (link=no, state stays DISABLED).

Firmware in use: the out-of-tree driver's bundled firmware (old-style single-file format):

mediatek/WIFI_MT7902_patch_mcu_1_1_hdr.bin
mediatek/WIFI_RAM_CODE_MT7902_1.bin

Note: official linux-firmware now ships split-format files (mt7902_wm.bin, mt7902_rom_patch.bin, mt7902_wa.bin, mt7902_eeprom.bin) under /lib/firmware/mediatek/mt7902/, but the current mt7902e module (modinfo firmware: lines) does not reference these — it's hardcoded to the old filenames, so the new official firmware is never used.

Attempted workarounds (none helped):

disable_aspm=1 module parameter — loads cleanly, ASPM confirmed disabled in dmesg, same timeout/semaphore failure regardless
Reinstalling linux-firmware package (does not change anything since driver doesn't reference the new-format files)
Confirmed Secure Boot / module signing is not the issue — module loads and initializes, fails specifically at MCU firmware handshake

Expected behavior:
Driver should successfully patch/load MCU firmware and bring up the interface.

Question for maintainers: Is there any plan to point the out-of-tree/in-progress MT7902 support at the new split-format official firmware in linux-firmware, or is the old bundled firmware known-broken for certain ASIC revisions? Happy to test patches or provide more logs.


---

A few notes before you post:
- I filled in what we actually confirmed together — don't add anything you're not sure about
- If you comment on #1062 instead of opening a new one, you can drop the "same as #1062" framing at the top and just post the body directly
- You'll need a free GitHub account to post — let me know if you want help with that part too

Contributor guide

No contributing guide indexed for this repository

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.

Research direction

Start with the out-of-tree mt7902e driver and its firmware references, then compare the bundled WIFI_MT7902_patch_mcu_1_1_hdr.bin and WIFI_RAM_CODE_MT7902_1.bin with the split files under /lib/firmware/mediatek/mt7902/. Review issue #1062 and reproduce the logged MCU timeouts. Done means the MT7902 initializes without the semaphore failure and brings up its interface.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.