[RESPONDED] Slow 2.4GHz wifi on Ubuntu 22.04 and AMD

I’ve tried Ubuntu 22.04 and Debian 12 on this laptop. Connecting to 5GHz works perfectly, but 2.4GHz is barely usable.

    Interface: wlp1s0
    Signal strength: -59
    Signal quality: 59
    Signal bars: ▂▄▆_
    Wi-Fi Speed: 270 Mbit/s

It’s not really a huge deal since 5GHz works well. The router is a TP-Link Archer AX50.

Welcome to the community!

We don’t test against Debian, however, we do have a pretty decent community resource available.

Since you’re experiencing issues on Ubuntu as well with 2.4GHz, I would be interested to see what kind of saturation is happening on 2.4GHz.

That said, if you’re getting decent results with 5GHz, then there may be wifi network considerations happening.

If you’re able test 2.4GHz at another location, this would give us a better comparable especially if the performance differs.

I gave up on Debian for unrelated reasons, I was just mentioning it to say that it’s not a Ubuntu-specific issue.

I went to my neighbor and tested 2.4GHz there. Works perfectly on a Netgear AC1200. I guess it’s something with my router specifically.

Kind of tangential: 270Mbps “radio speed” and -59 dBm should be far from “unusable”. How congested is the 2.4GHz band (and specifically the channel(s) your AP uses) at your house? Something like this (android) might shed light.

Definitely tangential: That output looks nifty, what (CLI?) tool is it from?

The 2.4GHz band shouldn’t be congested at all. I’m out of town for a while, so I can’t check now. As I stated, it works fine on a different router and I don’t have issues with any other devices on the problematic router.

The command to get that output is:

interface=$(nmcli -t -f active,device d wifi list | grep '^yes' | cut -d':' -f2)
echo -e "\n        \033[1;33mInterface: $interface\033[0m"
signal_strength=$(iw dev $interface link | awk '/signal/ {print $2}')
echo -e "        \033[1;33mSignal strength: $signal_strength\033[0m"
signal_quality=$(nmcli d wifi list ifname $interface | grep '*' | awk '{print $8}')
echo -e "        \033[1;33mSignal quality: $signal_quality\033[0m"
signal_bars=$(nmcli -t -f active,bars d wifi list | grep '^yes' | awk -F: '{print $2}')
echo -e "        \033[1;33mSignal bars: $signal_bars\033[0m"
speed=$(nmcli -t -f IN-USE,RATE dev wifi list | grep '*' | awk -F: '{print $2}')
echo -e "        \033[1;33mWi-Fi Speed: $speed\033[0m"

You haven’t seen the list of APs around my place.

After some other reports that we have seen. we think this may be with access points that support packet store and forward. This explains why we’ve had trouble duplicating this.

Some APs present the issue, where as others do not.

One method to disable wifi power savings that survives rebooting is to create a little systemd service. There are other methods, but this works reliably.

iw dev

To get your interface:

iw [your interface] get power_save

It should show power saving is on, we’ll test it off.

sudo nano /etc/systemd/system/wifi-powersave-off.service

(Use whichever editor you prefer, I recommend nano as it’s easy)

[Unit]
Description=Disable WiFi Power Saving Mode
Wants=network-online.target
After=network-online.target

[Service]
Type=oneshot
ExecStartPre=/bin/sleep 30
ExecStart=/sbin/iw dev [interface] set power_save off
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Then:

sudo systemctl daemon-reload

then:

sudo systemctl enable wifi-powersave-off.service

Reboot

Upon reboot, wait 30 full seconds, then run:

iw [your interface] get power_save

It will now show as off. I tested this process on my own system, RZ616 card.

For 2.4 Ghz, give this a try. If it’s not helpful, simply stop/disable the systemd service.

1 Like