Adding OpenWrt support for Xiaomi AX3600 (Part 1)

It could be a good idea to include the smp_affinity tweeks by default as they help share cpu load over the cores. I had to adapt a few interrputs as they were different on my system.

Just realised that my system has two interrupts that @dchard's doesn't.

102:  0   0   0   0   PCI-MSI    0 Edge    PCIe PME
108:  31   0   0    0   PCI-MSI    524288 Edge    ath10k_pci

@robimarko Would your amazing ipq40xx ethernet and DSA driver combo ever work on the ipq807x platform maybe sometime in the future?

Yeah, the affinity looks like a good tweak to spread out the load.

He doesnt have those IRQ-s as AX6 doesnt have the "IoT" radio.

Well, the switch part should at least partially be applicable to IPQ807x but ethernet driver wont for sure.
I still havent figured out how things are actually connected


A few iperf tests from the exact same spots using same channels/width for wireless

Latest stock firmware iperf3 4 stream results

Server LAN gigabit
Intel AX200 2x2 wireless | 1m from AP | 80MHz RX/TX 1201/1201Mbps link

[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec   350 MBytes   294 Mbits/sec                  sender
[  5]   0.00-10.01  sec   350 MBytes   293 Mbits/sec                  receiver
[  7]   0.00-10.00  sec   370 MBytes   310 Mbits/sec                  sender
[  7]   0.00-10.01  sec   369 MBytes   309 Mbits/sec                  receiver
[  9]   0.00-10.00  sec   177 MBytes   149 Mbits/sec                  sender
[  9]   0.00-10.01  sec   176 MBytes   147 Mbits/sec                  receiver
[ 11]   0.00-10.00  sec   200 MBytes   167 Mbits/sec                  sender
[ 11]   0.00-10.01  sec   198 MBytes   166 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec  1.07 GBytes   920 Mbits/sec                  sender
[SUM]   0.00-10.01  sec  1.07 GBytes   915 Mbits/sec                  receiver

Server LAN gigabit
Client Intel AX200 2x2 wireless | 5m from AP + 1 Wall | 80MHz RX/TX 865/1201Mbps link

[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.01  sec   183 MBytes   153 Mbits/sec                  sender
[  5]   0.00-10.09  sec   183 MBytes   152 Mbits/sec                  receiver
[  7]   0.00-10.01  sec   135 MBytes   113 Mbits/sec                  sender
[  7]   0.00-10.09  sec   135 MBytes   113 Mbits/sec                  receiver
[  9]   0.00-10.01  sec   169 MBytes   142 Mbits/sec                  sender
[  9]   0.00-10.09  sec   169 MBytes   141 Mbits/sec                  receiver
[ 11]   0.00-10.01  sec   162 MBytes   135 Mbits/sec                  sender
[ 11]   0.00-10.09  sec   162 MBytes   134 Mbits/sec                  receiver
[SUM]   0.00-10.01  sec   649 MBytes   544 Mbits/sec                  sender
[SUM]   0.00-10.09  sec   649 MBytes   540 Mbits/sec                  receiver

Latest Openwrt backports branch firmware iperf3 4 stream results:

Server LAN gigabit
Intel AX200 2x2 wireless | 1m from AP | 80MHz RX/TX 1201/1201Mbps link

[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec   268 MBytes   225 Mbits/sec                  sender
[  5]   0.00-10.07  sec   268 MBytes   224 Mbits/sec                  receiver
[  7]   0.00-10.00  sec   245 MBytes   206 Mbits/sec                  sender
[  7]   0.00-10.07  sec   245 MBytes   204 Mbits/sec                  receiver
[  9]   0.00-10.00  sec   249 MBytes   209 Mbits/sec                  sender
[  9]   0.00-10.07  sec   249 MBytes   207 Mbits/sec                  receiver
[ 11]   0.00-10.00  sec   253 MBytes   212 Mbits/sec                  sender
[ 11]   0.00-10.07  sec   253 MBytes   211 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec  1015 MBytes   852 Mbits/sec                  sender
[SUM]   0.00-10.07  sec  1015 MBytes   846 Mbits/sec                  receiver

Server LAN gigabit
Client Intel AX200 2x2 wireless | 5m from AP + 1 Wall | 80MHz RX/TX 48/1208Mbps link

[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.01  sec  9.25 MBytes  7.75 Mbits/sec                  sender
[  5]   0.00-11.66  sec  9.18 MBytes  6.60 Mbits/sec                  receiver
[  7]   0.00-10.01  sec  7.12 MBytes  5.97 Mbits/sec                  sender
[  7]   0.00-11.66  sec  7.06 MBytes  5.08 Mbits/sec                  receiver
[  9]   0.00-10.01  sec  6.00 MBytes  5.03 Mbits/sec                  sender
[  9]   0.00-11.66  sec  5.93 MBytes  4.27 Mbits/sec                  receiver
[ 11]   0.00-10.01  sec  16.1 MBytes  13.5 Mbits/sec                  sender
[ 11]   0.00-11.66  sec  16.1 MBytes  11.6 Mbits/sec                  receiver
[SUM]   0.00-10.01  sec  38.5 MBytes  32.3 Mbits/sec                  sender
[SUM]   0.00-11.66  sec  38.3 MBytes  27.5 Mbits/sec                  receiver

When close to the AP running Openwrt the results are quite similar to stock but once you move away or place an obstical in the way the RX link rate plunges even though the signal isn't bad.




I tried to ubirename partitions (mtd13's rootfs_data -> zeroes, mtd14's data -> rootfs_data) to try to make mount_root to use "proper" partition for overlay, but system became don't come back after reboot (although, it switched blue led, which should mean "boot finished" :man_shrugging:)

@robimarko, I'm about to try to migrate @nand partitioning scheme in ax3600's dtsi from qcom,smem-part to fixed-partitions with manual definition (also adding additional partition for remaining 140M and trying to use mtd-concat for stock rootfs+overlay partitions, although, I still have idea how to describe autodetection of rootfs partition to merge with overlay one).

How do you think, will that be acceptable, or it should stay using SMEM-based partitioning and I should invent some another way?

I can just tell you that mtd-concat wont fly here, also you cant just merge the rootfs and overlay as you have 2 rootfs partitions.

btw, guys on IRC (say, PaulFerster, AFAIU, he's wiki admin) says it can be pretty acceptable to make OpenWRT to boot only from first rootfs partition and hardcode it's merging in dts. But I dislike that idea, actually (although, I still found no way to avoid that)

Well, that's his opinion.
You do understand that you won't be able to get this working in an optimal way without modifying the actual sysupgrade logic?

What needs to be done (and its partially done in the hAP ac3 PR) is to separate the kernel and rootfs, so you can install the kernel to one partition and rootfs to another.
Then you can just utilize the remaining half of the NAND for rootfs and keep the kernel in the previous rootfs partitions which would obviously be renamed.

As I understand all your tests where in upload direction (WLAN->LAN). And I see exactly the same results with my AX200, upload speed drops very suddenly few meters from router. But download speed still ~500Mbits/sec in next room.

I think same problem cause my phone to totally lose internet connection, but WiFi signal remain strong and connects everywhere without problem.
You could run same tests in "restart" branch and would get a lot better results for upload at a distance. Also no such issue in AC mode.

Also tried to test 160Mhz with latest firmware, but got same results (800-900Mbps) in WLAN-LAN test. Then tried to run iperf3 server on router and by increasing parallel threads managed to push iperf3 up to 1.20 Gbits/sec (Router->WLAN). Link speed was 2.4Gbps an no core was more than 50% so don't know what was limiting the speed.


Ok, so to summarize it: WIfi uplink is where you see the issue on the backport branch. In this case, you can use the Signal/Noise indicator to compare the two variants from the same spot. Make sure that noone is around the tested device and noone is inbetween the router and device when you test. This way you can test if there is any receive power difference between the two branches. Make sure that you run some low speed constant traffic (like pinging with 1000bytes) during the test, so the devices are not going to power save mode.

@dchard They pushed a WLAN.HK. release for QCN9074.
Changelog says:

6G FCC/ETSI AWGN certification bug fixes are present from
previous release. There are no backward comatibility issues
with this release.

Potentially others should receive the updated FW as well.

I am already on WLAN.HK. for a couple days now, works quite nicely.

Yeah I know, but this is WLAN.HK. its just that their commit title is copy/paste

Is this compatible with ipq807x?

No, I posted it as most likely IPQ8074 FW will get updates as well soon


Yeah, its a bit misleading as the title is WLAN.HK. but the file name is WLAN.HK.

I see your point now, lets see if we can get any updates next week. Kinda hoped for a 2.6.x.x release :slight_smile:

MOD: btw version has this in its changelog:
Segmented memory is supported for 0-32M memory range.

Not sure what this is, or does it needs any support on the driver side.

If you are referring to 01100 for QCN9074 then yeah, that is how they fixed it to work at all as previously it will request the whole 45M of memory in one chunk and that would fail in like 90+% of cases


Did the kmod-qca-nss-drv-bridge-mgr module solve all your roaming issues ?

I haven‘t updated since it is included. Probably about time…

I can't compare signal with "restart" branch because somehow it does not show it.
But I think I can compare AC and AX mode signals in "backports" branch and they are exactly the same.
For me it looks more like some AX uplink feature bug, maybe with MIMO or beamforming.

@Gingernut I think you tested download speeds, could you test upload speed at some distance? In your screenshot I see uplink as "48.0 Mbits/s, 20MHz" which could indicate slow upload speed.
@dchard have you tested any AX client device?
And anyone else getting good upload speed in latest "backports" branch at a distance more than 3-5 meters in 5GHz AX mode with AX client device?