PCI-E WiFi Card Recommendations?

Hello folks, I hope I have the right category here.

I recently purchased a TP-Link WiFi 6 card for my desktop PC since I upgraded my router to a WiFi 6 capable router. Previously I was using a powerline adapter + USB Ethernet Adapter (due to my motherboard’s built in Ethernet being… problematic to say the least) for internet connectivity, which was sufficient at the time because my router couldn’t really do more than about 300 Mbps and I’d get about 200 Mbps. Now over WiFi 6 I’m able to get around 600 Mbps on other WiFi 6 devices, along with the same wireless card in Windows. I’d have stuck with powerline if I could, but my place’s wiring seems to limit the speeds to no more than 200~250.

Unfortunately, my wireless speeds under Linux seems to be quite bad. It’s a bit hard to say exactly what speeds I’m getting, as all of the speedtests I’ve run across multiple sites seem (Speedtest by Ookla, Netflix’s speedtest, Cloudflare’s speedtest, LibreSpeed) to throw wildly different ranges. I can guess its about 150 Mbps based off what I get from Steam (and the same Steam CDN returns about 600 in Windows).

The chipset of my card is as follows (from lspci):

0a:00.0 Network controller [0280]: Intel Corporation Wi-Fi 6 AX210/AX211/AX411 160MHz [8086:2725] (rev 1a)
	Subsystem: Intel Corporation Wi-Fi 6 AX210 160MHz [8086:0020]
	Kernel driver in use: iwlwifi
	Kernel modules: iwlwifi

Now as far as I can tell, this chipset seems to be sadly problematic in Linux, based off of other forums, and even posts on Fedora’s forums (such as this one and this one). I’m honestly a bit surprised as I’d always been told that Intel’s hardware is one of the better picks for Linux, since they support Linux directly and upstream their drivers into the kernel.

So I’m just wondering if anyone has any recommendations for a WiFi 6 capable PCI-E card that I can look for that works decently in Linux. While it would be a bit unfortunate to have to purchase another one after I just picked this one up last month (and am slightly outside of the return window), most of these cards don’t really seem to be that expensive so I can just bite the bullet and grab a new one next month. My own research seems to reveal that a lot of the available cards just use the same chipset…

Alternatively, if things have by chance improved for this card’s support under Linux, I’d be happy to hear how I might be able to take advantage of that. I’ve tried numerous module options for the iwlwifi kernel module, and none seem to really make a difference.

It definitely has saddened me to see that this piece of hardware seems to share the same problem that my Nvidia card has - it works great under Windows, and terribly under Linux (especially for it being from Intel). It just so happens that a WiFi card is certainly a much cheaper thing to replace than a graphics card thankfully.

Welcome to :fedora:

I have almost the exact same wifi 6 AX210 and have had no issues with mine. Most of the problems I have seen have been with the wifi 6E AX211. Note that the first link you included was one I participated in.

05:00.0 Network controller [0280]: Intel Corporation Wi-Fi 6 AX210/AX211/AX411 160MHz [8086:2725] (rev 1a)
	Subsystem: Intel Corporation Wi-Fi 6 AX210 160MHz [8086:0024]
	Kernel driver in use: iwlwifi
	Kernel modules: iwlwifi

The only difference I see between yours and mine is the subsystem chipset numbers.
Mine is an M.2 card plugged into the motherboard and not into a PCIe slot, though it still is on the PCIe bus.

I consistently get 600+ Mbps on my 1G service link.

Do you have 2 different PCs on the LAN that you could test transfer speeds with and stay within your LAN? There are several points where speed may be limited. First, as you indicated is the wifi adapter itself. Next is the router, then the ISP service bandwidth, then the internet path between you and the server being accessed.

I would note that some routers and ISPs have problems with users that have IPv6 enabled and it can produce exactly the issue you describe. It seems mostly with routers that hand out IPv6 addresses but the ISP (or their upstream provider) does not support IPv6.

Just to find out if that is what causes your problem please go into the settings, wifi config and check if IPv6 is enabled. If it is then you might try disabling that and reboot to see if there is any difference in performance.

You also may try the command ip route and see if the routing shows only IPv4 routing or if it also includes IPv6 routing. If it does show IPv6 routing then disabling IPv6 is very likely to speed things up for you.

Thank you for the warm welcome and I’m happy to see a familiar face (so to speak)!

I do have another laptop (an old 2013 MacBook Pro) running Fedora and so that’s a good shout. Unfortunately, the MacBook Pro definitely doesn’t have a WiFi 6 card (and at the present moment I don’t have an ideal way of connecting it via Ethernet, but tomorrow I can re-run this while having it connected over the Ethernet USB Adapter my PC was previously using). I did go ahead and install iperf3 on both my desktop and the MacBook, here were the results (the MacBook acting as the server in both cases):

From Fedora:

Connecting to host 192.168.0.245, port 5201
[  5] local 192.168.0.205 port 49730 connected to 192.168.0.245 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  31.0 MBytes   260 Mbits/sec    0   1.45 MBytes       
[  5]   1.00-2.00   sec  40.0 MBytes   336 Mbits/sec    0   3.11 MBytes       
[  5]   2.00-3.00   sec  38.8 MBytes   325 Mbits/sec    0   3.11 MBytes       
[  5]   3.00-4.00   sec  36.2 MBytes   304 Mbits/sec    0   3.11 MBytes       
[  5]   4.00-5.00   sec  37.5 MBytes   315 Mbits/sec    0   3.11 MBytes       
[  5]   5.00-6.00   sec  37.5 MBytes   315 Mbits/sec    0   3.11 MBytes       
[  5]   6.00-7.00   sec  37.5 MBytes   315 Mbits/sec    0   3.11 MBytes       
[  5]   7.00-8.00   sec  36.2 MBytes   304 Mbits/sec    0   3.11 MBytes       
[  5]   8.00-9.00   sec  38.8 MBytes   325 Mbits/sec    0   3.11 MBytes       
[  5]   9.00-10.00  sec  37.5 MBytes   315 Mbits/sec    0   3.11 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   371 MBytes   311 Mbits/sec    0             sender
[  5]   0.00-10.05  sec   371 MBytes   309 Mbits/sec                  receiver

I went ahead and also tried it from WSL under Windows out of curiosity:

Connecting to host 192.168.0.245, port 5201
[  5] local 172.22.97.131 port 42186 connected to 192.168.0.245 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  26.2 MBytes   220 Mbits/sec    0   1.14 MBytes
[  5]   1.00-2.00   sec  33.8 MBytes   283 Mbits/sec    0   2.84 MBytes
[  5]   2.00-3.00   sec  35.0 MBytes   294 Mbits/sec    0   3.15 MBytes
[  5]   3.00-4.00   sec  35.0 MBytes   294 Mbits/sec    0   3.15 MBytes
[  5]   4.00-5.00   sec  33.8 MBytes   283 Mbits/sec    0   3.15 MBytes
[  5]   5.00-6.00   sec  35.0 MBytes   294 Mbits/sec    0   3.15 MBytes
[  5]   6.00-7.00   sec  37.5 MBytes   315 Mbits/sec    0   3.15 MBytes
[  5]   7.00-8.00   sec  35.0 MBytes   294 Mbits/sec    0   3.15 MBytes
[  5]   8.00-9.00   sec  35.0 MBytes   294 Mbits/sec    0   3.15 MBytes
[  5]   9.00-10.00  sec  37.5 MBytes   315 Mbits/sec    0   3.15 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   344 MBytes   288 Mbits/sec    0             sender
[  5]   0.00-10.07  sec   344 MBytes   286 Mbits/sec                  receiver

IPv6 was another good shout, since I moved to my new router it did start supporting IPv6 from my ISP (the old router ran DD-WRT and I could not get IPv6 to work with my ISP running under that firmware), so in between going from Fedora → Windows/WSL I disabled IPv6, when I rebooted to come back into Linux I re-ran the iperf test again, but the results were pretty much the exact same.

I also don’t currently have the card’s bluetooth functionality enabled as my motherboard only has one USB header that I use for the case’s front ports, the second header most motherboards would generally have is a “proprietary” ASUS header - I did unplug my external bluetooth dongle just to ensure there were no funky interference issues occurring there.

I do think the MacBook’s WiFi chipset was possibly the limiting factor in these tests, but I’m not 100% sure as similarly to when I tried various speedtest websites on my PC, I also got varying results on my MacBook (Cloudflare showed 385, Ookla showed 528). On my desktop in Linux right now, Cloudflare’s speedtest shows 229, whereas under Windows after doing the iperf test it was at 500.

I definitely get that speedtests, especially over WiFi, are not really the most accurate things in the world - I worked at a call center for four years doing internet technical support, and “Slow speeds over WiFi” calls were the bane of all of our existences, even more so since that was the age where most people were still on 2.4GHz WiFi and was running into massive interference due to channel overlapping from neighbors. So the best I can do is try to compare the speeds that I get from the same tests over Linux vs Windows to try to keep the same factors.

Part of me wants to believe that its just the various speedtests and their inaccuracies that I’m seeing, but at the same time its hard to argue with seeing such a massive difference in say Steam’s download speeds over Windows vs Linux where just about most of the possible factors would stay the same (same hardware, same target server, same software albeit different underlying libraries, etc).

I’ve also noticed strange cases where things really do feel slow, earlier today for example I noticed that emotes in Discord were loading incredibly slowly, and the page from my search engine (Kagi) loading quite slowly - which is all text of course. While I can’t rule out those target servers just potentially being under higher than normal load, it doesn’t seem like the most likely thing to occur either.

Hopefully tomorrow I’ll have a chance to try to replicate these iperf tests with my MacBook plugged in over Ethernet without being disruptive to everyone else who is currently home (I have the benefit of working from home thankfully, my two roommates sadly do not). My Raspberry Pi is connected over Ethernet currently, but its an older model where I believe the Ethernet port is actually just connected over USB, and so I only get about 100~125Mbits/sec on an iperf test to it.