So, I'm currently on a MT7981 device with a 2x2 spatial streams. Everything is working very well, except that the download speeds are WAY slower than upload speeds. During iperf3 tests (also does apply to real-world tests using Ookla speedtest):
- Average upload speed: 1.59 Gbps
- Average download speed: 850Mbps
Things that I have tried:
- Patching the driver to load the proprietary .bin firmware from Mediatek.
- Playing with options in /etc/config/wireless.
- Testing with UDP on iperf3 to discard any TCP-specific issue.
- Monitoring the TX bitrates during tests, they are stable at 2.4Gbps, using MCS 10/12 usually.
Does anyone here have an idea what could be the reason? I'm used to seeing upload speeds being slower than download, but never the other way around.
The current loaded modules are:
cfg80211 319488 4 mt7915e,mt76_connac_lib,mt76,mac80211
mac80211 614400 3 mt7915e,mt76_connac_lib,mt76
mt76 77824 2 mt7915e,mt76_connac_lib
mt76_connac_lib 49152 1 mt7915e
mt7915e 245760 0
Note: I know that I can use a wired connection and all, but I'm curious about why that gap between upload and download speeds.
If anyone have an idea, I would appreciate it. Thanks in advance!
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:

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/firewall
Hey, @frollic, thanks for replying.
# ubus call system board
{
"kernel": "6.6.86",
"hostname": "OpenWrt",
"system": "ARMv8 Processor rev 4",
"model": "Custom Router",
"board_name": "custom,router",
"rootfs_type": "squashfs",
"release": {
"distribution": "Custom-OpenWrt",
"version": "24.10.1",
"revision": "r28597-0425664679",
"target": "mediatek/filogic",
"description": "Custom-OpenWrt 24.10.1 r28597-0425664679",
"builddate": "1744562312"
}
}
# 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 'fd51:873a:31a8::/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 device
option name 'eth1'
option macaddr 'redacted'
config interface 'wan'
option device 'eth1'
option proto 'dhcp'
config interface 'wan6'
option device 'eth1'
option proto 'dhcpv6'
# cat /etc/config/firewall
config defaults
option syn_flood '1'
option input 'REJECT'
option output 'ACCEPT'
option forward 'REJECT'
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 'REJECT'
option output 'ACCEPT'
option forward 'REJECT'
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'
Here's the output of the commands. Don't pay too much attention to the board model, as I said, it uses the MT7981 chipset.
Why are you so sure that it is a problem with the router and not the clients? Can you confirm this with two clients having wireless cards from different vendors, or at least of different models?
Thanks for replying. It isn't an issue with the router, it's an issue with the driver. With the original firmware, which is a fork of OpenWrt, it gets the expected download speeds. Sadly, that version doesn't have a way to configure many things via uci
, and therefore is not suitable for me.
The firmware has been tested on multiple devices and the result is the same on each one, that's why I'm 100% sure that it's an issue with the firmware. Flashing the old image also returns the "correct" behavior back.
then it should be reported upstream ?
Sure, there are already several issues opened regarding driver performance, thought, no this specific one about the abysmal difference between upload and download speeds. This post was more to make sure that I'm not missing something obvious in the settings.
Thanks.
How does that affect WiFi, which is what I'm talking about.
I missed the reference to WiFi and had replied based on the title so disregard my information.