Xiaomi AX3000T + OpenWRT 24.10: Ethernet/Wi-Fi 6 Asymmetric Speed Issues

Good day!

(Originally, I posted this in a thread specific to the Xiaomi AX3000T router, but I was kindly asked to create a dedicated topic for better visibility. Thank you for understanding!)

Yesterday, I installed OpenWRT OpenWrt 24.10.0-rc5 r28304-6dacba30a7 / LuCI openwrt-24.10 branch 24.337.27339~b1968d9 on my Xiaomi AX3000T router. Since then, I’ve been facing two persistent issues that I’ve been unable to resolve (I sincerely apologize for posting here, but I’ve scoured forums exhaustively and found no solutions).

Issue 1: Ethernet Speed Limitations
My ISP’s advertised speed is 890 Mbps, but via Ethernet, I’m only getting around 430 Mbps download and 650 Mbps upload. I tested this on two different laptops, and both showed identical results. For reference, my previous router (which recently died) delivered nearly full speed (~860 Mbps) over Ethernet.

Issue 2: Wi-Fi 6 Inconsistencies
I configured the 5 GHz interface with the following settings: MODE AX, Channel 36, Width 160 MHz. Strangely, speed tests show download speeds ranging from 150–250 Mbps, while upload speeds are nearly maxed out at ~750–780 Mbps (close to the ISP’s advertised rate).

What I’ve Tried:

  1. Network Optimization: Under Network → Global Network Options → Packet Steering, I set it to “Enabled (All CPUs)” with Steering Flows = 256. This improved initial Wi-Fi download speeds from ~100 Mbps to ~200 Mbps (originally, after installing OpenWRT, Wi-Fi downloads barely hit 100 Mbps).
  2. Flow Offloading: Experimented with Software and Hardware flow offloading in Network → Firewall. Hardware offloading had no noticeable impact, but Software offloading tanked download speeds to ~50 Mbps. I’ve since disabled it.
  3. SQM Tweaks: Enabled SQM with fq_codel as the queueing discipline and simplest.qos as the script. Also tried Link Layer Adaptation (Ethernet with overhead) and set Per Packet Overhead = 64. Minor improvements occurred, but nothing significant. SQM is now disabled.

Questions:

  1. Why is Ethernet capped at ~430 Mbps?
  2. Why is Wi-Fi download speed so low while uploads are nearly full speed?

I’m at my wit’s end here and would deeply appreciate any guidance. Thank you in advance for your help!

Below, I’ll attach the contents of my configuration files for reference.

/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 'fd60:f58d:44cf::/48'
        option packet_steering '2'
        option steering_flows '256'

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

config interface 'lan'
/etc/config/firewall

config defaults
        option input 'REJECT'
        option output 'ACCEPT'
        option forward 'REJECT'
        option synflood_protect '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'

Please add

ubus call system board
cat /etc/config/wireless

You know that you share wifi link 2.4gbps speed not only between ap and sta, but also with anyone 50m from you. Ch36 is really poor choice in 99% of the world.

Also make tests using https://www.waveform.com/tools/bufferbloat and post links (not pictures)
Disable QoS and reboot

  • connected wired lan
  • same with sw offload on
  • sw offload off wireless

Here’s all the data you requested. I’ve included the Waveform test results at the end of this post.

ubus call system board

{
        "kernel": "6.6.69",
        "hostname": "OpenWrt",
        "system": "ARMv8 Processor rev 4",
        "model": "Xiaomi Mi Router AX3000T",
        "board_name": "xiaomi,mi-router-ax3000t",
        "rootfs_type": "squashfs",
        "release": {
                "distribution": "OpenWrt",
                "version": "24.10.0-rc5",
                "revision": "r28304-6dacba30a7",
                "target": "mediatek/filogic",
                "description": "OpenWrt 24.10.0-rc5 r28304-6dacba30a7",
                "builddate": "1736026537"
        }
}
cat /etc/config/wireless

config wifi-device 'radio0'
        option type 'mac80211'
        option path 'platform/soc/18000000.wifi'
        option band '2g'
        option channel '1'
        option htmode 'HE20'
        option disabled '0'
        option country 'US'
        option cell_density '0'

config wifi-iface 'default_radio0'
        option device 'radio0'
        option network 'lan'
        option mode 'ap'
        option ssid '***************'
        option encryption 'sae'
        option key '***************'
        option ocv '0'

config wifi-device 'radio1'
        option type 'mac80211'
        option path 'platform/soc/18000000.wifi+1'
        option band '5g'
        option channel '36'
        option htmode 'HE160'
        option disabled '0'
        option country 'US'
        option cell_density '0'

config wifi-iface 'default_radio1'
        option device 'radio1'
        option network 'lan'
        option mode 'ap'
        option ssid '***************'
        option encryption 'sae'
        option key '***************'
        option ocv '0'

Waveform test links:

I noticed that enabling SW flow offloading significantly improved the LAN test—results were practically flawless (seems I overlooked testing this setup earlier and got a bit tangled in the process). However, the Wi-Fi test performance was downright disappointing. Oddly, the Wi-Fi test didn’t complete on the first try: it stalled during the uploading phase, with download speeds dropping to a mere 40 Mbps. Regrettably, I couldn’t capture a link or screenshot since the test never finalized.

Shoild not matter in context but -rc7 is out, owut or luci-app-attendedsysupgrade can help

All things point to flow control towards wan.

ethtool wan
: check agreed flow control
ethtool -a wan
: check configured
ethtool -A wan tx off rx off autoneg on
ethtool -r wan
: check logread | tail -10 that tx rx are off

redo speedtest (any, just compare feith previous)

For wifi try ch 100 or 149 , mzaybe even 80mhz autoch.

In your opinion, would it be better to upgrade to rc7 while preserving the current settings or perform a clean install/update in this scenario? I'm going to upgrade using the attended sysupgrade.

It will not worsen or ease performance dilemma.

1 Like

Well, that’s what I’ve got. Any thoughts?

root@OpenWrt:~# ethtool wan
Settings for wan:
        Supported ports: [ TP MII ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Supported pause frame use: Symmetric Receive-only
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Advertised pause frame use: Symmetric Receive-only
        Advertised auto-negotiation: Yes
        Advertised FEC modes: Not reported
        Link partner advertised link modes:  10baseT/Half 10baseT/Full
                                             100baseT/Half 100baseT/Full
                                             1000baseT/Full
        Link partner advertised pause frame use: Symmetric Receive-only
        Link partner advertised auto-negotiation: Yes
        Link partner advertised FEC modes: Not reported
        Speed: 1000Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 1
        Transceiver: internal
        Auto-negotiation: on
        MDI-X: Unknown
        Supports Wake-on: d
        Wake-on: d
        Link detected: yes
root@OpenWrt:~# ethtool -a wan
Pause parameters for wan:
Autonegotiate:  on
RX:             off
TX:             off
RX negotiated:  on
TX negotiated:  on

It didn’t make much sense, but I tried anyway...

root@OpenWrt:~# ethtool -A wan tx off rx off autoneg on
autoneg unmodified, ignoring
rx unmodified, ignoring
tx unmodified, ignoring
no pause parameters changed, aborting
root@OpenWrt:~# ethtool -r wan
root@OpenWrt:~# logread | tail -10
Thu Jan 30 00:17:01 2025 daemon.info dnsmasq[1]: using only locally-known addres                                                         ses for test
Thu Jan 30 00:17:01 2025 daemon.info dnsmasq[1]: using only locally-known addres                                                         ses for onion
Thu Jan 30 00:17:01 2025 daemon.info dnsmasq[1]: using only locally-known addres                                                         ses for localhost
Thu Jan 30 00:17:01 2025 daemon.info dnsmasq[1]: using only locally-known addres                                                         ses for local
Thu Jan 30 00:17:01 2025 daemon.info dnsmasq[1]: using only locally-known addres                                                         ses for invalid
Thu Jan 30 00:17:01 2025 daemon.info dnsmasq[1]: using only locally-known addres                                                         ses for bind
Thu Jan 30 00:17:01 2025 daemon.info dnsmasq[1]: using only locally-known addres                                                         ses for lan
Thu Jan 30 00:17:02 2025 user.notice firewall: Reloading firewall due to ifup of                                                          wan (wan)
Thu Jan 30 00:17:02 2025 user.notice natflow: Reloading natflow-zone due to ifup                                                          of wan (wan)
Thu Jan 30 00:17:02 2025 user.notice nlbwmon: Reloading nlbwmon due to ifup of w                                                         an (wan)

P.S. It looks like there’s an API issue — every time I try to update via luci-app-attendedsysupgrade, I get this error:
Could not reach API at "https://sysupgrade.openwrt.org/api/v1/overview?1738196901775". Please try again later.

ethtool -r re-negotiates link speed and pauses.
After that ethtool and ethtool -a would show negotiated link parameters.
Lots of noise, better check dmesg (kernel log under luci/system/logs)

Alright, so I finally figured out what the issue was. Turns out it wasn’t the OpenWRT firmware itself or the settings alone causing the problem. Here’s the breakdown:

First, the best Ethernet performance came after enabling software flow offloading (special thanks to brada4) alongside packet steering. For optimal results, I had to set it to "Enabled (All CPUs)" and adjust "Steering Flows" to 256.

Second, digging through forums, I learned Xiaomi routers are notoriously sensitive to physical obstructions. Coming from a lifetime of Asus routers, I’ve never seen signal degradation this severe. After trial-and-error testing and using RF analysis tools, I nailed down the Wi-Fi settings. Switching to channels 44 or 48 on 5GHz worked best. Avoid channel 36 and anything above 140 — for some reason, channels above 140 just dropped entirely, making the network invisible to all devices.

Here’s a pro tip for weak signal areas: If the router’s behind walls or obstacles, try maxing out the channel width (160 MHz) but lowering the transmit power to between 75% and 93% of max (for the AX3000T, that’s 21dBm or 125 mW). Counterintuitively, reducing power improved speeds dramatically, even through walls.

P.S. When testing with a laptop in direct line-of-sight (2.5 meters away), speeds hit 890 Mbps — exactly what my ISP promises.

(Speedtest screenshot attached below)

Sounds like bad calibration in the eeprom.

1 Like

75% is log10(0.75) = -1.25dbm

Whats the sqm performance like?

75% of the maximum which is 199mW or 23 dBm

You got that wrong, mw+gain=eirp

Using the SQM tweaks mentioned in the first post of this thread, you can squeeze out a slight speed boost (~25 Mbps from what I’ve seen). That said, fq_codel and simplest.qos performed the best here, while piece_of_cake.qos didn’t really move the needle — no noticeable difference in speeds.

1 Like

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