Adding OpenWrt support for Xiaomi "Redmi Router AX6S"/"Xiaomi Router AX3200"

Yes you can use any combination if properly configured.
I use a mix of openwrt x86 with OPNsense and one ax3200 as dap + vlans so i can have SSID from both openwt x86 and OPNsense.
Works a treat.

Hi @KuDDlowski !, I'm stuck in the reset step, no matter what I do, I'm unable to get to the U-Boot Console, even when disconnecting during the erasing step.
so I tried the xmir-patcher instead, was able to enable ssh but when using the option menu 7 - Install firmware (from directory "firmware") it fails at the end

Detect valid SSH server on port 22 (auth OK)
Image files in directory "firmware/":
  "firmware/openwrt-22.03.5-mediatek-mt7622-xiaomi_redmi-router-ax6s-squashfs-factory.bin"
Download file: "/tmp/dmesg.log" ....
Download file: "/tmp/mtd_list.txt" ....
Download file: "/tmp/kcmdline.log" ....
rootfs.num = 0

FIT size = 0x39CE7C (3699 KiB)
FIT name = "ARM64 OpenWrt FIT (Flattened Image Tree)"
FIT: UBI offset = 0x400000
Download file: "/tmp/bl_uboot.bin" ....
Download file: "/tmp/env_Nvram.bin" ....
Download file: "/tmp/env_Bdata.bin" ....
Download file: "/tmp/env_Preloader.bin" ....
current flag_boot_rootfs = 0
Upload file: "tmp/fw/fitubi.bin" ....
Run scripts for change NVRAM params...
Boot from partition "firmware" activated.
Writing kernel image to addr 0x002C0000 ...
  mtd -e "firmware" write "/tmp/fitubi.bin" "firmware"

ERROR: TEST is over

could you point me to the right direction? what did you do? which firmware worked for you?
thanks!

reboot the router from the program (9), then connect to the router again and follow step 7

I used the same firmware file and got the same "ERROR: TEST is over" message but it still installed the firmware :sweat_smile:

fixed (github)

I've updated to the latest snapshot.I don't undeerstand why I have 4 WiFi APs here

Now this is a common problem with all routers, do not update.

Make a backup of /etc/config/wireless somewhere, the remove it and reboot the router.
After reboot, check how new config looks like and apply your network changes.

It doesn’t work at all, and if you get the Internet via Wi-Fi, then it’s a tragedy. The maximum that can be achieved is the visibility of networks during scanning, but not connection to them. This is even with a clean installation of the firmware, without any restoration (saving) of the settings.

Don't have such issue on my AX3200, but I did not make factory reset.
What snapshot version you use? Did you create own one via firmware-selector?

There are different revisions of routers. This is China.
Whatever is currently in stock is soldered.))) A month's snapshot assembly worked well on a 2021 router, but on a 2023 router it does not work, just like the newest one assembled by a selector.

Which OpenWrt version you are on? I'm on 22.03 and whenever I switch my 5G to 160Mhz, it gets disabled and I've to change it back to 80Mhz or lower to get it work again. Anyone having this issue?

1 Like

Try to change channel to 100 or above and of course wait for DFS scanning to finish.

Not working. I tried AX 160Mhz and channels above 100. Still it gets disabled

1 Like

Could you show /etc/config/wireless config file?

Hi, my output with hex dump is:
root@XiaoQiang:~# hexdump /dev/mtd8 | head
0000000 ffff ffff ffff ffff ffff ffff ffff ffff
*
0040000
root@XiaoQiang:~#

How can i make a sysupgrade without UART? I have unlocked telnet only without flashing openwrt.. (stock fw 1.0.35 hw RB01)

That hexdump stuff is for OpenWrt ... where /dev/mtd8 means kernel.
Therefore, to check the same on stock fw, you need to do hexdump /dev/mtd10 | head!

See flash layout on the wiki for the details about stock and OpenWrt partitions!

Thanks! I have two ax3200 rb01, the same output:
root@XiaoQiang:~# hexdump /dev/mtd10 | head
0000000 0dd0 edfe 2800 .......
They are ok to upgrade. I can proceed. :pray:

Have some updates. first of all, I had a problem with my soldering, the pins weren't contacting the PCB correctly.
secondly, I was using py-serial to connect via serial, then when switched to minicom I realized that py-serial didn't rendered the menu correctly.
finally, as KuDDlowski mentioned, The firmware was uploaded successfully.

Sadly, my progress ends there. when I issued tftpboot, the router keep looping

F0: 102B 0000
F6: 0000 0000
V0: 0000 0000 [0001]
00: 0000 0000
BP: 0000 0041 [0000]
G0: 0190 0000
T0: 0000 036E [000F]
Jump to BL

UNIVPLL_CON0 = 0xFE000000!!!
mt_pll_init: Set pll frequency for 25M crystal
[PMIC_WRAP]wrap_init pass,the return value=0.
[pmic_init] Preloader Start..................
[pmic_init] MT6380 CHIP Code, reg_val = 0, 1:E2  0:E3
[pmic_init] Done...................
Chip part number:7622B
MT7622 Version: 1.2.8, (iPA)
SSC OFF
mt_pll_post_init: mt_get_cpu_freq = 1350000Khz
mt_pll_post_init: mt_get_mem_freq = 1600000Khz
mt_pll_post_init: mt_get_bus_freq = 279980Khz
[PLFM] Init I2C: OK(0)

[BLDR] Build Time: 20210316-161525
==== Dump RGU Reg ========
RGU MODE:     4D
RGU LENGTH:   FFE0
RGU STA:      0
RGU INTERVAL: FFF
RGU SWSYSRST: 8000
==== Dump RGU Reg End ====
RGU: g_rgu_satus:0
 mtk_wdt_mode_config  mode value=10, tmp:22000010
PL P ON
WDT does not trigger reboot
WDT NONRST=0x20000000
WDT IRQ_EN=0x340003
RGU mtk_wdt_init:MTK_WDT_DEBUG_CTL(590200F3)
[EMI] MDL number = 2
[EMI] DRAMC calibration start


F0: 102B 0000
F6: 0000 0000
V0: 0000 0000 [0001]
00: 0000 0000
BP: 0000 0041 [0000]
G0: 0190 0000
T0: 0000 036E [000F]
Jump to BL
.
.
.

It never ends the calibration step, just starts over.
Tried to reboot (unplug and replug), with and without holding the reset button, but ether way, the same message keeps appearing.
also, when connecting a ethernet cable in any of the ports, I don't get any status on the other side (no flashing lights on the ethernet card on the tftp server)
So I guess I bricked it.
there is any alternative method to recover? maybe flashing directly the SPI chip?
at the wiki page there is a mention:

but does not details a procedure. and I haven't found much information about the SPI flashing process.
so I'm hoping for a recover alternative
thank you all for any help!

My apologies for the extremely late reply, @xabolcs . My flag and boot variables look like this. Mind you, I read these while booted into OpenWRT already. And after the reboot it would not boot anymore. I have tried this up to 10 times now. Each time having to debrick via tftp and then flashing via telnet. I am quite lost why it boots fine the first time, but fails to boot each subsequent boot attempt.

boot_auto=bootxq
boot_fw0=run boot_rd_img;bootm
boot_fw1=run boot_rd_img2;bootm
boot_rd_img=nand read ${loadaddr} 0x2C0000 2000;image_blks 2048;nand read ${loadaddr} 0x2C0000 ${img_align_size}
boot_rd_img2=nand read ${loadaddr} 0x20C0000 2000;image_blks 2048;nand read ${loadaddr} 0x20C0000 ${img_align_size}
boot_wait=on
bootargs=console=ttyS0,115200n1 loglevel=8 swiotlb=512 rootfstype=squashfs firmware=0 uart_en=1
bootcmd=bootxq
bootdelay=5
bootmenu_0=1. Load firmware 0 and bootup.=run boot_fw0
bootmenu_1=2. Load firmware 1 and bootup.=run boot_fw1
bootmenu_2=3. Load firmware selected by Xiaoqiang and bootup.=run boot_auto
bootmenu_delay=30

and

flag_boot_rootfs=0
flag_boot_success=1
flag_boot_type=2
flag_last_success=0
flag_ota_reboot=0
flag_try_sys1_failed=0
flag_try_sys2_failed=0