Slow Wifi download speed on Dell 3525

I have a problem with very slow download speed on my laptop (dell 3525) over wifi at 5 GHz.
Changing channnels doesn't seem to solve the issue in general, there are some variances, but overall the situation is the same.

The issue is most probably either with the laptop or the router on hardware level or some settings are not right, it is not OpenWrt, since I get 190 Mbps on my rather cheap phone on the same router's 5 GHz wifi, so...

From the Internet some other people who have similar issues received responses, that the Wifi on the laptop maybe newer and needs more Wifi channels to utilize more speed. I don't know if this is true.

But the weird part is, that while I only get 60 Mbps download over wifi 5 GHz, in the very same speedtest run, I get 120 Mbps for upload.
That is the part I don't understand. It's weird.
I would rather be satisfied if the download was 120 Mbps and 60 Mbps upload.

Any ideas?

The router is EA7300v2 with OpenWrt 23.05.5 and working perfectly fine.

Because I use Linux on the laptop - the info on this on the Internet is very limited, so I am hoping, if I can get some help here, since most people here presumably use Linux and OpenWrt together and maybe somebody else had stumbled on such issue like me?

Thanks in advance.

Which of three wifi options your laptop has?

Please connect to your OpenWrt device using ssh and copy the output of the following commands and post it here using the "Preformatted text </> " button:
grafik
Remember to redact passwords, MAC addresses and any public IP addresses you may have:

ubus call system board
cat /etc/config/network
cat /etc/config/wireless
cat /etc/config/dhcp
cat /etc/config/firewall

If you're asking about the Wifi adapter - this is what I get at Dell's support site for my laptop (I am registered so this info should be device specific, not just model specific - however it lists 3 adapters, not sure why) :

555-BHSR : Realtek 8821CE Wireless card d river

|Part Number|Description|Quantity|
| --- | --- | --- |
|WXDT2|SRV,DRVR,RLT8821,WF/BT,V3|1|

555-BGUV : Realtek Wi-Fi 5 RTL8821CE, 1x1 , 802.11ac, MU-MIMO, Bluetooth (R) wireless card

|Part Number|Description|Quantity|
| --- | --- | --- |
|47J2F|LBL,REG,WRLES,8821CE-VC,WW|1|
|N33GX|CRD,WRLES,M.2,8821CE-VC,WW|1|

EDIT: both show Realtec 8821CE - so this must be it.
This seems to be the device page: Realtec 8821CE


About the OWRT output I will check later and post it. Just one question - should the laptop be wifi connected, when executing the commands or it doesn't matter?

It is 3 options - realtek, mediatek or intel, yours is wifi5 just like access point, no problem there.

About the OWRT output I will check later and post it. Just one question - should the laptop be wifi connected, when executing the commands or it doesn't matter?

Makes no difference, commands are not dynamic measurements.
First attempt is to blame your config mistakes, if those look sane next step would be....

If you want to measure:
https://www.waveform.com/tools/bufferbloat
And compare wired vs wireless vs (if possible) directly connected to provider's port (post links, not screengrabs if the results make no sense to you)

ok here are the outputs of the commands :

~# ubus call system board
{
	"kernel": "5.15.167",
	"hostname": "OpenWrt",
	"system": "MediaTek MT7621 ver:1 eco:3",
	"model": "Linksys EA7300 v2",
	"board_name": "linksys,ea7300-v2",
	"rootfs_type": "squashfs",
	"release": {
		"distribution": "OpenWrt",
		"version": "23.05.5",
		"revision": "r24106-10cc5fcd00",
		"target": "ramips/mt7621",
		"description": "OpenWrt 23.05.5 r24106-10cc5fcd00"
	}
}

### Next command

~# cat /etc/config/network

config interface 'loopback'
	option device 'lo'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.0.0.0'

config globals 'globals'
	option ula_prefix 'fdac:bcb7:adfa::/48'
	option packet_steering '1'

config device
	option name 'br-lan'
	option type 'bridge'
	list ports 'lan1'
	list ports 'lan2'
	list ports 'lan3'
	list ports 'lan4'

config device
	option name 'lan1'
	option macaddr 'd8:ec:5e:54:cd:1f'

config device
	option name 'lan2'
	option macaddr 'd8:ec:5e:54:cd:1f'

config device
	option name 'lan3'
	option macaddr 'd8:ec:5e:54:cd:1f'

config device
	option name 'lan4'
	option macaddr 'd8:ec:5e:54:cd:1f'

config interface 'lan'
	option device 'br-lan'
	option proto 'static'
	option ipaddr '192.168.1.1'
	option netmask '255.255.255.0'
	option ip6assign '60'
	option delegate '0'

config device
	option name 'wan'
	option macaddr 'my_MAC_for_my_ISP_to_allow_traffic'

config interface 'wan'
	option device 'wan'
	option proto 'static'
	option ipaddr 'my_real_static_IP_from_my_ISP'
	option netmask '255.255.255.0'
	option gateway 'ISP_real_static_Gateway_IP'
	list dns '1.1.1.1'

config interface 'wan6'
	option device 'wan'
	option proto 'dhcpv6'

config interface 'secret'
	option proto 'wireguard'
	option private_key 'secret'
	list addresses '10.66.66.6/32'
	list addresses 'fd42:42:42::6/128'
	list dns '8.8.8.8'
	list dns '1.1.1.1'

config wireguard_secret
	option description 'secret.conf'
	option public_key 'secret'
	option preshared_key 'secret'
	list allowed_ips '0.0.0.0/0'
	list allowed_ips '::/0'
	option endpoint_host '1.2.3.4'
	option endpoint_port '12345'

config device
	option name 'eth0'
	option promisc '1'

### Next command

~# cat /etc/config/wireless

config wifi-device 'radio0'
	option type 'mac80211'
	option path '1e140000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0'
	option channel '2'
	option band '2g'
	option htmode 'HT20'
	option country 'secret'
	option cell_density '0'

config wifi-iface 'default_radio0'
	option device 'radio0'
	option network 'lan'
	option mode 'ap'
	option ssid 'secret-2.4'
	option encryption 'sae-mixed'
	option key 'secret'

config wifi-device 'radio1'
	option type 'mac80211'
	option path '1e140000.pcie/pci0000:00/0000:00:01.0/0000:02:00.0'
	option channel '36'
	option band '5g'
	option htmode 'VHT80'
	option cell_density '0'
	option country 'secret'

config wifi-iface 'default_radio1'
	option device 'radio1'
	option network 'lan'
	option mode 'ap'
	option ssid 'secret'
	option encryption 'sae-mixed'
	option key 'secret'

### Next command

~# cat /etc/config/dhcp

config dnsmasq
	option domainneeded '1'
	option localise_queries '1'
	option rebind_protection '1'
	option rebind_localhost '1'
	option local '/lan/'
	option domain 'lan'
	option expandhosts '1'
	option cachesize '1000'
	option authoritative '1'
	option readethers '1'
	option leasefile '/tmp/dhcp.leases'
	option localservice '1'
	option ednspacket_max '1232'
	list server '127.0.0.1#5054'
	list server '/mask.icloud.com/'
	list server '/mask-h2.icloud.com/'
	list server '/use-application-dns.net/'
	list server '127.0.0.1#5053'
	option port '53'
	option doh_backup_noresolv '-1'
	option noresolv '1'
	list doh_backup_server '127.0.0.1#5054'
	list doh_backup_server '/mask.icloud.com/'
	list doh_backup_server '/mask-h2.icloud.com/'
	list doh_backup_server '/use-application-dns.net/'
	list doh_backup_server '127.0.0.1#5053'
	list doh_server '127.0.0.1#5053'

config dhcp 'lan'
	option interface 'lan'
	option start '100'
	option limit '150'
	option leasetime '12h'
	option dhcpv4 'server'
	option dhcpv6 'server'
	option ra 'server'
	list ra_flags 'managed-config'
	list ra_flags 'other-config'

config dhcp 'wan'
	option interface 'wan'
	option ignore '1'
	option start '100'
	option limit '150'
	option leasetime '12h'

config odhcpd 'odhcpd'
	option maindhcp '0'
	option leasefile '/tmp/hosts/odhcpd'
	option leasetrigger '/usr/sbin/odhcpd-update'
	option loglevel '4'

config host
	option name 'secret_desktop_pc_name'
	list mac 'secret_mac'
	option ip 'internal_lan_static_ip'

### Next command

~# cat /etc/config/firewall

config defaults
	option input 'REJECT'
	option output 'ACCEPT'
	option forward 'REJECT'
	option synflood_protect '1'
	option flow_offloading '1'
	option flow_offloading_hw '1'

config zone
	option name 'lan'
	option input 'ACCEPT'
	option output 'ACCEPT'
	option forward 'ACCEPT'
	list network 'lan'
	option mtu_fix '1'

config zone
	option name 'wan'
	option input 'REJECT'
	option output 'ACCEPT'
	option forward 'REJECT'
	option masq '1'
	option mtu_fix '1'
	list network 'wan'
	list network 'wan6'

config forwarding
	option src 'lan'
	option dest 'wan'

config rule
	option name 'Allow-DHCP-Renew'
	option src 'wan'
	option proto 'udp'
	option dest_port '68'
	option target 'ACCEPT'
	option family 'ipv4'

config rule
	option name 'Allow-Ping'
	option src 'wan'
	option proto 'icmp'
	option icmp_type 'echo-request'
	option family 'ipv4'
	option target 'ACCEPT'

config rule
	option name 'Allow-IGMP'
	option src 'wan'
	option proto 'igmp'
	option family 'ipv4'
	option target 'ACCEPT'

config rule
	option name 'Allow-DHCPv6'
	option src 'wan'
	option proto 'udp'
	option dest_port '546'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-MLD'
	option src 'wan'
	option proto 'icmp'
	option src_ip 'fe80::/10'
	list icmp_type '130/0'
	list icmp_type '131/0'
	list icmp_type '132/0'
	list icmp_type '143/0'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-ICMPv6-Input'
	option src 'wan'
	option proto 'icmp'
	list icmp_type 'echo-request'
	list icmp_type 'echo-reply'
	list icmp_type 'destination-unreachable'
	list icmp_type 'packet-too-big'
	list icmp_type 'time-exceeded'
	list icmp_type 'bad-header'
	list icmp_type 'unknown-header-type'
	list icmp_type 'router-solicitation'
	list icmp_type 'neighbour-solicitation'
	list icmp_type 'router-advertisement'
	list icmp_type 'neighbour-advertisement'
	option limit '1000/sec'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-ICMPv6-Forward'
	option src 'wan'
	option dest '*'
	option proto 'icmp'
	list icmp_type 'echo-request'
	list icmp_type 'echo-reply'
	list icmp_type 'destination-unreachable'
	list icmp_type 'packet-too-big'
	list icmp_type 'time-exceeded'
	list icmp_type 'bad-header'
	list icmp_type 'unknown-header-type'
	option limit '1000/sec'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-IPSec-ESP'
	option src 'wan'
	option dest 'lan'
	option proto 'esp'
	option target 'ACCEPT'

config rule
	option name 'Allow-ISAKMP'
	option src 'wan'
	option dest 'lan'
	option dest_port '500'
	option proto 'udp'
	option target 'ACCEPT'

config zone
	option name 'VPN'
	option input 'REJECT'
	option output 'ACCEPT'
	option forward 'REJECT'
	list network 'secret'
	option masq '1'

config forwarding
	option src 'lan'
	option dest 'VPN'

config redirect
	option dest 'lan'
	option target 'DNAT'
	option name 'Transmission(torrents)'
	option src 'wan'
	option src_dport '12345'
	option dest_ip 'my_secret_internal_ip'
	option dest_port '12345'
	option reflection_src 'external'

### END

I will post here Network speed test Results and update the post with each new test.

My desktop over Ethernet - (for Reference) : https://www.waveform.com/tools/bufferbloat?test-id=0af79680-033d-4281-b757-8955f8dea38b

The problematic laptop (dell 3525), Wifi 5GHz, WPA3, both 2.4/5 GHz with the same SSID: https://www.waveform.com/tools/bufferbloat?test-id=81a97f57-7daf-41d1-b99a-ed3fa2567c5d

Speedtest (laptop) Wifi, 5GHz: https://www.speedtest.net/result/16902376300

Speedtest with the original firmware (Linksys), laptop, Wifi 5GHz: https://www.speedtest.net/result/16902401202
(Note: the router is dual-partition so I can easily reboot to the partition B, which contains the original firmware, this will be an interesting comparison with OpenWrt results)

1 Like

Just to be clear, for the results to be useful, it would be best if you worked with a near-default configuration of OpenWrt. It appears you've setup a Wireguard VPN (where all traffic is traversing the tunnel) as well as a bunch of DNS related things. Those things were likely not part of the vendor firmware configuration.

1 Like

So you get 120Mbps upload over wifi and 100Mbps over wired? Seems like either your VPN is limited or your torrents go too heavy

To make it clear:

  • the VPN tunnel is off like 99.99% of the time, I've just installed it to have it, but don't really need it, as I prefer VPN on per device, as opposed to per the entire network, as the latter is not very convenient (although working perfectly fine),
  • I don't run torrents also like 99.99% of the time, the redirect is only when I need it, which is very very rare,
  • I do have DNS-over-HTTPS, but that shouldn't affect the download/upload speedtest as it tests mostly the bandwidth, and it also has a fallback to Cloudflare's normal DNS,
  • On the desktop and my phone I get easily 190 Mbps download and around 100 or more Mbps upload,
  • On the laptop (dell 3525) I get only 60 Mbps download, compared with 120 Mbps upload - weird.

So problem is related to one single client device. Try to use wpa2 or wpa3, not mixed mode. And name both band APs same.

you mean the SSID or... ?

Yes, name the SSIDs the same so that the client devices can choose the band that works the best at any given time.

ok, noted and will do

OK guys - the tests are done, I've updated my post above with the results.

It looks like poor compatibility with OpenWrt for my laptop, since with the Linksys original firmware the laptop also can easily make 180-190 Mbps download.

I wonder if I make the 5 GHz channels less spread, like 20 or 40, instead of 80 Mhz will that help?

WPA2 or 3 doesn't seem to affect the poor results of the laptop on OpenWrt.

I'm open to ideas and suggestions.

Remove device in windows device manager and let driver reinstall, 101% certain client devie has a problem

I can't do that in Debian :slight_smile:
If there is a way, other than compiling a custom Kernel - I'm open to suggestions?

But if the issue is with the device itself - then how it can achieve easily 190 Mbps on the original Linksys firmware?

I think some settings tweaking on the OpenWrt side will probably fix it, but I have no idea what is best to tweak.

Are country codes matching?

Power save modes ie if you power laptop etc.