Adding OpenWrt support for Xiaomi AX3600

Its not helpfull at all, whole kernel source has already been out for a long time.

OK thanks, clear :wink:

@Ansuel This should make it rather easy to port CPR for IPQ807x as well.


Today I found out, that madvise is not implemented in stock kernel. And that's a problem to run some stuff with Entware on this router. Is there any method to rebuild or reconfigure kernel?

Unless you have NDA with Qualcomm to rebuild everything then no.
And please, this is for OpenWrt/upstream work on AX3600/IPQ807x

1 Like

A bit late to the party, but I wrote a guide on how to gain persistent ssh access on the device. I know it doesn't help anyone with the efforts to port OpenWRT to AX3600, but at least you people would be able to easily gain SSH access to the device:

The post is part of a series on the weird stuff Xiaomi put on the device: from port scanning to a custom dnsmasq build with none-standard (quite peculiar) flags, and of course: how to turn them all off.


FYI: Xiaomi ax3600 ssh guide

you're guide is great, a lot of the info as already in diferent post but this puts it all together, something that is not working fro me is the telnet root passwd...

It gets the password from the SN but its not accepting it, I've also attempted to put the older password but no luck either, its running firmware 3.0.2, and telnet is enabled, It just doens't like the password, I wonder if they changed something in the algoritm in this version

Finally had some time to play around and use 5.10-RC6 backports from Hauke, unfortunately, it still shows.
It still shows chip_id 0x0 chip_family 0x0 board_id 0xff soc_id 0xffffffff for ath11k.
This is incorrect as my IPQ6018 board has a board_id populated, 0xff is just a placeholder if QMI call does not return a valid response.
My guess is that caldata is messed by default and that is the reason why board-id is defined in DTS, unfortunatelly ath11k does not have a DT property for that.
It also still does not advertise VHT at all.

1 Like

Doesn't sound too good. Are there any approaches to get it working either way?

I am sure that there should be, but this is all unchartered teritory as nothing is documented.
I was able to force the correct board ID and manually load the board.bin from Xiaomi, but it still does not populate VHT and will crash the kernel as soon as the radio starts.
20 MHz works but 40 and VHT variants will crash the driver and kernel.

Hi robimarko,

would "qcom,board_id" maybe the right dts node?, as mentioned here:

for example as in:

&wifi0 {

qcom,board_id = <0x92>;


&wifi1 {

qcom,board_id = <0x292>;
1 Like

And this looks interesting as well

@kirdes That does not work as ath11k does not parse the board-id property at all.
Calibration variant will be important later once bdencoder tool is released.

I have been playing around with this the whole day and I have not been able to make any progress.
My time is limited to weekends only and I really cant do this alone.

1 Like

Your latest guides and your github tools on the AX3600 were extremely helpful. Thank you!

Could you please expand on the usage or possibly a tutorial on the postman.json.

Looking forward to your next writeup.

Maybe @Ansuel can help? Haven't heard from him in a while though


I hit the same issues with my initial porting attempt, was hoping it was some issue with ath11k at the time.

Its limiting that we only have this one IPQ807X device to look at built on top of QSDK, as this either could be common to all or unique to the AX 3600

Yeah, as we don't know if Xiaomi is doing something that it should not or ath11k is broken.
I was planning on sending an email to the ath11k mailing list, it's relatively active and probably the only place that can help us.


Yeah defiantly worth a shot, it may be worth looking at the QMI calls from qsdk / qcom -wifi and what they do with board ID (If I get chance at lunch ill have a quick look).

They simply hardcode the board ID in the DTS, ath11k in QSDK allows you to do that.
But, that alone would not cause the issues we have.