Wi-Fi download speeds slower than upload speeds

I’ve seen quite a few of these threads across both the Manjaro forums and the Arch forums, and followed many of the suggested tweaks, but I’m still having problems in my own system.

New Manjaro user. Started out on Linux Mint and had this same problem, but was more severe on Mint. I switched to Manjaro because I was not really liking Mint all that much anyway. Manjaro seemed to improve the situation marginally but I’m still having problems where my wi-fi is behaving kind of like it’s bottlenecked?

On ookla, I’ve been able to peak about 110 Mbps Down and 100-200 Mbps Up out of the box. When I had Windows installed on this same system, it was able to reach much higher speeds (around 200-250 Mbps Down.). My husband’s computer is right next to mine and still gets those speeds, peaking at 250 Mbps down. Same network, but he’s using Windows 10. All programs that I use including Steam and package manager seem to follow this speed, so it’s either slower or equal, but never faster.

If it weren’t so significantly slower than expected, I wouldn’t even worry about it, because an average of 60-100 Mbps down is still fine, but I’m frustrated about not getting the full speeds that I should be.

What I’ve done so far:

  • Disabled IPv6 in NetworkManager. I should note that I’m using the 5g band for my particular network, but there is a 2.4g band available that seemed consistently slower in the past when I used it even on Windows.
  • Updated lwlwifi.conf with some new configurations (I’ve included this below) and tweaked these back and forth to understand somewhat how it behaves. I’ve gotten it to the best spot I could.
  • Attempted to update firmware through the Intel website, but it doesn’t seem to have taken, or if it did, it doesn’t show. I did that from Intel’s /support/articles/000005511/wireless.html.

Let’s see if I can do this right. Here’s my diags.

inxi --full --admin --filter --width

System:
  Kernel: 6.6.16-2-MANJARO arch: x86_64 bits: 64 compiler: gcc v: 13.2.1
    clocksource: tsc avail: acpi_pm
    parameters: BOOT_IMAGE=/boot/vmlinuz-6.6-x86_64
    root=UUID=f568e386-a299-4e61-b9f0-15eb0109638a rw quiet splash
    resume=UUID=94cd970e-a7eb-49a3-8025-36261525b459 udev.log_priority=3
  Desktop: KDE Plasma v: 5.27.10 tk: Qt v: 5.15.12 info: frameworks
    v: 5.115.0 wm: kwin_x11 vt: 2 dm: SDDM Distro: Manjaro base: Arch Linux
Machine:
  Type: Laptop System: ASUSTeK product: ASUS TUF Dash F15 FX516PE_FX516PE
    v: 1.0 serial: <superuser required>
  Mobo: ASUSTeK model: FX516PE v: 1.0 serial: <superuser required>
    uuid: <superuser required> UEFI: American Megatrends LLC. v: FX516PE.330
    date: 05/15/2023
Battery:
  ID-1: BAT0 charge: 67.0 Wh (99.3%) condition: 67.5/76.0 Wh (88.9%)
    volts: 15.8 min: 15.8 model: ASUSTeK ASUS Battery type: Li-ion serial: N/A
    status: not charging cycles: 20
CPU:
  Info: model: 11th Gen Intel Core i7-11370H bits: 64 type: MT MCP
    arch: Tiger Lake gen: core 11 level: v4 note: check built: 2020
    process: Intel 10nm family: 6 model-id: 0x8C (140) stepping: 1
    microcode: 0xB4
  Topology: cpus: 1x cores: 4 tpc: 2 threads: 8 smt: enabled cache:
    L1: 320 KiB desc: d-4x48 KiB; i-4x32 KiB L2: 5 MiB desc: 4x1.2 MiB L3: 12 MiB
    desc: 1x12 MiB
  Speed (MHz): avg: 2621 high: 3733 min/max: 400/4800 scaling:
    driver: intel_pstate governor: powersave cores: 1: 1968 2: 1956 3: 3203
    4: 3235 5: 3082 6: 586 7: 3733 8: 3205 bogomips: 52856
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
  Vulnerabilities:
  Type: gather_data_sampling mitigation: Microcode
  Type: itlb_multihit status: Not affected
  Type: l1tf status: Not affected
  Type: mds status: Not affected
  Type: meltdown status: Not affected
  Type: mmio_stale_data status: Not affected
  Type: retbleed status: Not affected
  Type: spec_rstack_overflow status: Not affected
  Type: spec_store_bypass mitigation: Speculative Store Bypass disabled via
    prctl
  Type: spectre_v1 mitigation: usercopy/swapgs barriers and __user pointer
    sanitization
  Type: spectre_v2 mitigation: Enhanced / Automatic IBRS, IBPB: conditional,
    RSB filling, PBRSB-eIBRS: SW sequence
  Type: srbds status: Not affected
  Type: tsx_async_abort status: Not affected
Graphics:
  Device-1: Intel TigerLake-LP GT2 [Iris Xe Graphics] vendor: ASUSTeK
    driver: i915 v: kernel arch: Gen-12.1 process: Intel 10nm built: 2020-21
    ports: active: eDP-1 empty: DP-1,DP-2,HDMI-A-1 bus-ID: 0000:00:02.0
    chip-ID: 8086:9a49 class-ID: 0300
  Device-2: NVIDIA GA107M [GeForce RTX 3050 Ti Mobile] vendor: ASUSTeK
    driver: nvidia v: 545.29.06 alternate: nouveau,nvidia_drm non-free: 545.xx+
    status: current (as of 2024-02; EOL~2026-12-xx) arch: Ampere code: GAxxx
    process: TSMC n7 (7nm) built: 2020-2023 bus-ID: 0000:01:00.0
    chip-ID: 10de:25a0 class-ID: 0300
  Display: x11 server: X.Org v: 21.1.11 with: Xwayland v: 23.2.4
    compositor: kwin_x11 driver: X: loaded: modesetting,nvidia unloaded: nouveau
    alternate: fbdev,nv,vesa dri: iris gpu: i915 display-ID: :0 screens: 1
  Screen-1: 0 s-res: 1920x1080 s-dpi: 96 s-size: 506x285mm (19.92x11.22")
    s-diag: 581mm (22.86")
  Monitor-1: HDMI-1-0 size-res: N/A modes: N/A
  Monitor-2: eDP-1 pos: primary res: 1920x1080 hz: 144 dpi: 142
    size: 344x193mm (13.54x7.6") diag: 394mm (15.53") modes: N/A
  API: EGL v: 1.5 hw: drv: intel iris drv: nvidia platforms: device: 0
    drv: nvidia device: 1 drv: iris device: 3 drv: swrast gbm: drv: kms_swrast
    surfaceless: drv: nvidia x11: drv: iris inactive: wayland,device-2
  API: OpenGL v: 4.6.0 compat-v: 4.5 vendor: intel mesa v: 23.3.5-manjaro1.1
    glx-v: 1.4 direct-render: yes renderer: Mesa Intel Xe Graphics (TGL GT2)
    device-ID: 8086:9a49 memory: 14.96 GiB unified: yes
  API: Vulkan v: 1.3.276 layers: 10 device: 0 type: discrete-gpu name: NVIDIA
    GeForce RTX 3050 Ti Laptop GPU driver: nvidia v: 545.29.06
    device-ID: 10de:25a0 surfaces: xcb,xlib device: 1 type: integrated-gpu
    name: Intel Xe Graphics (TGL GT2) driver: mesa intel v: 23.3.5-manjaro1.1
    device-ID: 8086:9a49 surfaces: xcb,xlib
Audio:
  Device-1: Intel Tiger Lake-LP Smart Sound Audio vendor: ASUSTeK
    driver: snd_hda_intel v: kernel alternate: snd_sof_pci_intel_tgl
    bus-ID: 0000:00:1f.3 chip-ID: 8086:a0c8 class-ID: 0403
  Device-2: NVIDIA vendor: ASUSTeK driver: snd_hda_intel v: kernel
    bus-ID: 0000:01:00.1 chip-ID: 10de:2291 class-ID: 0403
  API: ALSA v: k6.6.16-2-MANJARO status: kernel-api with: aoss
    type: oss-emulator tools: alsactl,alsamixer,amixer
  Server-1: JACK v: 1.9.22 status: off tools: N/A
  Server-2: PipeWire v: 1.0.3 status: active with: 1: pipewire-pulse
    status: active 2: wireplumber status: active 3: pipewire-alsa type: plugin
    tools: pactl,pw-cat,pw-cli,wpctl
Network:
  Device-1: Intel Wi-Fi 6 AX201 driver: iwlwifi v: kernel bus-ID: 0000:00:14.3
    chip-ID: 8086:a0f0 class-ID: 0280
  IF: wlo1 state: up mac: <filter>
  Device-2: Realtek RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet
    vendor: ASUSTeK RTL8111/8168/8411 driver: r8169 v: kernel port: 3000
    bus-ID: 0000:2e:00.0 chip-ID: 10ec:8168 class-ID: 0200
  IF: eno2 state: down mac: <filter>
  IF-ID-1: docker0 state: down mac: <filter>
  Info: services: NetworkManager, systemd-timesyncd, wpa_supplicant
Bluetooth:
  Device-1: Intel AX201 Bluetooth driver: btusb v: 0.8 type: USB rev: 2.0
    speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 3-10:3 chip-ID: 8087:0026
    class-ID: e001
  Report: rfkill ID: hci0 rfk-id: 0 state: up address: see --recommends
RAID:
  Hardware-1: Intel Volume Management Device NVMe RAID Controller driver: vmd
    v: 0.6 port: N/A bus-ID: 0000:00:0e.0 chip-ID: 8086:9a0b rev: class-ID: 0104
Drives:
  Local Storage: total: 1.38 TiB used: 280.66 GiB (19.9%)
  SMART Message: Unable to run smartctl. Root privileges required.
  ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Crucial model: CT1000T500SSD8
    size: 931.51 GiB block-size: physical: 512 B logical: 512 B speed: 63.2 Gb/s
    lanes: 4 tech: SSD serial: <filter> fw-rev: P8CR002 temp: 25.9 C
    scheme: MBR
  ID-2: /dev/nvme1n1 maj-min: 259:2 vendor: Samsung model: MZVLQ512HBLU-00B00
    size: 476.94 GiB block-size: physical: 512 B logical: 512 B speed: 31.6 Gb/s
    lanes: 4 tech: SSD serial: <filter> fw-rev: FXM7201Q temp: 28.9 C
    scheme: GPT
Partition:
  ID-1: / raw-size: 459.79 GiB size: 451.5 GiB (98.20%) used: 43.81 GiB (9.7%)
    fs: ext4 dev: /dev/nvme1n1p2 maj-min: 259:4
  ID-2: /boot/efi raw-size: 300 MiB size: 299.4 MiB (99.80%)
    used: 296 KiB (0.1%) fs: vfat dev: /dev/nvme1n1p1 maj-min: 259:3
Swap:
  Kernel: swappiness: 25 (default 60) cache-pressure: 100 (default) zswap: yes
    compressor: zstd max-pool: 20%
  ID-1: swap-1 type: partition size: 16.85 GiB used: 0 KiB (0.0%)
    priority: -2 dev: /dev/nvme1n1p3 maj-min: 259:5
Sensors:
  System Temperatures: cpu: 37.0 C mobo: N/A
  Fan Speeds (rpm): cpu: 0
Info:
  Memory: total: 16 GiB note: est. available: 15.32 GiB used: 3.68 GiB (24.0%)
  Processes: 261 Power: uptime: 40m states: freeze,mem,disk suspend: s2idle
    avail: deep wakeups: 1 hibernate: platform avail: shutdown, reboot, suspend,
    test_resume image: 6.11 GiB services: org_kde_powerdevil,
    power-profiles-daemon, upowerd Init: systemd v: 255 default: graphical
    tool: systemctl
  Packages: 1332 pm: pacman pkgs: 1324 libs: 397 tools: pamac,yay pm: flatpak
    pkgs: 8 Compilers: clang: 16.0.6 gcc: 13.2.1 Shell: Zsh v: 5.9 default: Bash
    v: 5.2.26 running-in: konsole inxi: 3.3.33

Here’s how I’ve configured the file. I did a lot of tweaking to try and improve the connection. Some configuration lines had a visible effect but in the opposite direction. This is the best I can get with the Ookla results I posted before:

iwlwifi.conf

options iwlwifi power_save=0
options iwlwifi power_level=5

options iwlwifi 11n_disable=8
options iwlwifi swcrypto=0
options iwlwifi bt_coex_active=0
options iwlwifi uapsd_disable=0

options iwlmvm power_scheme=1
systool -vm iwlwifi

Module = "iwlwifi"

  Attributes:
    coresize            = "569344"
    initsize            = "0"
    initstate           = "live"
    refcnt              = "1"
    srcversion          = "CBA99B6995DCE3FD42D4D42"
    taint               = ""
    uevent              = <store method only>

  Parameters:
    11n_disable         = "8"
    amsdu_size          = "0"
    bt_coex_active      = "N"
    debug               = "0"
    disable_11ac        = "N"
    disable_11ax        = "N"
    disable_11be        = "N"
    enable_ini          = "16"
    fw_restart          = "Y"
    led_mode            = "0"
    nvm_file            = "(null)"
    power_level         = "5"
    power_save          = "N"
    remove_when_gone    = "N"
    swcrypto            = "0"
    uapsd_disable       = "0"

Hopefully someone has some new ideas? Otherwise I’m stumped. Thanks in advance.

The firmware downloads there are ancient (the AX201 download is from 2019). As it says;

The Intel wireless firmware is a part of Linux kernel. To obtain the latest Intel wireless firmware, install the latest (and stable) version of Linux kernel.

The following table contains only the first official firmware version released, which is only guaranteed to work with the kernel version specified in the table. To get the latest version for newer kernels, use the firmware git tree instead.

You could try the 6.7 kernel but looking at that firmware git tree and commit log I can’t see any recent updates to AX201 firmware.

Since you seem to have read about and tried all the various configuration options the only other thing I can suggest is to try downgrading the firmware one step at a time. Don’t downgrade the whole linux-firmware package, just move the most recent version of /usr/lib/firmware/iwlwifi-Qu-* to .bak, reboot, see if any difference, until you’ve tried them all back to version 50.

2 Likes

Hey, thanks, I finally got around to looking at this but I’m a little uncertain about something. Let me show you what I mean below.

What is the difference between the files that are QuZ and the ones that are Qu? I assume the ‘Qu’ files are the ones I need to care about, but as someone who’s still learning this, is there anything that would be useful to know?

Thanks.

ls iwlwifi-qu*

iwlwifi-Qu-b0-hr-b0-50.ucode  iwlwifi-Qu-b0-jf-b0-66.ucode  iwlwifi-Qu-c0-hr-b0-73.ucode  iwlwifi-Qu-c0-jf-b0-77.ucode   iwlwifi-QuZ-a0-jf-b0-59.ucode
iwlwifi-Qu-b0-hr-b0-59.ucode  iwlwifi-Qu-b0-jf-b0-72.ucode  iwlwifi-Qu-c0-hr-b0-74.ucode  iwlwifi-QuZ-a0-hr-b0-50.ucode  iwlwifi-QuZ-a0-jf-b0-66.ucode
iwlwifi-Qu-b0-hr-b0-66.ucode  iwlwifi-Qu-b0-jf-b0-73.ucode  iwlwifi-Qu-c0-hr-b0-77.ucode  iwlwifi-QuZ-a0-hr-b0-59.ucode  iwlwifi-QuZ-a0-jf-b0-72.ucode
iwlwifi-Qu-b0-hr-b0-72.ucode  iwlwifi-Qu-b0-jf-b0-74.ucode  iwlwifi-Qu-c0-jf-b0-50.ucode  iwlwifi-QuZ-a0-hr-b0-66.ucode  iwlwifi-QuZ-a0-jf-b0-73.ucode
iwlwifi-Qu-b0-hr-b0-73.ucode  iwlwifi-Qu-b0-jf-b0-77.ucode  iwlwifi-Qu-c0-jf-b0-59.ucode  iwlwifi-QuZ-a0-hr-b0-72.ucode  iwlwifi-QuZ-a0-jf-b0-74.ucode
iwlwifi-Qu-b0-hr-b0-74.ucode  iwlwifi-Qu-c0-hr-b0-50.ucode  iwlwifi-Qu-c0-jf-b0-66.ucode  iwlwifi-QuZ-a0-hr-b0-73.ucode  iwlwifi-QuZ-a0-jf-b0-77.ucode
iwlwifi-Qu-b0-hr-b0-77.ucode  iwlwifi-Qu-c0-hr-b0-59.ucode  iwlwifi-Qu-c0-jf-b0-72.ucode  iwlwifi-QuZ-a0-hr-b0-74.ucode
iwlwifi-Qu-b0-jf-b0-50.ucode  iwlwifi-Qu-c0-hr-b0-66.ucode  iwlwifi-Qu-c0-jf-b0-73.ucode  iwlwifi-QuZ-a0-hr-b0-77.ucode
iwlwifi-Qu-b0-jf-b0-59.ucode  iwlwifi-Qu-c0-hr-b0-72.ucode  iwlwifi-Qu-c0-jf-b0-74.ucode  iwlwifi-QuZ-a0-jf-b0-50.ucode

I have no idea what the QuZ ones are to be honest. Perhaps a different hardware revision of the AX201 or another Intel wifi controller that is very similar to it. I’d move them to .bak as well to be on the safe side.

Did it worked / changed anything? Im having poor and unstable connection via 5Ghz (a bit better via 2.4 Ghz tho) and I have no ideas were to dig. (Turned off power_save for wifi already, as well as IPv6 and bluetooth already :D)

Is there a way to see which exactly driver is used? As its only showing “iwlwifi”. (Im havind AC 9260)

sudo dmesg | grep iwlwifi there should be a line saying which firmware is being loaded.

1 Like

Thanks, having downgraded and reverted all these I am starting to think it might just be the wifi card. I’ll look into some replacement possibilities but seeing as its a laptop, probably won’t be easy. I really appreciate your help!

Who should I trust now, which hardware I have? :smiley:

[    8.108547] iwlwifi 0000:3d:00.0: loaded firmware version 46.ff18e32a.0 9260-th-b0-jf-b0-46.ucode op_mode iwlmvm
[    8.353438] iwlwifi 0000:3d:00.0: Detected Intel(R) Wireless-AC 9270 160MHz, REV=0x321

or

inxi -Nazy                                                                                    ✔  14s    
Network:
  Device-1: Realtek vendor: Dell driver: r8169 v: kernel pcie: gen: 1
    speed: 2.5 GT/s lanes: 1 port: 3000 bus-ID: 3c:00.0 chip-ID: 10ec:2502
    class-ID: 0200
  Device-2: Intel Wi-Fi 5 Wireless-AC 9x6x [Thunder Peak]
    vendor: Rivet Networks driver: iwlwifi v: kernel pcie: gen: 2 speed: 5 GT/s
    lanes: 1 bus-ID: 3d:00.0 chip-ID: 8086:2526 class-ID: 0280

There’s no such thing as a Intel AC 9270 according to my internet search. Doesn’t matter anyway, you know what firmware it’s loading now and there are only two older versions to try;

$ ls /usr/lib/firmware/iwlwifi-9260-*
/usr/lib/firmware/iwlwifi-9260-th-b0-jf-b0-34.ucode
/usr/lib/firmware/iwlwifi-9260-th-b0-jf-b0-38.ucode
/usr/lib/firmware/iwlwifi-9260-th-b0-jf-b0-46.ucode

It’s not that difficult on most laptops if you’re OK with a bit of disassembly, they’re just tiny M2 cards.

1 Like

Renamed 46, so system took 38-th and looks like its working now as intended :3 Thank you! :slight_smile:

[    7.936471] iwlwifi 0000:3d:00.0: loaded firmware version 38.755cfdd8.0 9260-th-b0-jf-b0-38.ucode op_mode iwlmvm