Extremely variable wifi downstream (but not upstream)

Hi all,

I’ve just installed Fedora 43 KDE Plasma on my ThinkPad X13 AMD gen 3, and for the most part I’m liking it, but I’m having a few issues. The current pressing one involves wifi speeds that swing between 32MB/s down and 400KBps. I observed this while rsyncing files from another machine right next to it on the local network, and was running speedtests today showing 2.5mbps down with 150mbps up.

Some diagnostics…

aeongen@fedora:~/Downloads$ lspci
00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h-19h PCIe Root Complex (rev 01)
00:00.2 IOMMU: Advanced Micro Devices, Inc. [AMD] Family 17h-19h IOMMU
00:01.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h-19h PCIe Dummy Host Bridge (rev 01)
00:02.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h-19h PCIe Dummy Host Bridge (rev 01)
00:02.2 PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h-19h PCIe GPP Bridge
00:02.4 PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h-19h PCIe GPP Bridge
00:03.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h-19h PCIe Dummy Host Bridge (rev 01)
00:04.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h-19h PCIe Dummy Host Bridge (rev 01)
00:04.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 19h USB4/Thunderbolt PCIe tunnel
00:08.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h-19h PCIe Dummy Host Bridge (rev 01)
00:08.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h-19h Internal PCIe GPP Bridge (rev 10)
00:08.3 PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h-19h Internal PCIe GPP Bridge (rev 10)
00:14.0 SMBus: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller (rev 71)
00:14.3 ISA bridge: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge (rev 51)
00:18.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Rembrandt Data Fabric: Device 18h; Function 0
00:18.1 Host bridge: Advanced Micro Devices, Inc. [AMD] Rembrandt Data Fabric: Device 18h; Function 1
00:18.2 Host bridge: Advanced Micro Devices, Inc. [AMD] Rembrandt Data Fabric: Device 18h; Function 2
00:18.3 Host bridge: Advanced Micro Devices, Inc. [AMD] Rembrandt Data Fabric: Device 18h; Function 3
00:18.4 Host bridge: Advanced Micro Devices, Inc. [AMD] Rembrandt Data Fabric: Device 18h; Function 4
00:18.5 Host bridge: Advanced Micro Devices, Inc. [AMD] Rembrandt Data Fabric: Device 18h; Function 5
00:18.6 Host bridge: Advanced Micro Devices, Inc. [AMD] Rembrandt Data Fabric: Device 18h; Function 6
00:18.7 Host bridge: Advanced Micro Devices, Inc. [AMD] Rembrandt Data Fabric: Device 18h; Function 7
01:00.0 Network controller: Qualcomm Technologies, Inc QCNFA765 Wireless Network Adapter (rev 01)
02:00.0 Non-Volatile memory controller: ADATA Technology Co., Ltd. FALCON, GAMMIX S41, SPECTRIX S40G NVMe SSD (DRAM-less) (rev 01)
33:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Rembrandt [Radeon 680M] (rev d1)
33:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Radeon High Definition Audio Controller
33:00.2 Encryption controller: Advanced Micro Devices, Inc. [AMD] Family 19h PSP/CCP
33:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Rembrandt USB4 XHCI controller #3
33:00.4 USB controller: Advanced Micro Devices, Inc. [AMD] Rembrandt USB4 XHCI controller #4
33:00.5 Multimedia controller: Advanced Micro Devices, Inc. [AMD] Audio Coprocessor (rev 60)
33:00.6 Audio device: Advanced Micro Devices, Inc. [AMD] Ryzen HD Audio Controller
34:00.0 USB controller: Advanced Micro Devices, Inc. [AMD] Rembrandt USB4 XHCI controller #8
34:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Rembrandt USB4 XHCI controller #5
34:00.4 USB controller: Advanced Micro Devices, Inc. [AMD] Rembrandt USB4 XHCI controller #6
34:00.6 USB controller: Advanced Micro Devices, Inc. [AMD] Rembrandt USB4/Thunderbolt NHI controller #2
aeongen@fedora:~/Downloads$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 05e3:0610 Genesys Logic, Inc. Hub
Bus 001 Device 003: ID 10ab:9309 USI Co., Ltd 
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 002: ID 046d:c542 Logitech, Inc. M185 compact wireless mouse
Bus 003 Device 003: ID 06cb:00f9 Synaptics, Inc. 
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 002: ID 30c9:0050 Luxvisions Innotech Limited Integrated RGB Camera
Bus 006 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 007 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 008 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 008 Device 002: ID 2109:2822 VIA Labs, Inc. USB2.0 Hub             
Bus 008 Device 003: ID 2109:2817 VIA Labs, Inc. USB2.0 Hub             
Bus 008 Device 004: ID 1a40:0801 Terminus Technology Inc. USB 2.0 Hub
Bus 008 Device 005: ID 05ac:024f Apple, Inc. Aluminium Keyboard (ANSI)
Bus 008 Device 006: ID 2109:8817 VIA Labs, Inc. USB Billboard Device   
Bus 008 Device 007: ID 2109:8822 VIA Labs, Inc. USB Billboard Device   
Bus 009 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 009 Device 002: ID 2109:0822 VIA Labs, Inc. USB3.1 Hub             
Bus 009 Device 003: ID 2109:0817 VIA Labs, Inc. USB3.0 Hub             
Bus 009 Device 004: ID 0bda:8153 Realtek Semiconductor Corp. RTL8153 Gigabit Ethernet Adapter
aeongen@fedora:~/Downloads$ iw reg get
global
country US: DFS-FCC
        (902 - 904 @ 2), (N/A, 30), (N/A)
        (904 - 920 @ 16), (N/A, 30), (N/A)
        (920 - 928 @ 8), (N/A, 30), (N/A)
        (2400 - 2472 @ 40), (N/A, 30), (N/A)
        (5150 - 5250 @ 80), (N/A, 23), (N/A), AUTO-BW
        (5250 - 5350 @ 80), (N/A, 24), (0 ms), DFS, AUTO-BW
        (5470 - 5730 @ 160), (N/A, 24), (0 ms), DFS
        (5730 - 5850 @ 80), (N/A, 30), (N/A), AUTO-BW
        (5850 - 5895 @ 40), (N/A, 27), (N/A), NO-OUTDOOR, AUTO-BW, PASSIVE-SCAN
        (5925 - 7125 @ 320), (N/A, 12), (N/A), NO-OUTDOOR, PASSIVE-SCAN
        (57240 - 71000 @ 2160), (N/A, 40), (N/A)

phy#0 (self-managed)
country US: DFS-FCC
        (2402 - 2472 @ 40), (N/A, 20), (N/A)
        (2457 - 2472 @ 15), (N/A, 20), (N/A), PASSIVE-SCAN
        (5170 - 5250 @ 80), (N/A, 20), (N/A), AUTO-BW, PASSIVE-SCAN
        (5250 - 5330 @ 80), (N/A, 20), (0 ms), DFS, AUTO-BW, PASSIVE-SCAN
        (5490 - 5730 @ 160), (N/A, 20), (0 ms), DFS, AUTO-BW, PASSIVE-SCAN
        (5735 - 5855 @ 80), (N/A, 20), (N/A), AUTO-BW, PASSIVE-SCAN
        (5855 - 5895 @ 40), (N/A, 20), (N/A), NO-OUTDOOR, AUTO-BW, PASSIVE-SCAN
        (5925 - 7125 @ 160), (N/A, 24), (N/A), NO-OUTDOOR, AUTO-BW
aeongen@fedora:~/Downloads$ iw list | grep -A 15 Frequencies:
                Frequencies:
                        * 2412.0 MHz [1] (20.0 dBm)
                        * 2417.0 MHz [2] (20.0 dBm)
                        * 2422.0 MHz [3] (20.0 dBm)
                        * 2427.0 MHz [4] (20.0 dBm)
                        * 2432.0 MHz [5] (20.0 dBm)
                        * 2437.0 MHz [6] (20.0 dBm)
                        * 2442.0 MHz [7] (20.0 dBm)
                        * 2447.0 MHz [8] (20.0 dBm)
                        * 2452.0 MHz [9] (20.0 dBm)
                        * 2457.0 MHz [10] (20.0 dBm)
                        * 2462.0 MHz [11] (20.0 dBm)
                        * 2467.0 MHz [12] (disabled)
                        * 2472.0 MHz [13] (disabled)
                        * 2484.0 MHz [14] (disabled)
        Band 2:
--
                Frequencies:
                        * 5180.0 MHz [36] (20.0 dBm) (no IR)
                        * 5200.0 MHz [40] (20.0 dBm) (no IR)
                        * 5220.0 MHz [44] (20.0 dBm) (no IR)
                        * 5240.0 MHz [48] (20.0 dBm) (no IR)
                        * 5260.0 MHz [52] (20.0 dBm) (no IR, radar detection)
                        * 5280.0 MHz [56] (20.0 dBm) (no IR, radar detection)
                        * 5300.0 MHz [60] (20.0 dBm) (no IR, radar detection)
                        * 5320.0 MHz [64] (20.0 dBm) (no IR, radar detection)
                        * 5500.0 MHz [100] (20.0 dBm) (no IR, radar detection)
                        * 5520.0 MHz [104] (20.0 dBm) (no IR, radar detection)
                        * 5540.0 MHz [108] (20.0 dBm) (no IR, radar detection)
                        * 5560.0 MHz [112] (20.0 dBm) (no IR, radar detection)
                        * 5580.0 MHz [116] (20.0 dBm) (no IR, radar detection)
                        * 5600.0 MHz [120] (20.0 dBm) (no IR, radar detection)
                        * 5620.0 MHz [124] (20.0 dBm) (no IR, radar detection)
--
                Frequencies:
                        * 5955.0 MHz [1] (24.0 dBm)
                        * 5975.0 MHz [5] (24.0 dBm)
                        * 5995.0 MHz [9] (24.0 dBm)
                        * 6015.0 MHz [13] (24.0 dBm)
                        * 6035.0 MHz [17] (24.0 dBm)
                        * 6055.0 MHz [21] (24.0 dBm)
                        * 6075.0 MHz [25] (24.0 dBm)
                        * 6095.0 MHz [29] (24.0 dBm)
                        * 6115.0 MHz [33] (24.0 dBm)
                        * 6135.0 MHz [37] (24.0 dBm)
                        * 6155.0 MHz [41] (24.0 dBm)
                        * 6175.0 MHz [45] (24.0 dBm)
                        * 6195.0 MHz [49] (24.0 dBm)
                        * 6215.0 MHz [53] (24.0 dBm)
                        * 6235.0 MHz [57] (24.0 dBm)

Here are a couple of speedtest.net results. The second was taken about 15 minutes after the first, but actually jumped up from 2.5mbps in the middle of the test.



Please help!

I hope you understand that speedtest.net is using a remote server and variations are dependent upon that server and the path used for the connection.

It cannot be used reliably to compare with data transfer between systems on the same local LAN since local data transfer never goes beyond the local gateway and thus depends only upon the two local systems and the LAN infrastructure.

I also note that you have a qualcomm wifi adapter, which seem to be known for unstable performance on linux.

Of course speedtest.net is something of an apples-to-oranges comparison, but it also running it ~15 minutes apart should not produce results that are multiple orders of magnitude different. Another observed datapoint is that I was trying to download pycharm at one point last night, and was able to improve my download speeds from ~400KB/s to ~25MB/s by simply disconnecting and reconnecting from my router (an Orbi RB850 mesh network with a single satellite.)

I can look into replacing the Qualcomm card with an Intel one; I’ve already opened this machine up once to replace the SSD. But in the meantime, do I have any further options for triage and fix that don’t involve spending money and waiting a few days?

Try a test using scp between systems on your LAN.
First copy to the remote a big file then copy it back using time scp.

Do you see the same speed issue?
Do you see any errors in the system journal?

Okay, ran the SCP test. Set up a copy of a 7.5GB 7z file from my local disk to my NAS (which is wired directly into my router), then copied it back from the NAS to my laptop multiple times. It took several attempts before I was able to see a result, but I was able to repro. See the second-to-last result

aeongen@fedora:/mnt/data/xfer$ time scp /mnt/nas_etc/XenogearsHD_CD1+CD2.7z ./xgcopyback.7z

real    1m57.768s
user    0m0.047s
sys     0m12.628s
aeongen@fedora:/mnt/data/xfer$ time scp /mnt/nas_etc/XenogearsHD_CD1+CD2.7z ./xgcopyback.7z

real    1m57.489s
user    0m0.028s
sys     0m12.676s
aeongen@fedora:/mnt/data/xfer$ time scp /mnt/nas_etc/XenogearsHD_CD1+CD2.7z ./xgcopyback.7z

real    1m56.024s
user    0m0.029s
sys     0m12.494s
aeongen@fedora:/mnt/data/xfer$ time scp /mnt/nas_etc/XenogearsHD_CD1+CD2.7z ./xgcopyback.7z

real    1m50.908s
user    0m0.026s
sys     0m12.770s
aeongen@fedora:/mnt/data/xfer$ time scp /mnt/nas_etc/XenogearsHD_CD1+CD2.7z ./xgcopyback.7z

real    7m29.009s
user    0m0.031s
sys     0m13.375s
aeongen@fedora:/mnt/data/xfer$ time scp /mnt/nas_etc/XenogearsHD_CD1+CD2.7z ./xgcopyback.7z

real    1m55.066s
user    0m0.036s
sys     0m12.306s

Had System Monitor up during these tests. The “Download” metric typically ranged between 60MiB/s to 100MiB/s. During the anomalous iteration, I was able to screenshot the following, which is consistent with the speedtest results and my observations during rysnc:

Here’s a snapshot of what it looks like during a “normal” transfer:

Please describe your network: how many systems are using it, are any of them streaming video, is there a mix of windows and linux systems? Most of my WiFi experience has been with student labs and conference rooms. One reason for the wide difference you see is “quality of service” settings used on a busy network so streaming videos can be used by giving low priority for file transfers.

Here’s some journalctl output. The anomalous screenshot was captured at 10:47AM. I don’t know exactly when the transfer started and ended, and I’m not sure what to look for in these logs, so I’m including lines from ~10:40AM to ~10:55AM. Log is too big so I’m linking to a paste:

On the subject of network topology, as noted it’s an Orbi RB850 AX6000 mesh with a single satellite. Primarily Windows devices, mobile devices (both iOS and Android), and game consoles; this is the only linux device. I had a media PC running youtube (1440p60). Wife had a Teams meeting during the test. She sometimes streams Amazon video. At any given time we have at most two devices streaming video, from some combination of the NAS, from Amazon/Disney+/Hulu, or from Youtube. Congestion from neighbors is minimal; we live in a house in a suburb, not an apartment and no apartment buildings nearby.

As an observation, the system seems to alternate between connecting to main and satellite ap:

grep -E "WNM|disconn" 9apz6qDt.sh 
Dec 18 10:40:06 fedora wpa_supplicant[1280]: wlp1s0: WNM: Preferred List Available
Dec 18 10:40:06 fedora kernel: wlp1s0: disconnect from AP 28:80:88:27:aa:88 for new auth to 08:36:c9:82:20:22
Dec 18 10:42:58 fedora wpa_supplicant[1280]: wlp1s0: WNM: Preferred List Available
Dec 18 10:42:58 fedora kernel: wlp1s0: disconnect from AP 08:36:c9:82:20:22 for new auth to 28:80:88:27:aa:88
Dec 18 10:43:38 fedora wpa_supplicant[1280]: wlp1s0: WNM: Preferred List Available
Dec 18 10:43:38 fedora kernel: wlp1s0: disconnect from AP 28:80:88:27:aa:88 for new auth to 08:36:c9:82:20:22
Dec 18 10:46:52 fedora wpa_supplicant[1280]: wlp1s0: WNM: Preferred List Available
Dec 18 10:46:52 fedora kernel: wlp1s0: disconnect from AP 08:36:c9:82:20:22 for new auth to 28:80:88:27:aa:88
Dec 18 10:47:11 fedora wpa_supplicant[1280]: wlp1s0: WNM: Preferred List Available
Dec 18 10:47:11 fedora kernel: wlp1s0: disconnect from AP 28:80:88:27:aa:88 for new auth to 08:36:c9:82:20:22
Dec 18 10:52:49 fedora wpa_supplicant[1280]: wlp1s0: WNM: Preferred List Available
Dec 18 10:52:49 fedora kernel: wlp1s0: disconnect from AP 08:36:c9:82:20:22 for new auth to 28:80:88:27:aa:88
Dec 18 10:56:03 fedora wpa_supplicant[1280]: wlp1s0: WNM: Preferred List Available
Dec 18 10:56:03 fedora kernel: wlp1s0: disconnect from AP 28:80:88:27:aa:88 for new auth to 08:36:c9:82:20:22

There have been reports of connection issues with Orbi firmware updates, so it would be good to show us your Orbi firmware version. It would not be surprising that some WiFi cards don’t work well with Orbi. You could use a USB WiFi dongle to see if your internal WiFi is part of the problem — I find linux WiFi often has issues with updates so having a USB WiFi dongle is (too?) often useful.

The Orbi is on V4.6.9.11_2.3.5. I’ve checked in the router admin panel and there doesn’t seem to be a new OTA firmware available, but I’m seeing a v7.2 on both Netgear’s support site and on Reddit. That’s… quite a big version delta. Not sure if I should do a manual update.

Most big retailers allow user comments with ratings. Those often mention issues with updates so you may want to look at Amazon, Bestbuy, Staples, etc. I expect some firmware changes addressed security issues, but those issues may depend on your threat environment and what systems are on your network.

The numbering jumps from 4.6 to 7.2, so the delta sounds bigger than it is. The missing updates do contain a number of fixes for unstable connectivity:

  • Improve the stability between base and satellite connections.
  • Improves the stability of WiFi device connections during roaming.
  • Fixed a WiFi connection stability issue.

I’ll try updating the router firmware once my wife is off work. In the meantime, I have the following capture from plasma’s Networks system tray popup, measuring my transfer speeds over the period of about a minute:

Can really see the impact of the machine jumping between the base and the satellite.

Edit: In addition to the obvious problem of jumping between networks, it seems like the wrong ones are being picked? This is a wifi 6 mesh and it should be connecting at 6GHz instead of 2.4 or 5.2. I’ve got the details pane up and I keep seeing the connection speed jump between 648.5MBit/s, 48MBit/s, and 6MBit/s, even on the same node.

Here’s a reddit post with some information about the card itself:

It is, unfortunately, soldered to my laptop’s motherboard. And while I’m sure USB wifi is handy in the event of updates breaking something, I really don’t want to have to have a dongle with an antenna sticking out the side of my laptop for the rest of its life.

I think we can rule out the mesh being the cause of this; I’ve since both upgraded the firmware and unplugged the satellite (it was really only in place for the sake of the bedroom TV) and I’m still seeing my laptop bounce between the 2.4 and 5.2 bands, with intermittent questionable speeds that can be fixed by disconnecting and reconnecting the wifi.

Are you 100% certain this is the case?
Every laptop I have ever opened has had the wifi adapter immediately accessible after opening the laptop case and it has been an m.2 card in a socket. (admittedly I have not had all the potential brand & model laptops to work on though.)

If you were to provide info about the system itself maybe someone else has the same laptop and could assist.

I also wonder if part of this instability may be caused by using both IPv4 & IPv6. Maybe try turning off IPv6 to test if that may be a factor.

IPv6 is disabled at both the router level and in my wifi options for the connection.

That is unfortunate.

Another option would be to spend a small amount and get a USB wifi dongle that is better supported by linux. The difficulty there is verifying the chipset in use before purchase. Though it seems almost all intel wifi chipsets work well, others may not.

I don’t have a wifi usb dongle, so I decided to test this adapter and will let you know the actual chipset and performance as soon as possible.

One reviewer provided USB ID, so https://linux-hardware.org/?id=usb:0e8d-7961, but if vendor doesn’t state the ID it is often because they ship multiple chips under the same product name.

1 Like

I agree.
None of the wifi dongles I looked at on amazon showed the chipset used. Trial and Error city for everyone, even though some of them do show that they should work on linux.

I am back with the results of the test with the indicated wifi dongle.
It seems to have a mediatek chipset with ID 0e8d:7961 and uses the driver mt7921u on f43.

The device is supported on fedora (and probably almost all linux distros) but its throughput is less than half that of an intel AX210 chipset.