WIFI: Not Getting Full Speeds on Laptop

Hi Community,

I decided to test Manjaro KDE as my daily driver on my Acer Laptop and so far it has been a great experience. However, the biggest issue I have been facing is that I am not getting full WIFI speeds on my laptop/browser experience. How I can compare is that:

  • Windows 10 at Home network: Able to test by using fast.com/speedtest.com to see that I am getting 200-250Mbps with no issues.
  • Manjaro KDE at Home network: On fast.com/speedtest shows me that I am getting at MOST 40Mbps.

I assumed that it might be a Manjaro issue, but when I use Manjaro outside of my home network, i.e. coffee shop, someones house, etc. I am able to get full speeds. I know that these places have full network speeds, since I have used it with my Windows 10 before.

I tried looking at other forums, on Manjaro and Reddit, and its not very clear on what I need to do in order to troubleshoot and find. If the community/someone here can guide me on how to troubleshoot why I am getting very slow speeds when using Manjaro KDE at home, I would love the help and guidance.

Regarding the information of my device:

  • Acer Aspire E15 laptop
  • Router: Asus RT-AX3000

Info given when I run the following commands:

inxi -Fazy

  Device-1: Qualcomm Atheros QCA9377 802.11ac Wireless Network Adapter
  vendor: Lite-On driver: ath10k_pci v: kernel bus-ID: 03:00.0
  chip-ID: 168c:0042 class-ID: 0280
  IF: wlp3s0 state: up mac: <filter>
  Device-2: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet
  vendor: Acer Incorporated ALI Acer Aspire E5-575G driver: r8168
  v: 8.049.02-NAPI modules: r8169 port: 3000 bus-ID: 04:00.1
  chip-ID: 10ec:8168 class-ID: 0200
  IF: enp4s0f1 state: down mac: <filter>

 ethtool wlp3s0
netlink error: Operation not permitted
Settings for wlp3s0:
        Link detected: yes

uname -r         

rfkill list all                                                                                                                                                                                                              ✔ 
0: acer-wireless: Wireless LAN
        Soft blocked: no
        Hard blocked: no
1: acer-bluetooth: Bluetooth
        Soft blocked: yes
        Hard blocked: no
2: phy0: Wireless LAN
        Soft blocked: no
        Hard blocked: no
3: hci0: Bluetooth
        Soft blocked: yes
        Hard blocked: no

Sorry for all the information, this is what I researched on forums to gather information and try to see how to troubleshoot this WIFI issue.

Apparently built-in kernel support.

It’s difficult to say as it might be anything.

Even though you get different connection with Windows - the driver implementation on Windows is much more specific and probably fine-tuned as well.

Linux kernel module is more generic and may require some experimenting - depending on the your system - to get it right.

You can find info on the kernel module by following this link en:users:drivers:ath10k [Linux Wireless]

Hey there thanks for the suggestions/advice. I’ll take a look into those links and try to troubleshoot more, but what boggles my mind is that Wifi is only affected at home, but other when using manjaro at other places with wifi it works fine, as I have seen it with my Windows 10.

Is it possible that my router is causing the drop in wifi speeds on my laptop when using Manjaro? Or this is definitely a kernel issue? For note, I am using 5GHz Wifi, where I have my router choose from 20/40/80mhz and I have enabled 160mhz on it also.

Maybe try what was here, just replace ath9k with ath10k_pci
(check ipv6, nohwcrypt…)

And sure, why not generic power_save check:

iw dev wlp3s0 get power_save

And maybe all the module options:

modinfo ath10k_pci | sed -n '/depends/,$p'

(edited to fix iw command)

I have the same problem but noticed that just restarting the ath10k_pci module with commands

sudo modprobe -r ath10k_pci && sudo modprobe ath10k_pci

fixes it, but no idea why and how to make it permanent

I guess the previous poster has taken their leave so we wont get the reports I asked for.

As to your restart … you could do it a couple ways.

For example, with a service;

# /etc/systemd/system/restart-wifi.service
# sudo systemctl enable restart-wifi.service
Description=Disable and reenable wifi
Before=basic.target suspend.target hibernate.target

ExecStart=/usr/bin/rmmod ath10k_pci
ExecStart=/usr/bin/sleep 1
ExecStop=/usr/bin/sleep 1
ExecStop=/usr/bin/modprobe ath10k_pci

WantedBy=basic.target suspend.target hibernate.target

Hey Everyone,

I apologize in not getting back to you guys sooner about what to do, I have been busy with work.

@cscs , in response to your request, I typed the following commands below:

iw dev get power_save wlp3s0                                                                                                                                                                                                
command failed: No such device (-19)
modinfo ath10k_pci | sed -n '/depends/,$p'                                                                                                                                                                               237 ✘ 
depends:        ath10k_core
retpoline:      Y
intree:         Y
name:           ath10k_pci
vermagic:       5.14.10-1-MANJARO SMP preempt mod_unload 
sig_id:         PKCS#7
signer:         Build time autogenerated kernel key
sig_key:        21:F6:07:7B:1E:06:9B:F2:FE:2D:78:5E:E1:38:B5:72:C0:A0:EA:AA
sig_hashalgo:   sha512
signature:      5C:A3:E5:7B:67:F4:0C:1F:43:E9:1B:3D:31:9C:0C:48:FE:09:43:AF:
parm:           irq_mode:0: auto, 1: legacy, 2: msi (default: 0) (uint)
parm:           reset_mode:0: auto, 1: warm only (default: 0) (uint)

@diego1 sudo modprobe -r ath10k_pci && sudo modprobe ath10k_pci , this command resolved your issue by resetting the WIFI driver? Did you have to do this every time after you power up/log in to your laptop/PC?

oops. I typed that in wrong :face_with_hand_over_mouth:

iw dev wlp3s0 get power_save                                                                                                                                                                                       
iw dev wlp3s0 get power_save                                                                                                                                                                                                
Power save: on

To give you a headsup, I am currently typing this right now with the laptop running on battery, I do not have an external power brick powering/charging my laptop. Would you want me to plug my laptop to see if that Power Save: On changes state?

Its worth trying just in case it does indeed return a different value, though I think its a general device setting.

So I plugged in my laptop to charge, and typed in the command again:

iw dev wlp3s0 get power_save                                                                                                                                                                                       
Power save: on

That seems…weird.

Now try after

iw dev wlp3s0 set power_save off

With that command, I had to add the “sudo” before iw.
Then I retrieved the previous command to confirm it was was off. However, when I ran fast.com or speedtest-cli, it showed me the same issue of being capped at 40Mbps.

Using @diego1 method with the following command below:

sudo modprobe -r ath10k_pci && sudo modprobe ath10k_pci  

I retested this and immediately see my current speed of more than 200Mbps. So that actually solves the issue. How would I implement diego1’s method into a config? Or is that a temporary solution that requires a permanent fix?

Thank you for taking the time to help me with this issue, really appreciate the help and your patience.

See my post above about the service … it would automate that action at login and wake-up.
(the file location and command to enable it are commented at the top)

Or at least it is an example, untested. Theres multiple ways to do it, but that service might work without having to create separate scripts or services.

From the post above, do I do the following steps:

  1. Make a file/config calling it restart-wifi.service
  2. Copy and paste the entire section into that file and save it
  3. then run the following command below:
sudo systemctl enable restart-wifi.service

This will essentially have this enable every time at boot up?

Sorry for the hassle, this is my first time creating a service so I am not sure how to do it properly.

Yes. Specifically /etc/systemd/system/restart-wifi.service

And yes to the rest.

No worries. We used to have a whole ‘intro to systemd services and timers’ tutorial section … but it was on the old forum. In any case we all start somewhere, and there are still tons of long-time users who dont fully understand how to work with systemd. But this kind of thing is a great example of it being useful.

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.