I am running OpenWrt on an Asus AX4200 and experiencing very slow WiFi download speeds on both 5 GHz and 2.4 GHz while wired LAN performance is fine: wired speed tests consistently show about 800 Mbps download and 40 Mbps upload while directly connected to the routers lan port, but on WiFi I only get about 15 Mbps download and 40 Mbps upload; I have tried two separate AX4200 units with the same result, reset each router to defaults and reconfigured, changed channels and frequencies on 2.4 GHz to 1, 6, and 11 and tested both 20 MHz and 40 MHz channel widths, updated all packages after each reset, tried enabling both software and hardware acceleration with no luck, i disabled and re-enabled allowing legacy rates on 2.4 GHz and trying different encryption schemes. I manually added my country codes and set the maximum transit power. I re-verified LAN speeds and everything was showing up fine on the ethernet side, so it seems specific to wireless. I am looking for recommendations to diagnose and fix the issue.
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 (red circle; this works best in the 'Markdown' composer view in the blue oval):
![]()
Remember to redact passwords, VPN keys, 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
What client are you using? In practive you do not get any improvements from 40MHz in 2.4GHz as more bandwidth will be consumed managing secondary channel than can be gained from extra bandwidth in presence of any competing AP within sight.
Normally link rate should be 72Mbps or 144Mbps depending on client, and you get half of it downloading and half uploading, in the air shared with neighbors....
root@OpenWrt:~# ubus call system board
{
"kernel": "6.6.110",
"hostname": "OpenWrt",
"system": "ARMv8 Processor rev 4",
"model": "ASUS TUF-AX4200",
"board_name": "asus,tuf-ax4200",
"rootfs_type": "squashfs",
"release": {
"distribution": "OpenWrt",
"version": "24.10.4",
"revision": "r28959-29397011cc",
"target": "mediatek/filogic",
"description": "OpenWrt 24.10.4 r28959-29397011cc",
"builddate": "1760891865"
}
}
root@OpenWrt:~# 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 'fddf:d2e4:b538::/48'
config device
option name 'br-lan'
option type 'bridge'
list ports 'lan1'
list ports 'lan2'
list ports 'lan3'
list ports 'lan4'
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'
config interface 'wan'
option device 'eth1'
option proto 'dhcp'
config interface 'wan6'
option device 'eth1'
option proto 'dhcpv6'
root@OpenWrt:~# cat /etc/config/wireless
config wifi-device 'radio0'
option type 'mac80211'
option path 'platform/soc/18000000.wifi'
option band '2g'
option channel '1'
option cell_density '0'
option txpower '20'
option country 'US'
option htmode 'HE20'
config wifi-iface 'default_radio0'
option device 'radio0'
option network 'lan'
option mode 'ap'
option ssid 'TTP_2G'
option encryption 'psk2'
option isolate '1'
option key 'REDACTED!'
option macaddr 'random'
option skip_inactivity_poll '1'
option disassoc_low_ack '0'
config wifi-device 'radio1'
option type 'mac80211'
option path 'platform/soc/18000000.wifi+1'
option band '5g'
option channel '36'
option htmode 'HE80'
option disabled '1'
config wifi-iface 'default_radio1'
option device 'radio1'
option network 'lan'
option mode 'ap'
option ssid 'OpenWrt'
option encryption 'none'
root@OpenWrt:~# cat /etc/config/dhcp
config dnsmasq
option domainneeded '1'
option boguspriv '1'
option filterwin2k '0'
option localise_queries '1'
option rebind_protection '1'
option rebind_localhost '1'
option local '/lan/'
option domain 'lan'
option expandhosts '1'
option nonegcache '0'
option cachesize '1000'
option authoritative '1'
option readethers '1'
option leasefile '/tmp/dhcp.leases'
option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
option nonwildcard '1'
option localservice '1'
option ednspacket_max '1232'
option filter_aaaa '0'
option filter_a '0'
config dhcp 'lan'
option interface 'lan'
option start '100'
option limit '150'
option leasetime '12h'
option dhcpv4 'server'
option dhcpv6 'server'
option ra 'server'
option ra_slaac '1'
list ra_flags 'managed-config'
list ra_flags 'other-config'
config dhcp 'wan'
option interface 'wan'
option ignore '1'
config odhcpd 'odhcpd'
option maindhcp '0'
option leasefile '/tmp/hosts/odhcpd'
option leasetrigger '/usr/sbin/odhcpd-update'
option loglevel '4'
option piofolder '/tmp/odhcpd-piofolder'
root@OpenWrt:~# cat /etc/config/firewall
config defaults
option input 'REJECT'
option output 'ACCEPT'
option forward 'DROP'
option flow_offloading '1'
option flow_offloading_hw '1'
config zone
option name 'lan'
list network 'lan'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'ACCEPT'
config zone
option name 'wan'
list network 'wan'
list network 'wan6'
option input 'DROP'
option output 'ACCEPT'
option forward 'DROP'
option masq '1'
option mtu_fix '1'
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'
I tested multiple clients including a PS4, a Google Pixel 6a and 7a, an HP laptop, a Dell laptop, and a ThinkPad. All of them reported the same wireless speeds of about 15 Mbps down and 40 Mbps up. I live in the middle of nowhere, so my network neighbors are few and far between. Before flashing OpenWRT, my WiFi speeds were around 800 Mbps down and 40 Mbps up. I also made sure only one client was connected at a time to the router before testing.
You are aware that the 5g radio is disabled in your config ?
Can you verify which MCS index is used during speedtests?
I am aware. I disabled it after I did my testing. I used speedtest.net and fast.com. both showed the same output.
Must be your setup or signals etc. I have a AX4200, speeds are perfects on 24.10 and 25.12.
Did you check what connection rate you get when you do the testing?
Throughput should be somewhere around: connection rate x 0.75
If you test 2.4G make sure to disable bluetooth devices, that use low latency settings, e.g. certain sound speakers etc., some of these devices cause interference on 2.4G
On my Google Pixel 7a it says my transmit and receive speeds are 286 Mbps. I also have Bluetooth disabled on all my devices and throughout the house.
And with that rate you get < 100Mbps when running the speedtest?
If you logon via ssh and run these commands:
for ac in 0 1 2 3; do echo $ac 2500 8500 > /sys/kernel/debug/ieee80211/phy0/aql_txq_limit; done
for ac in 0 1 2 3; do echo $ac 2500 8500 > /sys/kernel/debug/ieee80211/phy1/aql_txq_limit; done
does that improve your throughput?
Yes, I did get < 100 Mbps when running speedtest and fast.com. Doing those commands helped improve the speeds from 15 mbps to 40 mbps, but how do i reach the 700 mbps I reach in the stock firmare?
It did. It changed it from 15 mbps to 40 mbps. But how can I reach the 700 mbps i reach on the stock firmware?
By enabling 5ghz wifi?
Okay,
Have you run an iperf3 test between access point and client to rule out wireless congestion?
congestion would be the reverse term
5Ghz has the same speeds as 2.4Ghz when I did a speed test
Did you setup anything else, like sqm or configured a proxy on your router/pixel?
Before and after running the test can you also check if you are facing the wan port downshift issue, by running this command, when logged on via ssh:
dmesg | grep -i Downshift
P.S. you can add the command to change the aql_txq_limit to System→Startup→Local Startup by adding this in the text box:
aql_txq_limit_l=2500
aql_txq_limit_h=8500
for ac in 0 1 2 3; do echo $ac $aql_txq_limit_l $aql_txq_limit_h > /sys/kernel/debug/ieee80211/phy0/aql_txq_limit; done
for ac in 0 1 2 3; do echo $ac $aql_txq_limit_l $aql_txq_limit_h > /sys/kernel/debug/ieee80211/phy1/aql_txq_limit; done
Just seems weird that it's almost deciding to downgrade from a current WiFi protocol to almost 802.11a/b speeds.
The only other thing we haven't ruled out is a faulty power supply causing a lower than required voltage.
How would I do that?
When I ran "dmesg | grep -i Downshift" nothing came up
and no, I have not setup anything else, like sqm or configured a proxy on my router or pixel.