[Framework 13 AMD on Arch] Issues with wireless after resume

Probable continues in Arch with Linux 6.9.1.

Have just updated my system to 6.6.31-2-lts, now i have a different problem, my system won’t shutdown/reset, i have to manually powercycle (but wifi does work after resume from hibernate). Tried the new 6.9.1-arch1-2 as well, but there the mt7921e module still needs to be reloaded otherwise there’s no wifi after resume from hibernate. I’m switching back to 6.6.30-1-lts.

I was wondering if I was the only one having this issue, but I’m having the same issue on 6.6.31

I’m having this issue with my Framework 16 on Arch with kernel 6.9.2.

This has been my experience with hibernation too: all’s well if I resume within a few hours, but I have to reload the module if it’s left hibernating for longer periods. I haven’t been keeping close track of that but it could be an interesting clue e.g. if the DHCP lease expires while it’s hibernated?

1 Like

issue persists on Kernel 6.9.1 with NixOS 23.11 & NetworkManager the sudo rmmod mt7921e && sudo modprobe mt7921e actually resolves it. But would be nice for this to just not happen :slight_smile:

1 Like

I’m also having the same issue with the Framework 16 which uses the same driver at least. OpenSUSE Tumbleweed on kernel 6.9.1 here.

This has been working for me on Tumbleweed:

The interesting thing for me is that it does not seem to happen anymore after I switched from a Fritz!Repeater AP to a Unifi U6+ AP. Also no more sudden deauth errors which were part of the wifi troubles after sleep for me. I’m still keeping an eye open though.

Noting another thread that looks like it’s covering the same issue: [RESPONDED] Arch hibernation woes on AMD 13

Final solution for me was a /usr/lib/systemd/system-sleep/ script as well.

One interesting point to add: the first version I tried (inadvertently) and had success with just used rfkill block all; sleep 1 in “pre” and sleep 1; rfkill unblock all in “post”.

Next week or so will be testing a version with modprobe and modprobe -r.

For me, restarting NetworkManager works (if you use it). I did not have luck with the modprobe solution.

Also, weirdly, one time out of ten it comes back working.

Okay: I wanted to follow up and say it’s finally fixed for me. I’m not sure when (I had a mitigation in place), but I’m on 6.10.4 and the wifi comes back without issue.

1 Like

Personally, to deal with this issue I created a Systemd service called “restart-wifi.service” that runs after hibernation and reinitializes the driver according to the solution here:

[Unit]
Description=Restart WiFi driver after hibernation
After=hibernate.target

[Service]
Type=oneshot
ExecStart=/bin/sh -c 'sleep 15 && modprobe -rv mt7921e && sleep 3 && modprobe -v mt7921e'
User=root

[Install]
WantedBy=hibernate.target

Place it in /etc/systemd/system/, and then run sudo systemctl daemon-reload && sudo systemctl enable restart-wifi.service to enable it.

I found that the sleep 15 helps with preventing the script from executing before NetworkManager and thereby softlocking it.