Skip to content

Commit a6e802c

Browse files
committed
Add Readme
1 parent dfc4ca2 commit a6e802c

File tree

1 file changed

+161
-60
lines changed

1 file changed

+161
-60
lines changed

README.md

Lines changed: 161 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,87 +1,188 @@
1-
![OpenWrt logo](include/logo.png)
1+
# openwrt-redmi-ax3000
2+
3+
`Openwrt` for `Redmi AX3000` / `Xiaomi CR8806` / `Xiaomi CR8808` / `Xiaomi CR8809`
4+
5+
**!!! NOTE: This is the main development branch which using mainline `Linux LTS 5.4` !!!**
6+
7+
If you need more stable versions, please checkout the following branches which using QSDK kernel
8+
- [`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)
9+
- [`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)
10+
11+
| Device | Boot | Switch | CPU Ethernet | NSS NAT | 2.4G WiFi | 5G WiFi |
12+
| :-: | :-: | :-: | :-: | :-: | :-: | :-: |
13+
| Redmi AX3000 | ❓ No test |
14+
| Xiaomi CR8806 | ✔️ | ✔️ | ✔️ || ⚠️ Unstable | ✔️¹ |
15+
| Xiaomi CR8808 | ✔️ | ✔️ | ✔️ || ⚠️ Unstable | ✔️¹ |
16+
| Xiaomi CR8809 | ❓ No test |
17+
> NOTE¹: For 160MHz, `Country Code` and `Width` need to be set correctly. And wait 1 minute for radar detection, then the WiFi will be appeareed.
18+
>
19+
> ```
20+
> uci -q batch <<-EOF
21+
> wireless.radio1.country='CN'
22+
> wireless.radio1.channel='64'
23+
> EOF
24+
> ```
25+
26+
## How to build
27+
28+
OS: `Ubuntu 20.04 (focal)`
29+
30+
```bash
31+
# Install dependencies
32+
sudo add-apt-repository ppa:npalix/coccinelle
33+
sudo apt update
34+
sudo apt install build-essential clang flex g++ gawk gcc-multilib gettext \
35+
git libncurses5-dev libssl-dev python3-distutils rsync unzip zlib1g-dev \
36+
coccinelle
37+
38+
# Clone this repo
39+
git clone https://github.com/hzyitc/openwrt-redmi-ax3000
40+
cd openwrt-redmi-ax3000
41+
42+
# Update and install feeds
43+
./scripts/feeds update -a
44+
./scripts/feeds install -a
45+
46+
# Configure
47+
make menuconfig
48+
49+
# Download
50+
make -j16 download
51+
52+
# Build
53+
make -j$(nproc)
54+
```
255

3-
OpenWrt Project is a Linux operating system targeting embedded devices. Instead
4-
of trying to create a single, static firmware, OpenWrt provides a fully
5-
writable filesystem with package management. This frees you from the
6-
application selection and configuration provided by the vendor and allows you
7-
to customize the device through the use of packages to suit any application.
8-
For developers, OpenWrt is the framework to build an application without having
9-
to build a complete firmware around it; for users this means the ability for
10-
full customization, to use the device in ways never envisioned.
56+
## How to install
1157

12-
Sunshine!
58+
### Get `UART` access
1359

14-
## Development
60+
> Input from `UART` will be allowed after a successful `TFTP recovery`.
1561
16-
To build your own firmware you need a GNU/Linux, BSD or MacOSX system (case
17-
sensitive filesystem required). Cygwin is unsupported because of the lack of a
18-
case sensitive file system.
62+
1. Connect `UART` and `LAN`.
1963

20-
### Requirements
64+
2. Download the vendor firmware:
2165

22-
You need the following tools to compile OpenWrt, the package names vary between
23-
distributions. A complete list with distribution specific packages is found in
24-
the [Build System Setup](https://openwrt.org/docs/guide-developer/build-system/install-buildsystem)
25-
documentation.
66+
Offical website: https://www.miwifi.com/miwifi_download.html
2667

27-
```
28-
gcc binutils bzip2 flex python3 perl make find grep diff unzip gawk getopt
29-
subversion libz-dev libc-dev rsync which
30-
```
68+
| Device | URL |
69+
| :-: | :-: |
70+
| Redmi AX3000 | https://cdn.cnbj1.fds.api.mi-img.com/xiaoqiang/rom/ra81/miwifi_ra81_firmware_1dd69c_1.0.33.bin |
71+
| Xiaomi CR8806 | https://cdn.cnbj1.fds.api.mi-img.com/xiaoqiang/rom/cr8806/miwifi_cr8806_firmware_fe70b_6.2.14.bin |
72+
| Xiaomi CR8808 | https://cdn.cnbj1.fds.api.mi-img.com/xiaoqiang/rom/cr8808/miwifi_cr8808_firmware_9d216_6.2.11.bin |
73+
| Xiaomi CR8809 | https://cdn.cnbj1.fds.api.mi-img.com/xiaoqiang/rom/cr8809/miwifi_cr8809_firmware_b814a_6.2.102.bin |
74+
75+
3. Use [`MIWIFIRepairTool`](https://bigota.miwifi.com/xiaoqiang/tools/MIWIFIRepairTool.x86.zip) to recover the device's firmware.
76+
77+
Offical tutorial: https://www.xiaomi.cn/post/19134127
78+
79+
> This tool simply does `TFTP recovery`. You can use other `DHCP` and `TFTP` server as well.
80+
>
81+
> Here are some useful links:
82+
>
83+
>> https://forum.openwrt.org/t/adding-openwrt-support-for-xiaomi-redmi-router-ax6s-xiaomi-router-ax3200/111085/513
84+
>>
85+
>> https://github.com/mikeeq/xiaomi_ax3200_openwrt#uart-flash
86+
>>
87+
>> https://openwrt.org/inbox/toh/xiaomi/xiaomi_ax3600#tftp_recovery
3188

32-
### Quickstart
89+
4. Hold the `reset` button and reboot the router until the `system` LED blink.
3390

34-
1. Run `./scripts/feeds update -a` to obtain all the latest package definitions
35-
defined in feeds.conf / feeds.conf.default
91+
5. Wait until the firmware being flashed.
3692

37-
2. Run `./scripts/feeds install -a` to install symlinks for all obtained
38-
packages into package/feeds/
93+
6. Unplug then plug back in the power.
3994

40-
3. Run `make menuconfig` to select your preferred configuration for the
41-
toolchain, target system & firmware packages.
95+
7. Send any key stroke to `UART` to interrupt the `U-boot`.
4296

43-
4. Run `make` to build your firmware. This will download all sources, build the
44-
cross-compile toolchain and then cross-compile the GNU/Linux kernel & all chosen
45-
applications for your target system.
97+
8. Run the following command inside `U-boot`:
4698

47-
### Related Repositories
99+
```shell
100+
setenv boot_wait on
101+
setenv uart_en 1
102+
saveenv
103+
```
48104

49-
The main repository uses multiple sub-repositories to manage packages of
50-
different categories. All packages are installed via the OpenWrt package
51-
manager called `opkg`. If you're looking to develop the web interface or port
52-
packages to OpenWrt, please find the fitting repository below.
105+
Now we have enabled `UART`.
53106

54-
* [LuCI Web Interface](https://github.com/openwrt/luci): Modern and modular
55-
interface to control the device via a web browser.
107+
### Flash Openwrt
56108

57-
* [OpenWrt Packages](https://github.com/openwrt/packages): Community repository
58-
of ported packages.
109+
#### a. Use `U-boot` to flash
59110

60-
* [OpenWrt Routing](https://github.com/openwrt/routing): Packages specifically
61-
focused on (mesh) routing.
111+
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.
62112

63-
## Support Information
113+
Then run the following command inside `U-boot`:
64114

65-
For a list of supported devices see the [OpenWrt Hardware Database](https://openwrt.org/supported_devices)
115+
```shell
116+
# This router ip
117+
setenv ipaddr 192.168.1.2
118+
# TFTP server ip
119+
setenv serverip 192.168.1.1
66120

67-
### Documentation
121+
# Download the firmware to the RAM
122+
tftpboot openwrt-ipq50xx-arm-redmi_ax3000-squashfs-nand-factory.ubi
123+
124+
# Flash it as system 2
125+
flash rootfs_1
126+
setenv flag_try_sys2_failed 0
127+
setenv flag_boot_rootfs 1
128+
setenv flag_last_success 1
129+
saveenv
130+
131+
# Flash it as system 1
132+
# flash rootfs
133+
# setenv flag_try_sys1_failed 0
134+
# setenv flag_boot_rootfs 0
135+
# setenv flag_last_success 0
136+
# saveenv
137+
138+
# Reboot
139+
reset
140+
```
141+
142+
#### b. Use `miwifi` (the vendor firmware) to flash
143+
144+
```bash
145+
cd /tmp
146+
wget https://github.com/hzyitc/openwrt-redmi-ax3000/releases/latest/download/openwrt-ipq50xx-arm-redmi_ax3000-squashfs-nand-factory.ubi
147+
148+
# Check your partition table
149+
# cat /proc/mtd
150+
[[ "$(grep '"rootfs"' /proc/mtd | cut -d':' -f1)" == "mtd18" ]] || exit
151+
[[ "$(grep '"rootfs_1"' /proc/mtd | cut -d':' -f1)" == "mtd19" ]] || exit
152+
153+
# Detect the current system slot and flash into the other one
154+
# cat /proc/cmdline
155+
mtd="$(grep -oE 'ubi.mtd=[a-zA-Z0-9\-\_]*' /proc/cmdline | cut -d'=' -f2)"
156+
if [[ "$mtd" == "rootfs" ]]; then
157+
# Flash it as system 2
158+
ubiformat /dev/mtd19 -f openwrt-ipq50xx-arm-redmi_ax3000-squashfs-nand-factory.ubi
159+
nvram set flag_try_sys2_failed=0
160+
nvram set flag_boot_rootfs=1
161+
nvram set flag_last_success=1
162+
nvram commit
163+
else if [[ "$mtd" == "rootfs_1" ]]; then
164+
# Flash it as system 1
165+
ubiformat /dev/mtd18 -f openwrt-ipq50xx-arm-redmi_ax3000-squashfs-nand-factory.ubi
166+
nvram set flag_try_sys1_failed=0
167+
nvram set flag_boot_rootfs=0
168+
nvram set flag_last_success=0
169+
nvram commit
170+
fi
171+
172+
# Reboot
173+
reboot
174+
```
68175
69-
* [Quick Start Guide](https://openwrt.org/docs/guide-quick-start/start)
70-
* [User Guide](https://openwrt.org/docs/guide-user/start)
71-
* [Developer Documentation](https://openwrt.org/docs/guide-developer/start)
72-
* [Technical Reference](https://openwrt.org/docs/techref/start)
176+
## Related links
73177
74-
### Support Community
178+
[`openwrt/openwrt`](https://github.com/openwrt/openwrt) - Openwrt official repository
75179
76-
* [Forum](https://forum.openwrt.org): For usage, projects, discussions and hardware advise.
77-
* [Support Chat](https://webchat.oftc.net/#openwrt): Channel `#openwrt` on **oftc.net**.
180+
[`qsdk`](https://git.codelinaro.org/clo/qsdk) - QSDK official repository
78181
79-
### Developer Community
182+
[`quic/qca-sdk-nss-fw`](https://github.com/quic/qca-sdk-nss-fw) - NSS firmware
80183
81-
* [Bug Reports](https://bugs.openwrt.org): Report bugs in OpenWrt
82-
* [Dev Mailing List](https://lists.openwrt.org/mailman/listinfo/openwrt-devel): Send patches
83-
* [Dev Chat](https://webchat.oftc.net/#openwrt-devel): Channel `#openwrt-devel` on **oftc.net**.
184+
[`quic/upstream-wifi-fw`](https://github.com/quic/upstream-wifi-fw) - WiFi firmware
84185
85-
## License
186+
[`qca/qca-swiss-army-knife`](https://github.com/qca/qca-swiss-army-knife) - BDF tools
86187
87-
OpenWrt is licensed under GPL-2.0
188+
[`Telecominfraproject/wlan-ap`](https://github.com/Telecominfraproject/wlan-ap) - another Openwrt which support `ipq50xx`

0 commit comments

Comments
 (0)