Openwrt for Redmi AX3000 / Xiaomi CR880x / Xiaomi CR881x
!!! NOTE: This is the main development branch which using mainline Linux LTS 5.15 !!!
If you need more stable versions, please checkout the following branches which using QSDK kernel
- ipq50xx-qsdk-kernel-5.4-openwrt-21.02-qsdk-11.5.05.841.1029
- ipq50xx-qsdk-kernel-4.4-openwrt-21.02-qsdk-11.4.0.5.7418
| Device | Boot | Switch | CPU Ethernet | NSS NAT | 2.4G WiFi | 5G WiFi | 
|---|---|---|---|---|---|---|
| Xiaomi CR880x (M79 version) | ✔️ | ✔️ | ✔️ | ❌ | NSS Offload | See Note¹ NSS Offload | 
| Redmi AX3000 Xiaomi CR880x (M81 version) | ✔️ | ✔️ | ✔️ | ❌ | NSS Offload | See Note¹ NSS Offload | 
| Xiaomi CR881x | ✔️ | ✔️ | ✔️ | ❌ | NSS Offload | See Note¹ NSS Offload | 
| CMCC RAX3000Q | 
NOTE¹: For 160MHz,
Country Code,WidthandChannelneed to be set correctly. And wait 1 minute for radar detection, then the WiFi will be appeareed.uci -q batch <<-EOF wireless.radio1.country='CN' wireless.radio1.htmode='HE160' wireless.radio1.channel='64' EOF
OS: Ubuntu 20.04 (focal)
# Install dependencies
sudo apt update
sudo apt install build-essential clang flex g++ gawk gcc-multilib gettext \
  git libncurses5-dev libssl-dev python3-distutils rsync unzip zlib1g-dev
# Clone this repo
git clone https://github.com/hzyitc/openwrt-redmi-ax3000
cd openwrt-redmi-ax3000
# Update and install feeds
./scripts/feeds update -a
./scripts/feeds install -a
# Configure
make menuconfig
# Download
make -j16 download
# Build
make -j$(nproc)Input from
UARTwill be allowed after a successfulTFTP recovery.
- 
Connect UARTandLAN.
- 
Download the vendor firmware: Offical website: https://www.miwifi.com/miwifi_download.html 
- 
Use MIWIFIRepairToolto recover the device's firmware.Offical tutorial: https://www.xiaomi.cn/post/19134127 This tool simply does TFTP recovery. You can use otherDHCPandTFTPserver as well.Here are some useful links: https://github.com/mikeeq/xiaomi_ax3200_openwrt#uart-flash https://openwrt.org/inbox/toh/xiaomi/xiaomi_ax3600#tftp_recovery 
- 
Hold the resetbutton and reboot the router until thesystemLED blink.
- 
Wait until the firmware being flashed. 
- 
Unplug then plug back in the power. 
- 
Send any key stroke to UARTto interrupt theU-boot.
- 
Run the following command inside U-boot:setenv boot_wait on setenv uart_en 1 saveenv 
Now we have enabled UART.
Download openwrt-ipq50xx-arm-redmi_ax3000-squashfs-nand-factory.ubi and put it into TFTP root.
Then run the following command inside U-boot:
# This router ip
setenv ipaddr 192.168.1.2
# TFTP server ip
setenv serverip 192.168.1.1
# Download the firmware to the RAM
tftpboot openwrt-ipq50xx-arm-redmi_ax3000-squashfs-nand-factory.ubi
# Flash it as system 2
flash rootfs_1
setenv flag_try_sys2_failed 0
setenv flag_boot_rootfs 1
setenv flag_last_success 1
saveenv
# Flash it as system 1
# flash rootfs
# setenv flag_try_sys1_failed 0
# setenv flag_boot_rootfs 0
# setenv flag_last_success 0
# saveenv
# Reboot
resetcd /tmp
wget https://github.com/hzyitc/openwrt-redmi-ax3000/releases/latest/download/openwrt-ipq50xx-arm-redmi_ax3000-squashfs-nand-factory.ubi
# Check your partition table
# cat /proc/mtd
[[ "$(grep '"rootfs"' /proc/mtd | cut -d':' -f1)" == "mtd18" ]] || exit
[[ "$(grep '"rootfs_1"' /proc/mtd | cut -d':' -f1)" == "mtd19" ]] || exit
# Detect the current system slot and flash into the other one
# cat /proc/cmdline
mtd="$(grep -oE 'ubi.mtd=[a-zA-Z0-9\-\_]*' /proc/cmdline | cut -d'=' -f2)"
if [[ "$mtd" == "rootfs" ]]; then
	# Flash it as system 2
	ubiformat /dev/mtd19 -f openwrt-ipq50xx-arm-redmi_ax3000-squashfs-nand-factory.ubi
	nvram set flag_try_sys2_failed=0
	nvram set flag_boot_rootfs=1
	nvram set flag_last_success=1
	nvram commit
elif [[ "$mtd" == "rootfs_1" ]]; then
	# Flash it as system 1
	ubiformat /dev/mtd18 -f openwrt-ipq50xx-arm-redmi_ax3000-squashfs-nand-factory.ubi
	nvram set flag_try_sys1_failed=0
	nvram set flag_boot_rootfs=0
	nvram set flag_last_success=0
	nvram commit
fi
# Reboot
rebootopenwrt/openwrt - Openwrt official repository
qsdk - QSDK official repository
quic/qca-sdk-nss-fw - NSS firmware
quic/upstream-wifi-fw - WiFi firmware
qca/qca-swiss-army-knife - BDF tools
Telecominfraproject/wlan-ap - another Openwrt which support ipq50xx