MediaTek mt7921e fails in kernel 6.6 and later (through 6.10)

I’ve been working on this with the team at Framework computer, but searching shows it occurs on other systems. The issue only occurs on kernels after 6.5–6.1 works fine. Behavior is as follows:

After a fresh boot or recover from hibernate, wifi takes 1-2 minutes to come up. dmesg shows

dmesg | grep mt7921e
[    7.520981] mt7921e 0000:01:00.0: not ready 1023ms after FLR; waiting
[    8.560980] mt7921e 0000:01:00.0: not ready 2047ms after FLR; waiting
[   10.800482] mt7921e 0000:01:00.0: not ready 4095ms after FLR; waiting
[   15.067668] mt7921e 0000:01:00.0: not ready 8191ms after FLR; waiting
[   23.387425] mt7921e 0000:01:00.0: not ready 16383ms after FLR; waiting
[   40.667125] mt7921e 0000:01:00.0: not ready 32767ms after FLR; waiting
[   74.800885] mt7921e 0000:01:00.0: not ready 65535ms after FLR; giving up
[   74.954253] mt7921e 0000:01:00.0: ASIC revision: 79220010
[   75.036032] mt7921e 0000:01:00.0: HW/SW Version: 0x8a108a10, Build Time: 20240409163301a
[   75.405584] mt7921e 0000:01:00.0: WM Firmware Version: ____000000, Build Time: 20240409163347

Recovery from a reboot or suspend is immediate.

What I’ve tried that didn’t work:

  • Downloading the latest firmware from Mediatek
  • Reverting to the 202311 and 202403 firmware from Mediatek
  • Switching to iwd
  • Latest Manjaro Live CD

What I’ve tried that did work:

  • Nearly any other current distribution (Ubuntu, Fedora, Solus)

The problem only appears to occur on Manjaro (and possibly OpenSUSE), and only with newer kernels.

Short investigation:

It is not clear whether it is the cause of the problem and what it is actually needed for.

The patch says what issue it is fixing;

When “Pre-boot WiFi” is enabled in BIOS, the mt7921e device may not work

So the first thing I’d check is if that option is enabled in BIOS.

enabled ? it should be disabled and there is usually a hotkey (in most cases the on/off button must be pressed several seconds) to reset the pre-boot configuration of the bios.

afterwards it’s worth a try to install the

pamac install rz608-fix-git 

package that fixes a weird bug of a wrong device-id of the mt7921e as described in the link

Which is why I’d check if it’s enabled :stuck_out_tongue:

That option isn’t in the Framework BIOS as far as I’ve seen, I’m using the Ryzen 7840U mainboard.

This thread has numerous reports of mt7921e issues on various distros including Arch, Manjaro, NixOS, and OpenSUSE.

If it is a kernel issue then I’m afraid I can’t think of any easy way to pinpoint what’s causing it. You’d have to experiment with building a custom kernel with all patches removed, and if that works then add them back until you find the one that breaks it.

I appreciate all the quick replies! @viggy96 is right–there’s no such option in the Framework BIOS (AMD 3.05).

I tried the @Olli suggestion for the rz608-fix, but it didn’t make any difference.

It seems likely that this is a kernel issue, since everything works fine up to 6.1. Seems my option is to switch to a different distro or stay on kernel 6.1.92-1 forever. I’ve been on Manjaro for a few years, though, and would prefer to stay with it.

I’ve been following that thread, as well. The “hibernation-resume” issue seems to be closely related to but not the same as the “no wifi at clean boot” issue. I seem to have both problems.

The patch 0007-mt7921e_Perform_FLR_to_recovery_the_device.patch · main · Packages / Core / linux610 · GitLab is causing this issue. I’ve recompiled Manjaro kernel 6.10.2 without it and wifi it’s working without problems on computer startup (ASUS ROG Zephyrus G15).

Arch Linux doesn’t have this patch and doesn’t have this issue either. Also Manjaro 6.1.x kernel doesn’t have this patch, so it’s working.