Adding OpenWrt support for Xiaomi AX3600 (Part 1)

Hmm, it works for me on the Qnap, so it could be BDF-s, I would be shocked if they did not break so far.
Will try a generic one from QCA when they push the 2.7 BDF-s.

pls don't tell me the bdf cause remote proc to die...

I would be shocked if those did not break, I mean they are from the 2.0 FW times

They managed to upload the new FW before they release the BDFs? How nice :wink:

Well, miracles happen, they did not upload a new ath11k FW for like 4-5 months

If this is what we suspect, I can also take a generic one for FW 2.6 and try with that as well. It is suspicious that both 2.6 and 2.7 crashes exactly the same and it works for you. Likely the 301w BDF is based on a newer template.

1 Like

are we sure this is bdf related? it seems strange to me that remoteproc crash... i messed with bdf and the crash was from ath11k not remoteproc (i had a clear crash message from ath11k)

https://forum.openwrt.org/t/adding-openwrt-support-for-xiaomi-ax3600/55049/7895?u=dchard

You can see the log on the above link. I am not a 100% sure its the firmware crashing, but the log messages suggest that. Other than that, you are the expert :slight_smile:

yep it's the bdf..... well think we have to report that to ath11k... they added other assert to the bdf and they made probably new feature mandatory...

1 Like

There are 2.6.0.1-00828 FW and DBF matching versions.

Hi, I just reverted back to Xiaomi rom and I was quite surprised. I know the speed of the 2.4 GHz band is not of a concern to many of us. We all probably don't expect any crazy speed on this band and care more about 5GHz.

To my surprise, my OpenWRT (ath11k) was about 50 to 100 % faster than Xiaomi rom on 2.4 GHz. :open_mouth: Unfortunately, I have no rigorous tests saved from OpenWRT. How come ath11k is so much faster (on the same channel, same width, same power) than QSDK? The speed of 5 GHz seems slightly lower on OpenWRT and a bit shaky, but not heaps. I want to also test the Xiaomi Mesh (seems to be WDS) and OpenWRT (WDS, Batman or 802.11s), but so far, OpenWRT has been stable on my AX6 (at least my builds from the end of 05/2022 and from about 23/06/2022) and there doesn't seem to be any point in staying with the Xiaomi rom, maybe apart from the half/full duplex.

Nice work guys! Particularly @robimarko and @Ansuel.

6 Likes

Those crash as well. Tested it yesterday. 2.7.0.1 BDFs are not out yet, so we cant test that, but I also tried the 2.6.0.1 BDF with 2.5.0.1 firmware, it does boot successfully, radios do start, signal can be detected, but I was not able to make any association to either the 2.4 and 5G radios. No messages of any kind in the log.

So the assumption is that cause may be the BDF at least partially. Further investigation is needed for sure.

MOD: BDF 2.6.0.1 with FW 2.7.0.1 also makes the same crash.

MOD2: BDF 2.5.0.1 with FW 2.5.0.1 is producing the same issue as before: radios do start, no error messages, but the clients cannot connect to it. If this is the case even with the official BDF for the specific device ID, then there must be some data missing, or feature flags missing in the BDF used by Xiaomi. As the downlink signal looks fine, there must be something with the uplink, for example LNAs not turned on or something like that. My devices uses board ID 658, and I tried BDF ID 658, so some more additional settings are different between the two.

2 Likes

For the last two (?) weeks my iPhone 13 has no internet connection, although it is connected to the WLAN (ax - 5Ghz - 80 MHz). All other devices work fine e.g. MacBook (ax).

As soon as I switch from ax back to ac, it works again. Does anyone else have this issue? (Running the latest version of robimarko)

Update
Cause: mesh wifi (802.11s)
When deactivating the mesh wifi (802.11s), my iPhone has again connection to the internet (ax, 80 MHz) even at greater distance.

One difference is that QNAP-301w uses the default board ID qcom,board_id = <0xff>; and AX3600/AX6 use qcom,board_id = <658>;

I don't know how this works, but do you know if it makes any difference to the new FW versions, if you define/use the default <0xff> in ipq8071-ax3600.dtsi and not our board ID ?


EDIT: I tried it and it didn't work.

Very strange. My iPhone has internet connection as soon as it is in close proximity to the router, as soon as it is 3 meters away, or something is in between, no internet connection.

Once I switch back to "ac", everything works fine.

The following error message came to my attention:

[   67.440571] br-lan: port 6(wlan1) entered blocking state
[   67.440621] br-lan: port 6(wlan1) entered disabled state
[   67.445302] device wlan1 entered promiscuous mode
[   73.551006] IPv6: ADDRCONF(NETDEV_CHANGE): wlan1: link becomes ready
[   73.551241] br-lan: port 6(wlan1) entered blocking state
[   73.556446] br-lan: port 6(wlan1) entered forwarding state
[  260.858081] NAPI poll function edma_tx_napi+0x0/0xf0 [qca_nss_dp] returned 77, exceeding its budget of 64.
[ 1205.604854] ath10k_pci 0000:01:00.0: 10.1 wmi init: vdevs: 16  peers: 127  tid: 256
[ 1205.611818] ath10k_pci 0000:01:00.0: wmi print 'P 128 V 8 T 410'
[ 1205.611867] ath10k_pci 0000:01:00.0: wmi print 'msdu-desc: 1424  sw-crypt: 0 ct-sta: 0'
[ 1205.617682] ath10k_pci 0000:01:00.0: wmi print 'alloc rem: 25560 iram: 24780'
[ 1205.665313] ath10k_pci 0000:01:00.0: pdev param 0 not supported by firmware
[ 1205.670264] ath10k_pci 0000:01:00.0: rts threshold -1

edit: just compiled without "CONFIG_PACKAGE_nss-firmware-ipq8074=y" and still the same problem with loss of internet connection

Update
Cause: mesh wifi (802.11s)
When deactivating the mesh wifi (802.11s), my iPhone has again connection to the internet (ax, 80 MHz) even at greater distance.

Hi, just a quick question, @webzit's issue has probably priority.

We don't need to include nss-firmware-ipq8074 in the compilation anymore? I have kept compiling including it until I noticed that the current releases don't include it anymore.

Wasn't there once something with bss coloring?

I am more thinking of the incorrect beamformee chain settings, which is fixed on AC but not yet fixed on AX.

Just discovered: When switching from 80 MHz to 160 Mhz it works again (AX, Channel 36). But second AX3600 (mesh) won't connect.

config:

cat /etc/config/wireless 
#
config wifi-device 'radio0'
	option type 'mac80211'
	option path 'soc/20000000.pci/pci0000:00/0000:00:00.0/0000:01:00.0'
	option htmode 'HT40'
	option band '2g'
	option channel 'auto'
	option cell_density '0'
	option country 'AT'
	option legacy_rates '1'
	option disabled '1'

config wifi-device 'radio1'
	option type 'mac80211'
	option path 'platform/soc/c000000.wifi'
	option band '5g'
	option cell_density '0'
	option country 'AT'
	option channel '36'
	option txpower '24'
	option htmode 'HE80'

config wifi-device 'radio2'
	option type 'mac80211'
	option path 'platform/soc/c000000.wifi+1'
	option band '2g'
	option cell_density '0'
	option channel 'auto'
	option country 'AT'
	option txpower '24'
	option htmode 'HE20'

config wifi-iface 'wifinet3'
	option device 'radio1'
	option mode 'mesh'
	option encryption 'sae'
	option mesh_id '***'
	option mesh_fwding '1'
	option mesh_rssi_threshold '0'
	option key '***'
	option network 'lan'

config wifi-iface 'wifinet4'
	option device 'radio2'
	option mode 'ap'
	option ssid '*** (iot)'
	option isolate '1'
	option key '***'
	option wpa_disable_eapol_key_retries '1'
	option encryption 'sae-mixed'
	option network 'lan'

config wifi-iface 'wifinet5'
	option device 'radio1'
	option mode 'ap'
	option ssid '***'
	option encryption 'sae'
	option key '***'
	option wpa_disable_eapol_key_retries '1'
	option network 'lan'

Update
Cause: mesh wifi (802.11s)
When deactivating the mesh wifi (802.11s), my iPhone has again connection to the internet (ax, 80 MHz) even at greater distance.

Luci -> "channel analysis" also does not seem to work when a mesh wifi is enabled on the 5Ghz AX network.

I'm using "wpad-mesh-wolfssl"

	echo "CONFIG_TARGET_ipq807x=y" > .config
	echo "CONFIG_TARGET_ipq807x_generic=y" >> .config
	echo "CONFIG_TARGET_MULTI_PROFILE=y" >> .config
	echo "CONFIG_TARGET_ALL_PROFILES=y" >> .config
	echo "CONFIG_TARGET_PER_DEVICE_ROOTFS=y" >> .config
	echo "CONFIG_TARGET_ROOTFS_INITRAMFS=y" >> .config
	echo "CONFIG_TARGET_INITRAMFS_COMPRESSION_ZSTD=y" >> .config
	echo "CONFIG_PACKAGE_luci=y" >> .config
	echo "CONFIG_PACKAGE_kmod-qca-nss-dp=y" >> .config
	echo "CONFIG_PACKAGE_qca-ssdk-shell=y" >> .config
	#echo "CONFIG_PACKAGE_nss-firmware-ipq8074=y" >> .config
	echo "CONFIG_PACKAGE_kmod-wireguard=y" >> .config
	echo "CONFIG_PACKAGE_wireguard-tools=y" >> .config
	echo "CONFIG_PACKAGE_luci-app-wireguard=y" >> .config
	echo "CONFIG_PACKAGE_htop=y" >> .config
	echo "CONFIG_PACKAGE_wpad-basic-wolfssl=m" >> .config
	echo "CONFIG_PACKAGE_wpad-wolfssl=y" >> .config
	echo "CONFIG_PACKAGE_wpad-mesh-wolfssl=y" >> .config
	echo "CONFIG_PACKAGE_iperf3=y" >> .config
	echo "CONFIG_PACKAGE_luci-app-https-dns-proxy=y" >> .config
	echo "CONFIG_PACKAGE_https-dns-proxy=y" >> .config
	echo "CONFIG_PACKAGE_luci-app-sqm=y" >> .config
	echo "CONFIG_PACKAGE_nano=y" >> .config
	echo "CONFIG_PACKAGE_luci-app-unbound=y" >> .config
	echo "CONFIG_PACKAGE_luci-app-adblock=y" >> .config
	echo "CONFIG_PACKAGE_luci-ssl=y" >> .config
	echo "CONFIG_PACKAGE_qrencode=y" >> .config
	echo "CONFIG_PACKAGE_curl=y" >> .config
	echo "CONFIG_PACKAGE_luci-app-ddns=y" >> .config
	echo "CONFIG_PACKAGE_ddns-scripts=y" >> .config
	echo "CONFIG_PACKAGE_vpn-policy-routing=y" >> .config
	echo "CONFIG_PACKAGE_luci-app-vpn-policy-routing=y" >> .config
	echo "CONFIG_PACKAGE_luci-app-uhttpd=y" >> .config
	echo "CONFIG_PACKAGE_fping=y" >> .config
	echo "CONFIG_PACKAGE_ddns-scripts-cloudflare=y" >> .config
	echo "CONFIG_PACKAGE_luci-mod-rpc=y" >> .config
	echo "CONFIG_PACKAGE_rpcd-mod-file=y" >> .config
	echo "CONFIG_PACKAGE_uhttpd-mod-ubus=y" >> .config
	echo "CONFIG_PACKAGE_luci-app-statistics=y" >> .config
	echo "CONFIG_PACKAGE_drill=y" >> .config

@dchard
These two BDFs work in AX3600, with Robi latest FW from 2022-06-29:
https://git.codelinaro.org/clo/qsdk/oss/ath11k-bdf/-/tree/master/IPQ8074/hw2.0/WLAN.HK.2.6.0.1

Looks like they made a mistake and have the same file stored under different version descriptions. Downloading both files board-2.bin (will all boards) shows that they are the same, so I don't know what is the version I'm using. :slight_smile: I will look in other repos.

I extracted board-id=658 from above and created the new board-2.bin using board-2.json (extracted from Robi latest FW board-2.bin).
The only test I made, was connecting my phone and doing speedtest 500/100.

With the new board-2.bin BDF working, The firmware 2.6.0.1-00861, 2.6.0.1-00828 or 2.7.0.1-01701 still give an exception.

2 Likes