Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hzyitc/openwrt-redmi-ax3000
Openwrt for Redmi AX3000 / Xiaomi CR880x / Xiaomi CR881x
https://github.com/hzyitc/openwrt-redmi-ax3000
ipq5000 ipq5018 ipq50xx openwrt redmi-ax3000 xiaomi-cr880x xiaomi-cr881x
Last synced: 12 days ago
JSON representation
Openwrt for Redmi AX3000 / Xiaomi CR880x / Xiaomi CR881x
- Host: GitHub
- URL: https://github.com/hzyitc/openwrt-redmi-ax3000
- Owner: hzyitc
- License: other
- Fork: true (openwrt/openwrt)
- Created: 2022-12-01T17:18:18.000Z (almost 2 years ago)
- Default Branch: ipq50xx-mainline-kernel-5.15-openwrt-23.05
- Last Pushed: 2024-07-27T19:05:48.000Z (4 months ago)
- Last Synced: 2024-08-01T18:25:48.947Z (3 months ago)
- Topics: ipq5000, ipq5018, ipq50xx, openwrt, redmi-ax3000, xiaomi-cr880x, xiaomi-cr881x
- Language: C
- Homepage:
- Size: 895 MB
- Stars: 395
- Watchers: 11
- Forks: 82
- Open Issues: 24
-
Metadata Files:
- Readme: README.md
- License: COPYING
Awesome Lists containing this project
README
# openwrt-redmi-ax3000
`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`](https://github.com/hzyitc/openwrt-redmi-ax3000/tree/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`](https://github.com/hzyitc/openwrt-redmi-ax3000/tree/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) | ✔️ | ✔️ | ✔️ | ❌ | ⚠️ Without `NSS Offload` | See Note¹
⚠️ Without `NSS Offload` |
| Redmi AX3000
Xiaomi CR880x
(M81 version) | ✔️ | ✔️ | ✔️ | ❌ | ⚠️ Without `NSS Offload` | See Note¹
⚠️ Without `NSS Offload` |
| Xiaomi CR881x | ✔️ | ✔️ | ✔️ | ❌ | ⚠️ Without `NSS Offload` | See Note¹
⚠️ Without `NSS Offload` |
| CMCC RAX3000Q | ⚠️ No test ⚠️ |
>
> NOTE¹: For 160MHz, `Country Code`, `Width` and `Channel` need 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
> ```## How to build
OS: `Ubuntu 20.04 (focal)`
```bash
# 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)
```## How to install
### Get `UART` access
> Input from `UART` will be allowed after a successful `TFTP recovery`.
1. Connect `UART` and `LAN`.
2. Download the vendor firmware:
Offical website: https://www.miwifi.com/miwifi_download.html
| Device | URL |
| :-: | :-: |
| Redmi AX3000 | https://cdn.cnbj1.fds.api.mi-img.com/xiaoqiang/rom/ra81/miwifi_ra81_firmware_1dd69c_1.0.33.bin |
| Xiaomi CR8806 | https://cdn.cnbj1.fds.api.mi-img.com/xiaoqiang/rom/cr8806/miwifi_cr8806_firmware_fe70b_6.2.14.bin |
| Xiaomi CR8808 | https://cdn.cnbj1.fds.api.mi-img.com/xiaoqiang/rom/cr8808/miwifi_cr8808_firmware_9d216_6.2.11.bin |
| Xiaomi CR8809 | https://cdn.cnbj1.fds.api.mi-img.com/xiaoqiang/rom/cr8809/miwifi_cr8809_firmware_b814a_6.2.102.bin |3. Use [`MIWIFIRepairTool`](https://bigota.miwifi.com/xiaoqiang/tools/MIWIFIRepairTool.x86.zip) to recover the device's firmware.
Offical tutorial: https://www.xiaomi.cn/post/19134127
> This tool simply does `TFTP recovery`. You can use other `DHCP` and `TFTP` server as well.
>
> Here are some useful links:
>
>> https://forum.openwrt.org/t/adding-openwrt-support-for-xiaomi-redmi-router-ax6s-xiaomi-router-ax3200/111085/513
>>
>> https://github.com/mikeeq/xiaomi_ax3200_openwrt#uart-flash
>>
>> https://openwrt.org/inbox/toh/xiaomi/xiaomi_ax3600#tftp_recovery4. Hold the `reset` button and reboot the router until the `system` LED blink.
5. Wait until the firmware being flashed.
6. Unplug then plug back in the power.
7. Send any key stroke to `UART` to interrupt the `U-boot`.
8. Run the following command inside `U-boot`:
```shell
setenv boot_wait on
setenv uart_en 1
saveenv
```Now we have enabled `UART`.
### Flash Openwrt
#### a. Use `U-boot` to flash
Download [`openwrt-ipq50xx-arm-redmi_ax3000-squashfs-nand-factory.ubi`](https://github.com/hzyitc/openwrt-redmi-ax3000/releases/latest/download/openwrt-ipq50xx-arm-redmi_ax3000-squashfs-nand-factory.ubi) and put it into TFTP root.
Then run the following command inside `U-boot`:
```shell
# 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
reset
```#### b. Use `miwifi` (the vendor firmware) to flash
```bash
cd /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
reboot
```## Related links
[`openwrt/openwrt`](https://github.com/openwrt/openwrt) - Openwrt official repository
[`qsdk`](https://git.codelinaro.org/clo/qsdk) - QSDK official repository
[`quic/qca-sdk-nss-fw`](https://github.com/quic/qca-sdk-nss-fw) - NSS firmware
[`quic/upstream-wifi-fw`](https://github.com/quic/upstream-wifi-fw) - WiFi firmware
[`qca/qca-swiss-army-knife`](https://github.com/qca/qca-swiss-army-knife) - BDF tools
[`Telecominfraproject/wlan-ap`](https://github.com/Telecominfraproject/wlan-ap) - another Openwrt which support `ipq50xx`