文章目录
前言
在上一篇文章已经介绍了在普通路由器上使用ShellCrash实现科学上网的办法,使用也是没有一点问题。
说来也巧,正好家里老人说家里网络信号不是很好,我就说不是宽带的问题,是因为路由器信号覆盖的原因导致他们一直觉得网络不好,最好的办法就是加一台路由器实现全屋覆盖。
于是查阅了一番资料,计划找一台信号还行的,而且最好是能够刷OpenWrt的路由器,于是就决定选择:红米AX6000。
| 维度 | 优势 (Pros) | 劣势 (Cons) |
|---|---|---|
| 处理器性能 | MT7986A (Filogic 830) 四核 2.0GHz,算力极其强悍,AES 跑分极高,适合高带宽插件运行。 | 暂无明显短板,但在处理极重度的 Docker 应用时,仍不如 X86 架构的软路由。 |
| OpenWrt 兼容性 | 社区宠儿。拥有极其成熟的开源驱动,刷机后无线信号(WiFi)强度几乎无损。 | 刷机过程需要先开启 SSH,对纯小白有一定门槛(虽然教程已经非常多)。 |
| 网络规格 | 满血 WiFi 6。支持 4×4 160MHz,无线总速率达 6000Mbps,多设备连接非常稳定。 | 缺少 2.5G 网口。所有网口均为千兆,如果家里有 2000M 宽带或万兆 NAS,会有瓶颈。 |
| 内存/存储 | 512MB RAM + 128MB Flash。在同价位中属于高配,能同时运行多个大型插件。 | 128MB 闪存虽够用,但如果要安装大量软件,可能需要通过挂载虚拟内存或分区调整。 |
| 散热与做工 | 散热格栅设计合理,发热控制极佳,夏天长时间高负载运行也不易降频。 | 体积大。外壳塑料感较强,且天线不可拆卸,非常占用弱电箱或桌面空间。 |
| 性价比 | 价格比较亲民,硬件规格直逼千元级竞品。 | 二手市场非常保值,价格波动小。 |
选购事项
新机好像已经买不到了,淘个二手就行,目前市场价大概在300元。
特别注意:
-
不是小米AX6000,必须是红米AX6000
-
背面的型号是 RB06,不是 RB04
特别声明
1.刷机有风险,请务必了解相关风险后再决定是否刷机!
2.刷机前建议对购买的设备进行初始化!
3.本教程基于官方文档进行操作,文档可能会更新,请优先阅读官方文档:[OpenWrt Wiki] Xiaomi Redmi AX6000
4.刷机有2种方式,Stock 和 U-Boot ,优劣见下表,官方先通过刷stock,再刷U-Boot,可以有效过渡,更加安全。不建议新手直接学论坛的一步到位刷U-Boot!
| 项目 | Stock Layout | U‑Boot Layout |
|---|---|---|
| 是否保留原厂分区 | ✔ 是 | ✘ 否 |
| 是否能恢复原厂固件 | ✔ 可以 | ✘ 无法直接恢复 |
| 是否修改 bootloader | ✘ 不修改 | ✔ 会替换 BL2/FIP |
| OpenWrt 可用空间 | 较小 | 最大化 |
| 安装难度 | 较低 | 较高 |
| 恢复方式 | 原厂 TFTP / Recovery Tool | OpenWrt U‑Boot 自动 TFTP |
| 风险 | 低 | 高(可能变砖) |
5.目前最新的stable版本为 24.10.5,下文相关链接均使用该版本的固件,如不同版本,请访问官方相关链接进行下载。
为什么建议官方文档?
各路大神的固件虽好,但是相应的刷机教程其实不尽完善,而且OpenWrt版本非常多,刷不同版本的可能方法也有些许不同,况且刷机本身也有风险,我们选择刷纯净的官方版本,需要的插件可以后续自行安装。
前期准备
1. 设备
1.红米AX6000路由器
2.一台电脑(能插网线的各系统都行)
2. 固件应用
1.访问 Index of /releases/24.10.5/targets/mediatek/filogic/,搜索 ax6000 ,找到相关的8个文件,下载下来。
2.下载路由器降级程序:miwifi_rb06_firmware_847e9_1.0.48.bin
3.下载kmod-mtd-rw.ipk
建议分类整理好:
stock的3个文件,u-boot的5个文件,降级的1个文件以及 1个kmod-mtd-rw.ipk
连接
将电脑与路由器的LAN口进行连接,确保能够访问 http://192.168.31.1,如果不行,修改电脑的IPv4地址为此网段的其他任一地址。
降级
降级的目的是为了获得 root / telnet / ssh 权限。
在路由器后台,上传固件,选择下载的 miwifi_rb06_firmware_847e9_1.0.48.bin,默认会阻止降级,将URL中的downgrade=0改为downgrade=1回车,我这边是downgrade=1改为downgrade=2,强制继续降级。
获取token
降级完成后访问路由器后台进行初始化设置,正常下一步即可。
设置完成后回到路由器后台,URL中可以看到 token 的值,不需要保存,这个值每次重启后都会变,在下一步打开开发者/调试模式时,要稍微注意。
Root
1. 启用开发者/调试模式
在URL的 token 值后面粘贴以下代码并回车:
/api/misystem/set_sys_time?timezone=%20%27%20%3B%20echo%20pVoAAA%3D%3D%20%7C%20base64%20-d%20%7C%20mtd%20write%20-%20crash%20%3B%20
得到输出: "code":0
添加的URL就相当于执行了
echo pVoAAA== | base64 -d | mtd write - crash,也就是把特定字节写入 crash 分区,从而让路由器进入开发者模式,为后续开启 telnet/ssh 和刷机做准备
接着还是在 token 值后面粘贴以下代码并回车:
/api/misystem/set_sys_time?timezone=%20%27%20%3b%20reboot%20%3b%20
重启设备的意思
2. 修改Bdata
修改 bdata 分区中的 telnet_en、ssh_en 和 uart_en 字段,可以永久获得设备的访问权限。
刷新浏览器, stock 已经变更了,在其后面继续输入:
/api/misystem/set_sys_time?timezone=%20%27%20%3B%20bdata%20set%20telnet_en%3D1%20%3B%20bdata%20set%20ssh_en%3D1%20%3B%20bdata%20commit%20%3B%20
还是输出: "code":0
相当于执行了:
bdata set telnet_en=1→ 在 bdata 分区里把 telnet 开关设为 1(开启)
bdata set ssh_en=1→ 把 ssh 开关设为 1(开启)
bdata commit→ 保存修改到 bdata 分区(写入闪存)
3. 关闭开发者/调试模式
重新进入路由器后台, stock 后输入:
/api/misystem/set_sys_time?timezone=%20%27%20%3b%20mtd%20erase%20crash%20%3b%20
即运行
mtd erase crash命令,擦除 crash 分区。其实这一步也可以不做,后续要刷OpenWrt,不再打算回到 OEM 系统了。
4. 修复SSH
现在这个版本的SSH是坏的,要修复它,通过telnet命令连接路由器进行修复。
在电脑的终端输入:telnet 192.168.31.1 ,密码为空或者路由器管理密码。
系统终端如果不带telnet工具,自行搜索安装方法即可。
进入终端后修复 dropbear 文件:
vi /etc/init.d/dropbear
找到并删除下面3行代码:
if [ "$flg_ssh" != "1" -o "$channel" = "release" ]; then
return 0
fi
因为没有联网,所以无法直接使用官方的一行代码方式修复:
## 联网可用 cd /etc/init.d/ && rm -rf dropbear && curl https://gist.githubusercontent.com/AmirulAndalib/4046f133f66b100d9bf2156dfd84afe8/raw/dropbear >> dropbear && chmod +x dropbear && cd ~
接着输入 /etc/init.d/dropbear start 启动dropbear。
顺带着输入
passwd root设置root账户密码,后面上传文件需要。
5. 修复ssh-rsa算法(根据实际情况)
据说Windows端的 MobaXterm 工具可以跳过这一步,直接连接。(未验证)
MacOS的 Tabby 以及 Termius ,能连接SSH,但是无法连接SFTP,建议就乖乖使用系统自带的终端通过
scp命令上传。
系统自带的终端,一般其 SSH 客户端太新,不兼容小米原厂固件里的旧 dropbear。
需要在自己电脑上修改 SSH 配置,让它接受旧算法。在自己电脑的终端上修改:
vi ~/.ssh/config ## Windows的目录可能是C:\Users\<你的用户名>\.ssh\config
添加以下内容:
Host 192.168.31.1
HostKeyAlgorithms=+ssh-rsa
PubkeyAcceptedAlgorithms=+ssh-rsa
安装OpenWrt(stock)
上传 openwrt-{version}-mediatek-filogic-xiaomi_redmi-router-ax6000-stock-initramfs-factory.ubi 到路由器的 /tmp 目录。
用系统自带终端的话就用 scp 命令上传:
scp -O openwrt-{version}-mediatek-filogic-xiaomi_redmi-router-ax6000-stock-initramfs-factory.ubi root@192.168.31.1:/tmp
后面上传就不多赘述了,命令格式都是一样的
scp -O <本地文件路径> root@<路由器IP>:/tmp
1. 查看系统信息
cat /proc/cmdline
输出大致为:
console=ttyS0,115200n1 loglevel=8 firmware=1 uart_en=1
确认 firmware=0 还是 1 。
2. 刷initramfs
一、如果是:firmware=1,输入下面的代码:
nvram set boot_wait=on
nvram set uart_en=1
nvram set flag_boot_rootfs=0
nvram set flag_last_success=0
nvram set flag_boot_success=1
nvram set flag_try_sys1_failed=0
nvram set flag_try_sys2_failed=0
nvram commit
接着刷入固件:
ubiformat /dev/mtd8 -y -f /tmp/openwrt-{version}-mediatek-filogic-xiaomi_redmi-router-ax6000-stock-initramfs-factory.ubi
二、如果是:firmware=0,输入下面的代码:
nvram set boot_wait=on
nvram set uart_en=1
nvram set flag_boot_rootfs=1
nvram set flag_last_success=1
nvram set flag_boot_success=1
nvram set flag_try_sys1_failed=0
nvram set flag_try_sys2_failed=0
nvram commit
接着刷入固件:
ubiformat /dev/mtd9 -y -f /tmp/openwrt-{version}-mediatek-filogic-xiaomi_redmi-router-ax6000-stock-initramfs-factory.ubi
这一步可以直接跳到刷写U-Boot的OpenWrt,为了演示我们还是按照官方流程走
最后,重启路由器:reboot。
3. 固定启动分区
这一步已经刷完了initramfs,重启后已经是openwrt的网关:192.168.1.1。
为了“锁定 OpenWrt 启动分区”,防止路由器回滚到小米原厂系统。继续登陆SSH,输入以下命令:
fw_setenv boot_wait on
fw_setenv uart_en 1
fw_setenv flag_boot_rootfs 0
fw_setenv flag_last_success 1
fw_setenv flag_boot_success 1
fw_setenv flag_try_sys1_failed 8
fw_setenv flag_try_sys2_failed 8
fw_setenv mtdparts "nmbm0:1024k(bl2),256k(Nvram),256k(Bdata),2048k(factory),2048k(fip),256k(crash),256k(crash_log),30720k(ubi),30720k(ubi1),51200k(overlay)"
4. 刷sysupgrade
上传 openwrt-{version}-mediatek-filogic-xiaomi_redmi-router-ax6000-stock-squashfs-sysupgrade.bin 到 /tmp 目录,输入以下命令:
sysupgrade -n /tmp/openwrt-{version}-mediatek-filogic-xiaomi_redmi-router-ax6000-stock-squashfs-sysupgrade.bin
这边特别注意的是,上传使用的
scp命令是在电脑自带终端执行的,刷固件的sysupgrade是在路由器的终端界面执行的。
等待重启,这一步已经可以正常使用stock的OpenWrt了。
但是为了最大化合理分配空间,我们接下来继续刷 U-Boot 的OpenWrt。
安装OpenWrt(U-Boot)
0. 删除host key
由于之前连接过 192.168.1.1 的SSH,现在刷完后重新连接,会出现验证失败的提示:
需要先修改删除 host key,让终端认为这是新的设备:
vi ~/.ssh/known_hosts
找到并删除相关的 192.168.1.1 的信息:
1. 备份系统
cat /dev/mtdblock0 > /tmp/BL2.bin
cat /dev/mtdblock1 > /tmp/Nvram.bin
cat /dev/mtdblock2 > /tmp/Bdata.bin
cat /dev/mtdblock3 > /tmp/Factory.bin
cat /dev/mtdblock4 > /tmp/FIP.bin
将这几个文件下载下来保存到本地。
2. 刷initramfs
上传 openwrt-{version}-mediatek-filogic-xiaomi_redmi-router-ax6000-ubootmod-initramfs-factory.ubi 到 /tmp 目录,然后输入以下命令:
ubiformat /dev/mtd7 -y -f /tmp/openwrt-{version}-mediatek-filogic-xiaomi_redmi-router-ax6000-ubootmod-initramfs-factory.ubi
接着reboot重启路由器,查看分区信息:
root@OpenWrt:~ cat /proc/mtd
dev: size erasesize name
mtd0: 00100000 00020000 BL2
mtd1: 00040000 00020000 Nvram
mtd2: 00040000 00020000 Bdata
mtd3: 00200000 00020000 Factory
mtd4: 00200000 00020000 FIP
mtd5: 07a80000 00020000 ubi
mtd5分区 的名字应该为 ubi。
3. 加载kmod-mtd-rw
上传之前下载的 kmod-mtd-rw.ipk 到 /tmp并安装:
opkg install /tmp/kmod-mtd-rw.ipk
接着加载:
insmod /lib/modules/$(uname -r)/mtd-rw.ko i_want_a_brick=1
4. 清空日志
清空 pstore(持久化崩溃日志)里的所有 crash dump,不清空的话可能会触发自动恢复机制。
rm -f /sys/fs/pstore/*
5. 创建环境变量分区
这两个分区是:OpenWrt U-Boot 的环境变量存储区
-
ubootenv是主环境变量 -
ubootenv2是备份环境变量
ubidetach -p /dev/mtd5; ubiformat /dev/mtd5 -y; ubiattach -p /dev/mtd5
ubimkvol /dev/ubi0 -n 0 -N ubootenv -s 128KiB
ubimkvol /dev/ubi0 -n 1 -N ubootenv2 -s 128KiB
错误信息: ubidetach: error!: cannot detach "/dev/mtd5" error 19 (No such device) 的意思是,命令试图把 mtd5 分区从系统里“卸载”掉,但系统发现它本来就没挂载。
这边就应该提示这个错误信息,可以忽略,其实已经成功了。
6. 创建恢复系统(可以跳过)
不想占用空间的话,可以不创建。
我这边也是没有创建的。
ubimkvol /dev/ubi0 -n 2 -N recovery -s 10MiB
ubiupdatevol /dev/ubi0_2 /tmp/ax6000-ubootmod-initramfs-recovery.itb
7. 刷U-Boot
最后就是刷系统了,上传 ax6000-ubootmod-preloader.bin 和 ax6000-ubootmod-bl31-uboot.fip 到 /tmp 目录,输入以下命令:
mtd write /tmp/ax6000-ubootmod-preloader.bin BL2
mtd write /tmp/ax6000-ubootmod-bl31-uboot.fip FIP
8. 刷sysupgrade
上传 openwrt-{version}-mediatek-filogic-xiaomi_redmi-router-ax6000-ubootmod-squashfs-sysupgrade.itb 到 /tmp 目录,输入以下命令:
sysupgrade -n /tmp/openwrt-{version}-mediatek-filogic-xiaomi_redmi-router-ax6000-ubootmod-squashfs-sysupgrade.itb
等待系统自动重启。
完成
重启后应该就能正式使用OpenWrt了。
最后
说来本来想写个文章,但是写着写着发现完全就是照抄官方的文档,期间也没有遇到任何问题。搞得这篇文章好像是个翻译文一样,😮💨😮💨😮💨😮💨😮💨😮💨。
不过第一次尝试刷系统,还挺有意思的,就是简单了点。
另外就是这个路由器无法外接USB,也就是无法进行扩容,稍微装2个插件,感觉已经不剩多少空间了,稍微有点焦虑。。。
扩展:使用udpxy播放IPTV
这个可以说是非常搞的一件事情,稍微记录一下。
之前因为华硕路由器只需在路由器后台的IPTV页面开启并且设置单播的端口即可,现在换到OpenWrt需要自行设置,而且由于接口比较多,有点绕,研究了好一会儿才搞定。
1. 安装luci-app-udpxy
在系统-软件包,搜索并安装 luci-app-udpxy 。
2. 建立IPTV专用接口(最关键的一步)
udpxy 需要一个有 IP 地址的接口来和运营商通信。物理 WAN 口默认没 IP,所以我们需要新建一个,不然就是网络是通的,但是没有IP与其通信,它不会发送任何数据到本地。
-
位置:
网络->接口->添加新接口。 -
基本设置:
-
名称:
IPTV_WAN(名字随意)。 -
协议:DHCP 客户端 (从光猫获取内网 IP)。
-
设备:选择
wan(即连接光猫的那个物理接口,不要选pppoe-wan)。
-
-
高级设置 (防止断网的关键):
-
使用默认网关:❌ 取消勾选 (必须取消,否则会抢占宽带网关导致上不了网)。
-
使用对端通告的 DNS:❌ 取消勾选。
-
-
防火墙设置:
- 选择
wan区域 (为了方便管理,和宽带接口放在一起即可)。
- 选择
-
保存:保存后,确保该接口获取到了 IP (如
192.168.1.3或10.x.x.x)。
3. 配置防火墙
-
位置:
网络->防火墙->通信规则。 -
添加规则 1 (IGMP):
-
名称:
Allow-IGMP -
协议:IGMP
-
源区域:
wan -
目标区域:此设备 (Device/Input)
-
动作:接受 (Accept)
-
-
添加规则 2 (UDP):
-
名称:
Allow-UDP-Multicast -
协议:UDP
-
源区域:
wan -
目标区域:此设备 (Device/Input)
-
目标地址:
224.0.0.0/4(可选,填了更精准) -
动作:接受 (Accept)
-
-
保存并应用。
4. 配置 udpxy
-
位置:
服务->udpxy。 -
启用:勾选。
-
Respawn:勾选。
-
端口:
4022(或者自定义)。 -
组播订阅源接口 (Source Interface):
- 手动输入:
IPTV_WAN(填你在第二阶段新建的那个接口名)。
- 手动输入:
-
绑定 IP/接口:
0.0.0.0或br-lan。(默认未指定也行) -
保存并应用。
5. 验证
假设组播地址是:rtp://239.1.1.1:8000
那么单播地址就是: http://<路由器IP>:<udpxy端口>/rtp/239.1.1.1:8000
应该就可以正常播放了。
扩展:Wi-Fi信号增强
OpenWrt 为了“守法”和“通用性”,默认把发射功率限制得很低(通常限制在 100mW / 20dBm 甚至更低)。我这边默认安装好之后是 20dBm,信号强度真的一般般。
要释放满血信号,需要简单设置。
1. 修改国家代码
-
进入 “网络” (Network) -> “无线” (Wireless)。
-
分别编辑 2.4GHz 以及 5GHz。
-
找到 “国家代码” (Country Code)。
-
建议改为:
AU - Australia(澳大利亚)。 -
理由: 澳大利亚标准允许的发射功率非常高(通常被称为“澳大利亚模式”),且频道限制较少。
-
2.锁定信道
5G 频段:
5G Wi-Fi 的频段对功率也有影响。在某些地区标准下,低频段(36-48)的功率限制比高频段(149-161)要严格。
建议先将频段设置为 149,频宽选择 80 MHz。
频宽不能选择160 MHz。在 149频段,160MHz频宽的时候,配置是不合法的,要么5G直接崩溃,要么触发合规性屏蔽,设备无法搜到该信号。
2.4G 频段:
2.4G 频段讲究比较少,建议将频段设置为 11或者13,频宽选择 40 MHz。
3. 调整发射功率
前两步保存应用后,再回到Wi-Fi的设置界面,应该就能看到原本最大 20 dBm的发射功率,选择可以选择到 30 dBm。
保存并应用即可。
4. 使用感受
调整了发射功率后,确实比我之前华硕TUF-AX3000的信号还要好一点,相同的位置,原本手机只有2格信号,现在80%以上的时间都是满格信号。看视频的时候,也没有提示“当前正在使用手机流量播放”的提示。
























