I used sunwire/dkms-8821au before kernel 6.13 sunwire/dkms-8821au Copr
and WiFi works fine, without failures.
Now my driver id rtw_8821au from
$ uname -r
6.13.6-200.fc41.x86_64
and my wifi dies periodically
time to death varies from 30 minutes to 10 hours
after the wifi died
my wlp0s20u2 state = DOWN
$ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp2s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
link/ether 5c:f9:dd:45:27:08 brd ff:ff:ff:ff:ff:ff
3: wlp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000
link/ether 60:36:dd:08:71:18 brd ff:ff:ff:ff:ff:ff
4: wlp0s20u2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DORMANT group default qlen 1000
link/ether aa:4f:ec:c1:7c:b4 brd ff:ff:ff:ff:ff:ff permaddr 28:ee:52:13:c2:92
solution =
unplug the USB adapter and plug it back in
journalctl says:
$ journalctl -b -g rtw_8821au
Mar 18 15:53:14 DELLV kernel: rtw_8821au 1-2:1.0: Firmware version 42.4.0, H2C version 0
Mar 18 15:53:15 DELLV kernel: usbcore: registered new interface driver rtw_8821au
Mar 18 15:53:15 DELLV kernel: rtw_8821au 1-2:1.0 wlp0s20u2: renamed from wlan0
Mar 18 15:53:17 DELLV NetworkManager[1373]: <info> [1742305997.7346] rfkill2: found Wi-Fi radio killswitch (at /sys/devices/pci000>
Mar 18 16:44:20 DELLV kernel: rtw_8821au 1-2:1.0: failed to get tx report from firmware
Mar 18 16:44:22 DELLV kernel: rtw_8821au 1-2:1.0: failed to get tx report from firmware
Mar 18 16:44:24 DELLV kernel: rtw_8821au 1-2:1.0: failed to get tx report from firmware
Mar 18 16:44:26 DELLV kernel: rtw_8821au 1-2:1.0: failed to get tx report from firmware
Mar 18 16:44:28 DELLV kernel: rtw_8821au 1-2:1.0: failed to get tx report from firmware
Mar 18 16:44:34 DELLV kernel: rtw_8821au 1-2:1.0: failed to get tx report from firmware
Mar 18 16:44:34 DELLV kernel: rtw_8821au 1-2:1.0: failed to get tx report from firmware
Mar 18 16:44:35 DELLV kernel: rtw_8821au 1-2:1.0: failed to get tx report from firmware
I think the problem is that dkms-8821au was installed at the time you upgraded to the 6.13.6-200.fc41.x86_64 kernel. Consequently, the rtw_8821au driver was built and used.
sudo dnf remove dkms-8821au may not have been enough to remove the driver.
Does dkms status show that the module is built for the 6.13 kernel? If so, can you remove it with dkms remove -m rtw_8821au -v 1.2 -k 6.13.7-200.fc41.x86_64?
Edit: Nevermind. Your lsmod output from your updated post shows that your are using the newer rtw88_8821au driver. That wasn’t the case in your initial inxi -nxxx output. I think you are using the new driver now. (And you are on a newer kernel. That’s probably why.)
$ dkms status
8821au/5.12.5.2-2.git20240330.fc39: broken
Error! 8821au/5.12.5.2-2.git20240330.fc39: Missing the module source directory or the symbolic link pointing to it.
Manual intervention is required!
8821au/5.12.5.2-2.git20240615.fc40: broken
Error! 8821au/5.12.5.2-2.git20240615.fc40: Missing the module source directory or the symbolic link pointing to it.
Manual intervention is required!
8821au/5.12.5.2-2.git20240615.fc41: broken
Error! 8821au/5.12.5.2-2.git20240615.fc41: Missing the module source directory or the symbolic link pointing to it.
Manual intervention is required!
You might want to check the config files under /etc/modprobe.d and make sure the native rtw88_8821auisn’t being blacklisted. You might also try creating a config file there containing blacklist rtw_8821au to try to prevent the dkms driver from being used. Beyond that, sorry, I’m not sure what is happening.
Edit: I think the inxi -nxxx output must be bogus if lsmod doesn’t show that that driver is loaded.
It claims to support kernel 6.13, so you can use it for now and blacklist the upstream module until the issue is resolved with kernel or firmware updates, possibly in F42:
sudo tee /etc/modprobe.d/rtw88.conf << EOF > /dev/null
blacklist rtw88_8821au
EOF
Keep in mind that the upstream repo explicitly states they don’t plan supporting it beyond kernel 6.13, and F42 starts with kernel 6.14.
On the other hand, you can try using the upstream module and play with its parameters:
# List module dependencies recursively
mod_dep() {
local MOD="$(modinfo -F depends "${@}")"
for MOD in ${MOD//,/$'\n'}; do
mod_dep "${MOD}"
printf "%s\n" "${MOD}"
done
}
# List module parameters recursively
mod_parm() {
local MOD="$(mod_dep "${@}" | sort -u)"
for MOD in "${@}" ${MOD}; do
printf "==> %s <==\n" "${MOD}"
modinfo -p "${MOD}" \
| while read -r PARM; do
printf "%s (current: %s)\n" "${PARM}" "$(cat \
"$(printf "%s" /sys/module/ "${MOD}" \
/parameters/ "${PARM%%:*}")" 2> /dev/null)"
done
done
}
# An example listing and customizing module parameters
mod_parm rtw88_8821au
sudo tee /etc/modprobe.d/rtw88.conf << EOF > /dev/null
options rtw88_usb switch_usb_mode=0
EOF
Remember to reload the affected module or reboot to properly apply the changes.