[RESPONDED] Poor Wi-Fi performance with AMD RZ616

Since receiving my Framework 13 7640U, I’ve been experiencing consistently poor Wi-Fi performance when running Ubuntu 22.04 on all the networks I’ve tested.

On my home network (Wi-Fi 6E), all connected devices except for the Framework consistently achieve speeds of 600/600Mbps down/up. This includes several Macbooks, various phones, and a smart TV. All devices are saturating the link speed of the Wi-Fi network, because my WAN connection (router to outside world) achieves >2Gbit/s. My Framework, however, only achieves about 120/80Mbps up/down in the best case. This issue is consistent across all the other networks I’ve tried, both private (friend’s homes, etc.) and public. Perhaps a 5-6 networks in total, all with very different AP configurations.

I haven’t taken a deep dive into the reported signal strengths yet, but it seems that my Framework consistently reports lower Wi-Fi signal quality than all the other devices I’ve checked so far (i.e, qualitatively reporting “average” or “good” instead of “excellent”).

Is anyone else experiencing the same issue? I’m curious whether this is a potential Linux driver issue or perhaps a hardware deficiency in the antenna configuration of the RZ616.

3 Likes

Can you read [PATCH 1/2] wifi: mt76: mt7921: Disable powersaving by default - Mario Limonciello and try some of the suggestions linked by Kalle Vallo like iw set power_save so see if this improves things for you?

6 Likes

Looks like running iw wlp1s0 set power_save off did the trick. I’m consistently seeing speeds around 500/500Mbps now, which saturates the Wi-Fi link and matches what I’m seeing from other devices on the same network. I’m not that familiar with how patches are merged into the Linux kernel; is power_save going to default to off in an upcoming kernel release?

5 Likes

This patch is not going to be merged. But it does confirm there is some issue with power management and the APs you use.

Would you be able to share more details about them? Perhaps in joining that email thread discussion?

4 Likes

Will do, thanks for the help!

I just noticed as well that my laptop is not connecting using the 6GHz band on my home network, despite both the AP and the RZ616 supporting WiFi 6E. At least one of my other devices is connected to the 6GHz band (on a 160MHz channel), so I know that it works.

Ubuntu reports that only the 2.4GHz and 5GHz bands are available:

Screenshot from 2024-01-02 10-15-40

But running iw reg get shows that the 6GHz band should be supported by the Wi-Fi adapter:

global
country CA: DFS-FCC
	(2402 - 2472 @ 40), (N/A, 30), (N/A)
	(5150 - 5250 @ 80), (N/A, 23), (N/A), NO-OUTDOOR, AUTO-BW
	(5250 - 5350 @ 80), (N/A, 24), (0 ms), DFS, AUTO-BW
	(5470 - 5600 @ 80), (N/A, 24), (0 ms), DFS
	(5650 - 5730 @ 80), (N/A, 24), (0 ms), DFS
	(5735 - 5835 @ 80), (N/A, 30), (N/A)
	(5925 - 7125 @ 320), (N/A, 12), (N/A), NO-OUTDOOR

Any idea what could be going on?

I don’t know off hand. But a guess is that the userspace stack is missing 6Ghz support.

Can you try a live key with Ubuntu 24.04 daily or Fedora rawhide daily and see if it’s the same situation?

1 Like

That could just be a GUI issue. Do you see the mac for the 6GHz band on your router in the output of nmcli dev wifi list?

1 Like

No, I only see the MAC for the 2.4GHz and 5GHz bands in the list.

What do you see in the output of sudo iw list for those bands - this is the output of mine on an 11th gen machine in which I replaced the AX210 with a RZ616:

...
		Frequencies:
			* 5955.0 MHz [1] (12.0 dBm) (no IR)
			* 5975.0 MHz [5] (12.0 dBm) (no IR)
			* 5995.0 MHz [9] (12.0 dBm) (no IR)
			* 6015.0 MHz [13] (12.0 dBm) (no IR)
			* 6035.0 MHz [17] (12.0 dBm) (no IR)
			* 6055.0 MHz [21] (12.0 dBm) (no IR)
			* 6075.0 MHz [25] (12.0 dBm) (no IR)
			* 6095.0 MHz [29] (12.0 dBm) (no IR)
			* 6115.0 MHz [33] (12.0 dBm) (no IR)
			* 6135.0 MHz [37] (12.0 dBm) (no IR)
			* 6155.0 MHz [41] (12.0 dBm) (no IR)
			* 6175.0 MHz [45] (12.0 dBm) (no IR)
			* 6195.0 MHz [49] (12.0 dBm) (no IR)
			* 6215.0 MHz [53] (12.0 dBm) (no IR)
			* 6235.0 MHz [57] (12.0 dBm) (no IR)
			* 6255.0 MHz [61] (12.0 dBm) (no IR)
			* 6275.0 MHz [65] (12.0 dBm) (no IR)
			* 6295.0 MHz [69] (12.0 dBm) (no IR)
			* 6315.0 MHz [73] (12.0 dBm) (no IR)
			* 6335.0 MHz [77] (12.0 dBm) (no IR)
			* 6355.0 MHz [81] (12.0 dBm) (no IR)
			* 6375.0 MHz [85] (12.0 dBm) (no IR)
			* 6395.0 MHz [89] (12.0 dBm) (no IR)
			* 6415.0 MHz [93] (12.0 dBm) (no IR)
			* 6435.0 MHz [97] (12.0 dBm) (no IR)
			* 6455.0 MHz [101] (12.0 dBm) (no IR)
			* 6475.0 MHz [105] (12.0 dBm) (no IR)
			* 6495.0 MHz [109] (12.0 dBm) (no IR)
			* 6515.0 MHz [113] (12.0 dBm) (no IR)
			* 6535.0 MHz [117] (12.0 dBm) (no IR)
			* 6555.0 MHz [121] (12.0 dBm) (no IR)
			* 6575.0 MHz [125] (12.0 dBm) (no IR)
			* 6595.0 MHz [129] (12.0 dBm) (no IR)
			* 6615.0 MHz [133] (12.0 dBm) (no IR)
			* 6635.0 MHz [137] (12.0 dBm) (no IR)
			* 6655.0 MHz [141] (12.0 dBm) (no IR)
			* 6675.0 MHz [145] (12.0 dBm) (no IR)
			* 6695.0 MHz [149] (12.0 dBm) (no IR)
			* 6715.0 MHz [153] (12.0 dBm) (no IR)
			* 6735.0 MHz [157] (12.0 dBm) (no IR)
			* 6755.0 MHz [161] (12.0 dBm) (no IR)
			* 6775.0 MHz [165] (12.0 dBm) (no IR)
			* 6795.0 MHz [169] (12.0 dBm) (no IR)
			* 6815.0 MHz [173] (12.0 dBm) (no IR)
			* 6835.0 MHz [177] (12.0 dBm) (no IR)
			* 6855.0 MHz [181] (12.0 dBm) (no IR)
			* 6875.0 MHz [185] (12.0 dBm) (no IR)
			* 6895.0 MHz [189] (12.0 dBm) (no IR)
			* 6915.0 MHz [193] (12.0 dBm) (no IR)
			* 6935.0 MHz [197] (12.0 dBm) (no IR)
			* 6955.0 MHz [201] (12.0 dBm) (no IR)
			* 6975.0 MHz [205] (12.0 dBm) (no IR)
			* 6995.0 MHz [209] (12.0 dBm) (no IR)
			* 7015.0 MHz [213] (12.0 dBm) (no IR)
			* 7035.0 MHz [217] (12.0 dBm) (no IR)
			* 7055.0 MHz [221] (12.0 dBm) (no IR)
			* 7075.0 MHz [225] (12.0 dBm) (no IR)
			* 7095.0 MHz [229] (12.0 dBm) (no IR)
			* 7115.0 MHz [233] (12.0 dBm) (no IR)
...

I see the same list of channels but without the (no IR) string:

Frequencies:
			* 5955 MHz [1] (12.0 dBm)
			* 5975 MHz [5] (12.0 dBm)
			* 5995 MHz [9] (12.0 dBm)
			* 6015 MHz [13] (12.0 dBm)
			* 6035 MHz [17] (12.0 dBm)
			* 6055 MHz [21] (12.0 dBm)
			* 6075 MHz [25] (12.0 dBm)
			* 6095 MHz [29] (12.0 dBm)
			* 6115 MHz [33] (12.0 dBm)
			* 6135 MHz [37] (12.0 dBm)
			* 6155 MHz [41] (12.0 dBm)
			* 6175 MHz [45] (12.0 dBm)
			* 6195 MHz [49] (12.0 dBm)
			* 6215 MHz [53] (12.0 dBm)
			* 6235 MHz [57] (12.0 dBm)
			* 6255 MHz [61] (12.0 dBm)
			* 6275 MHz [65] (12.0 dBm)
			* 6295 MHz [69] (12.0 dBm)
			* 6315 MHz [73] (12.0 dBm)
			* 6335 MHz [77] (12.0 dBm)
			* 6355 MHz [81] (12.0 dBm)
			* 6375 MHz [85] (12.0 dBm)
			* 6395 MHz [89] (12.0 dBm)
			* 6415 MHz [93] (12.0 dBm)
			* 6435 MHz [97] (12.0 dBm)
			* 6455 MHz [101] (12.0 dBm)
			* 6475 MHz [105] (12.0 dBm)
			* 6495 MHz [109] (12.0 dBm)
			* 6515 MHz [113] (12.0 dBm)
			* 6535 MHz [117] (12.0 dBm)
			* 6555 MHz [121] (12.0 dBm)
			* 6575 MHz [125] (12.0 dBm)
			* 6595 MHz [129] (12.0 dBm)
			* 6615 MHz [133] (12.0 dBm)
			* 6635 MHz [137] (12.0 dBm)
			* 6655 MHz [141] (12.0 dBm)
			* 6675 MHz [145] (12.0 dBm)
			* 6695 MHz [149] (12.0 dBm)
			* 6715 MHz [153] (12.0 dBm)
			* 6735 MHz [157] (12.0 dBm)
			* 6755 MHz [161] (12.0 dBm)
			* 6775 MHz [165] (12.0 dBm)
			* 6795 MHz [169] (12.0 dBm)
			* 6815 MHz [173] (12.0 dBm)
			* 6835 MHz [177] (12.0 dBm)
			* 6855 MHz [181] (12.0 dBm)
			* 6875 MHz [185] (12.0 dBm)
			* 6895 MHz [189] (12.0 dBm)
			* 6915 MHz [193] (12.0 dBm)
			* 6935 MHz [197] (12.0 dBm)
			* 6955 MHz [201] (12.0 dBm)
			* 6975 MHz [205] (12.0 dBm)
			* 6995 MHz [209] (12.0 dBm)
			* 7015 MHz [213] (12.0 dBm)
			* 7035 MHz [217] (12.0 dBm)
			* 7055 MHz [221] (12.0 dBm)
			* 7075 MHz [225] (12.0 dBm)
			* 7095 MHz [229] (12.0 dBm)
			* 7115 MHz [233] (12.0 dBm)

I am no expert, but I believe that that indicates that the 6GHz bands are working on your laptop. You can test it by temporarily creating a 6GHz only network on your router and trying to connect to it. Best of luck.

After looking into this further, I’m left with more questions than answers. The 6GHz networks appear and disappear randomly in the list of networks (nmcli dev wifi list) and are displayed with the incorrect channel number (always 0) and bandwidth. Here’s what I see when it does find the 6GHz network:

IN-USE  BSSID              SSID        MODE   CHAN  RATE        SIGNAL  BARS  SECURITY    
        XX:XX:XX:XX:XX:07  <NAME>      Infra  44    540 Mbit/s  100     ▂▄▆█  WPA2 WPA3       
*       XX:XX:XX:XX:XX:05  <NAME>      Infra  1     540 Mbit/s  99      ▂▄▆█  WPA2 WPA3   
        XX:XX:XX:XX:XX:02  <NAME>      Infra  0     0 Mbit/s    82      ▂▄▆█  WPA3   

The network with the BSSID ending in :02 is the 6GHz band, and I know it’s not dropping out because my desktop - which incidentally also uses an AMD RZ616 - remains connected. The actual broadcast channel is 165 (not 0), and the bandwidth is wrong as well (it sometimes shows 0 Mbit/s). If I try connecting to the 6GHz network using nmcli d wifi connect, I get the following error after around 10-15 seconds:

Error: Connection activation failed: The Wi-Fi network could not be found.

The connection also times out when I try connecting via the GNOME GUI. The results are consistent regardless of whether I have band steering enabled or disabled on the AP.

I’m inclined to think there’s something going on in the Linux driver for the RZ616, given that the same chipset works brilliantly on my desktop running Windows 11.

Running Gentoo and using iwd directly to manage my wireless connection.

Had bad wifi speeds, on average 10x lower than what I was able to get on my Macbook or iPhone.

Turning the card’s power save mode to off didn’t seem to change anything.

The problem was about my regulatory domain not being set correctly. For some reason it defaults to “world” at boot which is basically the most generic value, and therefore the less permissive.

With the value set to “world” iwd never considered connecting to the 6GHz access point my router exposes, as opposed to my other two devices that do. Hence the tremendous difference in speeds.

Changing it to my country’s value or any other value really fixed it and allowed iwd to connect to the 6GHz AP.

I’m still unable to make this setting persist across reboots though, if anyone has a clue about that.

To get your regulatory domain config:

iw reg get

To set it (root access needed):

sudo iw reg set US # or your country's code
4 Likes

I think if you install the wireless-regdb, you should be able to uncomment your country code in /etc/conf.d/wireless-regdom (location maybe different in Gentoo?) and it should persist on reboot.

I’ve this package installed already but no such configuration file available.
I ran a few find commands on the system but no luck, I really can’t find anything like it.
From what I’ve been reading it seems that the cfg80211 kernel module can be passed the regulatory domain as an option so I might as well try this.

Assuming OP is in the US, testing against iw reg set US is one thing to try.

Another is to disable power save, see if there is any change.

And likely the best long term item to test:

This is good to know. In my case the regulatory domain is already correctly set to Canada (I pasted the terminal output in my initial post), so this doesn’t appear to be the source of my issue. The 6GHz bands show up in the list.

I was actually able to connect manually to the 6GHz network last night using nmcli with speeds >1Gb/s in both directions. This worked until my laptop went to sleep, and now the 6GHz bands don’t show up in nmcli dev wifi list again.

@Matt_Hartley Disabling power save did improve the Wi-Fi link speed significantly, but it didn’t affect the weird behaviour I’m setting with disappearing 6GHz bands.

2 Likes

I seem to recall this being addressed in some upcoming kernels, but at this time I lack an environment with 6GHz network atm.