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

Hello everyone,

I would like to gather experiences from users who have installed OpenWRT 23.05.5 on the Xiaomi AX3200 RB01 (international version) and are using WireGuard. Specifically, I'm interested in the stability and reliability of the connection. What connection speeds have you achieved? Any insights or recommendations based on your experiences would be greatly appreciated.

Thank you in advance!

1 Like

what is your config at /etc/config/bridger? can you post it?

The radio part:


config wifi-device 'radio1'
	option type 'mac80211'
	option phy 'wl1'
	option band '5g'
	option channel '108'
	option htmode 'HE80'
	option cell_density '0'
	option country 'DE'
	option txpower '20'
	option beacon_int '101'
	option he_bss_color '8'
	option he_su_beamformee '1'

And the SSID-part:

config wifi-iface 'wifinet3'
	option device 'radio1'
	option mode 'ap'
	option ssid 'NAME'
	option encryption 'sae-mixed'
	option key 'PASSWD'
	option ieee80211r '1'
	option mobility_domain '11ab'
	option ft_over_ds '1'
	option network 'br11_int'
	option ocv '0'

And the output of the WED commands again:


root@ax3200-mitte:~# opkg install bridger
Package bridger (2024.04.22~40b1c5b6) installed in root is up to date.
root@ax3200-mitte:~# cat /sys/module/mt7915e/parameters/wed_enable
Y
root@ax3200-mitte:~# cat /sys/kernel/debug/ppe0/bind
root@ax3200-mitte:~# cat /sys/kernel/debug/mtk_ppe/bind
cat: can't open '/sys/kernel/debug/mtk_ppe/bind': No such file or directory

EDIT: Sorry I thought you wanted /etc/wireless/config. Now heres the bridger one. I'm running just a default config here:

config defaults
	# handle bridge local rx/tx
	option bridge_local_tx 1
	option bridge_local_rx 0

	# example for blacklisting individual devices or bridges
	# list blacklist eth0

This was on a different AP though, where I get around 600-700Mbit via WiFi. The other one I posted before has issues (Download seems capped at 25Mbps, Upload works as usual to around 200-300Mbps). The WiFi config is the exact same between the APs though

1 Like

I've checked WireGuard on previous OpenWrt version just to see how it works on the AX3200. It was decent enough, can achieve at around 150 Mbps (on that specific connection and setup) and worked reliably enough with Cloudflare.

However, I could only get IPv4 working on it.

My suggestion however is to use WireGuard or Cloudflare Warp on each device needed if you have to, rather than on the OpenWrt AX3200 router. This seems to work much better and will get an IPv6 for each device also

1 Like

I've been using the wg-server on AX3200 for several years, and it's been working steadily, in my opinion. The speed loss on clients is insignificant.

1 Like

Thank you very much for your answers.

I use WG on an AX6S (same hardware as the AX3200) connected to a NanoPi R6S linking two networks via a WG router-router VPN tunnel.

It works reliably and flawlessly. I can saturate my ISP connection - one point is 500/250 and other point is 700/350, so measuring point-to-point via iperf3 I can get ~300 Mbps via WG tunnel between the two networks. For example, the iperf3 below is going through a WG tunnel between two OpenWrt routers (one AX6S 192.168.2.x and ohter R6S 192.168.1.x):

$ iperf3 -c ap1-router.home 
Connecting to host ap1-router.home, port 5201
[  5] local 192.168.1.151 port 53136 connected to 192.168.2.1 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  33.8 MBytes   283 Mbits/sec  162    164 KBytes       
[  5]   1.00-2.00   sec  35.9 MBytes   301 Mbits/sec    1    238 KBytes       
[  5]   2.00-3.00   sec  37.1 MBytes   311 Mbits/sec   64    156 KBytes       
[  5]   3.00-4.00   sec  34.0 MBytes   285 Mbits/sec    1    232 KBytes       
[  5]   4.00-5.00   sec  36.3 MBytes   305 Mbits/sec   30    163 KBytes       
[  5]   5.00-6.00   sec  34.9 MBytes   293 Mbits/sec   67    166 KBytes       
[  5]   6.00-7.00   sec  36.9 MBytes   310 Mbits/sec   46    159 KBytes       
[  5]   7.00-8.00   sec  33.4 MBytes   280 Mbits/sec    2    167 KBytes       
[  5]   8.00-9.00   sec  39.9 MBytes   334 Mbits/sec   39    224 KBytes       
[  5]   9.00-10.00  sec  37.3 MBytes   313 Mbits/sec   71    154 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   359 MBytes   302 Mbits/sec  483             sender
[  5]   0.00-10.00  sec   358 MBytes   301 Mbits/sec                  receiver

I sometimes connect clients (such as laptops and smarrphones) directly to these wireguard servers as well. AX6S is behind an IPv4 CGNAT, so I am using IPv6 to establish the WG tunnel which works fine (of course it requires IPv6 connectivity on the client to establish the WG tunnel, and the IPv4 traffic is tunneled via the WG IPv6 link).

2 Likes

Hi everyone,

I've been reading the forum and the official installation guide, and I've gotten to this point. I'm looking to consult about your experiences with installing OpenWrt 24.10.

I successfully installed OpenWrt version 23.05.5 on my Xiaomi AX3200 RB01. After 10 reboots, everything seems to be working fine, and it appears that the bootloader commands executed correctly.

However, I encountered an mtd partitions offset issue. When I ran the command:

fw_printenv | grep -e ^flag_try -e ^boot_fw

I got the following output:

boot_fw0=run boot_rd_img;bootm
boot_fw1=run boot_rd_img;bootm
flag_try_sys1_failed=1
flag_try_sys2_failed=0

To resolve this, I executed:

fw_setenv boot_fw1 'run boot_rd_img;bootm'

which fixed the issue and allowed me to install the sysupgrade update.

Now, I'm planning to update to version 24.10 using the following commands:

  1. Flash the factory image using mtd (recommended):

    I obtained the download file address from firmware-selector.openwrt.org because I couldnā€™t find it in the official repositories. (Any problems with this? I also noticed that the sysupgrade image was available there.)

    Download the factory image on the router and rename it to factory.bin. For example:

    cd /tmp
    wget -O factory.bin "https://firmware-selector.openwrt.org/?version=24.10.0&target=mediatek%2Fmt7622&id=xiaomi_redmi-router-ax6s"
    
  2. Then flash the new layout:

    mount -o remount,ro /
    mount -o remount,ro /overlay
    cd /tmp
    dd if=factory.bin bs=1M count=4 | mtd write - kernel
    dd if=factory.bin bs=1M skip=4 | mtd -r write - ubi
    

For reference, hereā€™s some information that others have shown with cat /proc/mtd:

dev:    size   erasesize  name
mtd0: 00080000 00020000 "Preloader"
mtd1: 00040000 00020000 "ATF"
mtd2: 00080000 00020000 "u-boot"
mtd3: 00040000 00020000 "u-boot-env"
mtd4: 00040000 00020000 "bdata"
mtd5: 00080000 00020000 "factory"
mtd6: 00040000 00020000 "crash"
mtd7: 00040000 00020000 "crash_log"
mtd8: 00400000 00020000 "kernel"
mtd9: 06f00000 00020000 "ubi"

Iā€™d also like to note that I only executed the NVRAM commands (to fix the bootloader) before installing OpenWrt 23.05.5, and I havenā€™t applied them again since. Is it necessary to run them again after updating or if I update to version 24.10?

I would like to hear about your installation experiences, especially regarding the mtd partitions offset issue I encountered and whether that could cause any problems now or in subsequent upgrades, and if anyone has run into any problems later with installing the squashfs-sysupgrade image for version 24.10.

Thanks in advance for your help!

1 Like

I was able to successfully install 24.10.0, restored a backup, everything looked OK... and it bricked after a reboot. Not cool. Wait for 24.10.1 would be my advice for the moment. I think 23.05 is working fine for now.

2 Likes

Could you elaborate, what did you resolve?
Argument of fw_setenv is exactly the same string as was before.

Perhaps I misinterpreted the guide, as English is not my native language. As I understood, the guide states: "If match both it should be safe to sysupgrade."īˆ†

boot_fw0=run boot_rd_img;bootm
boot_fw1=run boot_rd_img;bootm
flag_try_sys1_failed=0
flag_try_sys2_failed=0

īˆ†

Seeing that boot_fw0 and boot_fw1 matched (run boot_rd_img;bootm), but flag_try_sys1_failed and flag_try_sys2_failed were not both equal to 0 (I had flag_try_sys1_failed=1), I thoughtā€”perhaps this is where I misinterpretedā€”that the command fw_setenv boot_fw1 'run boot_rd_img;bootm' somehow provided a fix for the issue and allowed me to perform the sysupgrade. So far, 48 stable hours have passed, including two unavoidable reboots due to power outages, with good performance and Wi-Fi. Let's hope it remains stable and doesn't brick.īˆ†

If boot_fw1=run boot_rd_img2;bootm you can temporary fix by add fw_setenv boot_fw1 'run boot_rd_img;bootm' at startup

In my understanding, this fw_setenv command changes boot_fw1 environment variable from boot_rd_img2 to boot_rd_img. That is, it changes boot sequence.

I am not an expert in OpenWRT development and still have to guess what they mean.