USB wifi adapter, erratic performance, practically a roller coaster!

With a USB WiFi adapter, Panda Wireless PAU0D - mt7612u, on Fedora 41 (kernel 6.12.8), despite the adapter being listed as supported with in-kernel drivers and being detected correctly, both download and upload speeds vary wildly, dropping from over 100Mbps to almost 0 continuously, in a steep drop that lasts for several seconds before returning to full speed and starting up this cycle after a while. I tried if it was something similar to this Tip: Lower WiFi latency by disabling WiFi power management, but to no avail. Available for any additional input.

RF interference can come from poorly shielded USB ports and cables. Is the adapter directly connected to the PC or do you use an extension cable or USB hub? Sometimes switching USB ports helps.

Tried it now, I had already done it but without this rationale, nothing. I should add that I also have a separate Windows drive, and that doesn’t suffer the same issue EDIT: Adapter plugged directly.

Linux WiFi has disadvantages that matter in some edge cases, even for modules from kernel.org. There may be conservative choices for power and frequencies for some regulatory regimes. You may be able to see differences using WiFi router management tools. For Linux, the journalctl and iw command-line utilities provide great detail, but a) you would need to find ways to obtain comparable details from Windows to make a comparison, and b) they take some study to understand the available options.

To start, try running journalctl --no-hostname -b -g wifi|cat (we don’t need your hostname and the |cat wraps long lines) in a terminal. Post the ouput as pre-formatted text using the </> button from the top of the text entry panel. You should see something similar to the following (different wifi hardware) and hopefully extra lines for times when the performance suffered:

$ journalctl --no-hostname -b -g wifi|cat
Jan 09 14:55:54 kernel: Intel(R) Wireless WiFi driver for Linux
Jan 09 14:55:54 kernel: iwlwifi 0000:00:14.3: enabling device (0100 -> 0102)
Jan 09 14:55:54 kernel: iwlwifi 0000:00:14.3: Detected crf-id 0x2816, cnv-id 0x1000100 wfpm id 0x80000000
Jan 09 14:55:54 kernel: iwlwifi 0000:00:14.3: PCI dev a370/4030, rev=0x312, rfid=0x105110
Jan 09 14:55:54 kernel: iwlwifi 0000:00:14.3: Detected Intel(R) Wireless-AC 9560 160MHz
Jan 09 14:55:54 kernel: iwlwifi 0000:00:14.3: WRT: Overriding region id 0
[...]
Jan 09 14:55:54 kernel: iwlwifi 0000:00:14.3: WRT: Overriding region id 28
Jan 09 14:55:54 kernel: iwlwifi 0000:00:14.3: loaded firmware version 46.7e3e4b69.0 9000-pu-b0-jf-b0-46.ucode op_mode iwlmvm
Jan 09 14:55:54 kernel: iwlwifi 0000:00:14.3: base HW address: 04:ed:33:d9:16:d3, OTP minor version: 0x4
Jan 09 14:55:54 kernel: iwlwifi 0000:00:14.3 wlo1: renamed from wlan0
Jan 09 14:55:55 NetworkManager[1027]: <info>  [1736448955.1340] Read config: /etc/NetworkManager/NetworkManager.conf (lib: 20-connectivity-fedora.conf, 22-wifi-mac-addr.conf, 99-nvme-nbft-no-ignore-carrier.conf)
Jan 09 14:55:55 NetworkManager[1027]: <info>  [1736448955.1409] rfkill1: found Wi-Fi radio killswitch (at /sys/devices/pci0000:00/0000:00:14.3/ieee80211/phy0/rfkill1) (driver iwlwifi)
Jan 09 14:55:55 NetworkManager[1027]: <info>  [1736448955.1479] Loaded device plugin: NMWifiFactory (/usr/lib64/NetworkManager/1.50.0-1.fc41/libnm-device-plugin-wifi.so)
Jan 09 14:55:55 kernel: iwlwifi 0000:00:14.3: Registered PHC clock: iwlwifi-PTP, with index: 0

This the print at a time when it’s going quite smoothly:

journalctl --no-hostname -b -g wifi|cat
Jan 15 21:03:14 NetworkManager[1196]: <info>  [1736971394.6936] Read config: /etc/NetworkManager/NetworkManager.conf (lib: 20-connectivity-fedora.conf, 22-wifi-mac-addr.conf, 99-nvme-nbft-no-ignore-carrier.conf) (etc: wifi-powersave-off.conf)
Jan 15 21:03:14 NetworkManager[1196]: <info>  [1736971394.7489] Loaded device plugin: NMWifiFactory (/usr/lib64/NetworkManager/1.50.0-1.fc41/libnm-device-plugin-wifi.so)
Jan 15 21:03:33 NetworkManager[1196]: <info>  [1736971413.8981] device (wlp16s0u11): Activation: (wifi) access point 'RS-33428024 1' has security, but secrets are required.
Jan 15 21:03:33 NetworkManager[1196]: <info>  [1736971413.9008] device (wlp16s0u11): Activation: (wifi) connection 'RS-33428024 1' has security, and secrets exist.  No new secrets needed.
Jan 15 21:03:37 NetworkManager[1196]: <info>  [1736971417.1002] device (wlp16s0u11): Activation: (wifi) Stage 2 of 5 (Device Configure) successful. Connected to wireless network "RS-33428024"

And this is in one of its spikes… It would look the same?

journalctl --no-hostname -b -g wifi|cat
Jan 15 21:03:14 NetworkManager[1196]: <info>  [1736971394.6936] Read config: /etc/NetworkManager/NetworkManager.conf (lib: 20-connectivity-fedora.conf, 22-wifi-mac-addr.conf, 99-nvme-nbft-no-ignore-carrier.conf) (etc: wifi-powersave-off.conf)
Jan 15 21:03:14 NetworkManager[1196]: <info>  [1736971394.7489] Loaded device plugin: NMWifiFactory (/usr/lib64/NetworkManager/1.50.0-1.fc41/libnm-device-plugin-wifi.so)
Jan 15 21:03:33 NetworkManager[1196]: <info>  [1736971413.8981] device (wlp16s0u11): Activation: (wifi) access point 'RS-33428024 1' has security, but secrets are required.
Jan 15 21:03:33 NetworkManager[1196]: <info>  [1736971413.9008] device (wlp16s0u11): Activation: (wifi) connection 'RS-33428024 1' has security, and secrets exist.  No new secrets needed.
Jan 15 21:03:37 NetworkManager[1196]: <info>  [1736971417.1002] device (wlp16s0u11): Activation: (wifi) Stage 2 of 5 (Device Configure) successful. Connected to wireless network "RS-33428024"

The timestamps for the 2 snippets are the same, so the issue doesn’t create additional journal entries for wifi. You may need to increase the level of detail in the logs or wifi issues may be a symptom of some other issue. You can search for the time of the problem by substituting a time for the wifi in the journalctl command line.

It has been years since I needed to get detailed logs for wifi — we need someone with recent experience to comment. As I recall, you will get a lot of irrelevant details, so identifying an issue may not be easy.

FWIW, it looks like some WiFi drivers have settings to enable extra logging:

$ modinfo -p iwlwifi
debug:debug output mask (uint)
...

https://wireless.docs.kernel.org/en/latest/en/users/drivers/iwlwifi/debugging.html

There is some info about the debug levels here: iwl-debug.h « iwlwifi « intel « wireless « net « drivers - kernel/git/torvalds/linux.git - Linux kernel source tree