将小米原厂固件降级到1.0.60版本,太高版本漏洞已经被修复了,1.0.60原厂固件包看下方链接
miwifi_rb06_firmware_7ddeb_1.0.60.bin
降级教程见文末官方救砖方法,此处略去降级过程,成功刷好原厂1.0.60固件以后再开始执行下面的步骤
首先,入户网线接入AX6000的WAN口(背部1号网口),再找一根网线,一端随便接入任意一个LAN口(背部2、3、4号网口),另一端接入笔记本的网口,正常配置路由器
正常配置Redmi AX6000
后,浏览器输入192.168.31.1
,进入路由器管理页面,获取路由器token
,登录跳转主页面后,URL中stok后跟着值就是
- 开启开发/调试模式(此模式下允许修改Bdata),{token}替换为上面获取到的token值
http://192.168.31.1/cgi-bin/luci/;stok={token}/api/misystem/set_sys_time?timezone=%20%27%20%3B%20zz%3D%24%28dd%20if%3D%2Fdev%2Fzero%20bs%3D1%20count%3D2%202%3E%2Fdev%2Fnull%29%20%3B%20printf%20%27%A5%5A%25c%25c%27%20%24zz%20%24zz%20%7C%20mtd%20write%20-%20crash%20%3B%20
- 重启,{token}替换为上面获取到的token值
http://192.168.31.1/cgi-bin/luci/;stok={token}/api/misystem/set_sys_time?timezone=%20%27%20%3b%20reboot%20%3b%20
重启后需要重新进入路由器管理页面获取新的token
,因为每次重启路由器,token都会改变
- 设置Bdata永久开启telnet,{token}替换为上面获取到的token值
http://192.168.31.1/cgi-bin/luci/;stok={token}/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%20set%20uart_en%3D1%20%3B%20bdata%20commit%20%3B%20
- 再次重启,{token}替换为上面获取到的token值
http://192.168.31.1/cgi-bin/luci/;stok={token}/api/misystem/set_sys_time?timezone=%20%27%20%3b%20reboot%20%3b%20
XSHELL选择TELNET协议连接192.168.31.1
路由器
- 开启SSH,连上telnet后运行下列命令
echo -e 'admin\nadmin' | passwd root
查看输出,看是否修改成功,正常会提醒密码过于简单,设置不成功,设置不成功也不重要,可以直接跳过此步骤
- 固化SSH
nvram set ssh_en=1
nvram set telnet_en=1
nvram set uart_en=1
nvram set boot_wait=on
nvram commit
- 永久开启SSH(重启不会关闭)
mkdir /data/auto_ssh && cd /data/auto_ssh
curl -O https://fastly.jsdelivr.net/gh/lemoeo/AX6S@main/auto_ssh.sh
chmod +x auto_ssh.sh
uci set firewall.auto_ssh=include
uci set firewall.auto_ssh.type='script'
uci set firewall.auto_ssh.path='/data/auto_ssh/auto_ssh.sh'
uci set firewall.auto_ssh.enabled='1'
uci commit firewall
- 关闭开发/调试模式
mtd erase crash
- 重启
reboot
至此,TELNET的使命就完成了,接下来使用SSH连接192.168.31.1
,用户名root
,密码取决于上面是否设置成功,可以用admin
尝试,如果登录不进去,就是默认没有密码
- 刷openwrt固件,telnet/ssh 登录设备,查看当前系统是ubi 还是 ubi1
cat /proc/cmdline
查看输出
firmware=1 表示当前系统是ubi1
firmware=0 表示当前系统是ubi
查看当前分区情况
cat /proc/mtd
查看输出,找到你当前系统对应的分区,一般情况会在mtd8或者mtd9这两个分区,具体情况请执行上述命令对号入座
- 设置nvram并且刷 stock-initramfs-factory.ubi(临时系统),临时系统镜像文件见下方链接
stock-initramfs-factory.ubi
- 如果当前系统是
ubi
,设置nvram变量从ubi1
启动
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
- 上传stock-initramfs-factory.ubi到
192.168.31.1
的/tmp
目录下
刷 stock-initramfs-factory.ubi 到当前所在分区相反的分区,意思是下次启动从另一分区启动,我这里是mtd9
ubiformat /dev/mtd9 -y -f /tmp/stock-initramfs-factory.ubi
- 如果当前系统是
ubi1
,设置nvram变量从ubi
启动
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
- 上传stock-initramfs-factory.ubi到
192.168.31.1
的/tmp
目录下
刷 stock-initramfs-factory.ubi 到当前所在分区相反的分区,意思是下次启动从另一分区启动,我这里是mtd8
ubiformat /dev/mtd8 -y -f /tmp/stock-initramfs-factory.ubi
完成刷 stock-initramfs-factory.ubi(临时系统) 之后,reboot 重启,进入x-wrt/openwrt 的initramfs临时系统
重启过后,路由器的网卡IP段会变,此时查看当前连接AX6000的那个网卡,查看自动分配的IP段是多少
举例 : 假如查看网卡IPv4,自动分配的IP为192.168.15.10
,那么此时AX6000的管理页面地址就是192.168.15.1
,x-wrt临时系统的默认网段是192.168.15.1
,具体请自行查看获取
浏览器输入上面获取到的管理页面地址,用户名 - admin
,密码 - admin
,进入x-wrt临时系统
页面点击系统
- 备份与升级
,找到刷写新的固件
,点击刷写固件
,在弹出的上传组件中选择x-wrt-23.04-b202305152359-mediatek-filogic-xiaomi_redmi-router-ax6000-stock-squashfs-sysupgrade.bin
(x-wrt正式系统),x-wrt正式系统镜像文件见下方链接,点击上传,取消勾选保留当前配置
,点击继续
,等待2分钟左右,刷新页面,重新登录,用户名密码同上,此时就刷入了x-wrt的正式系统,x-wrt也挺好用的,不想在往下折腾的,至此就可以正常使用了
x-wrt-23.04-b202305152359-mediatek-filogic-xiaomi_redmi-router-ax6000-stock-squashfs-sysupgrade.bin
想用页面UI更好看的版本,在页面点击系统
- 备份与升级
,找到刷写新的固件
,点击刷写固件
,在弹出的上传组件中选择ax6000-stock-full.bin
(恩山无线论坛 - 237大佬编译的闭源op固件,有2个版本,一个full版本,自带很多插件,一个mini版本,相对比较精简的版本,建议直接刷full版本),ax6000-stock-full.bin和ax6000-stock-mini.bin固件见下方链接,点击上传,取消勾选保留当前配置
,勾选强制升级
,点击继续
,等待2分钟左右,此时,再次查看网卡自动分配的IP,应该会在6网段,自动分配的IP会在192.168.6.[2-255]
之间,也就是说AX6000的管理页面也会相应的变成192.168.6.1
,浏览器输入192.168.6.1
,用户名root
,密码password
,至此就全部刷入完成了
ax6000-stock-full.bin
ax6000-stock-mini.bin
Redmi AX6000的优势就是只要不修改原厂分区,就可以在刷机的任意一个环节出错时回原厂固件,但是如果修改了原厂分区,就需要拆机,比较麻烦,openwrt官方的固件会合并最后两个分区为大分区,非官方的固件,因为闭源所以未知
查看当前系统信息
cat /proc/cmdline
显示的内容
console=ttyS0,115200n1 loglevel=8 firmware=1 uart_en=1
查看分区命令
cat /proc/mtd
显示的内容
mtd0: 08000000 00020000 "spi0.1"
mtd1: 00100000 00020000 "BL2"
mtd2: 00040000 00020000 "Nvram"
mtd3: 00040000 00020000 "Bdata"
mtd4: 00200000 00020000 "Factory"
mtd5: 00200000 00020000 "FIP"
mtd6: 00040000 00020000 "crash"
mtd7: 00040000 00020000 "crash_log"
mtd8: 01e00000 00020000 "ubi"
mtd9: 01e00000 00020000 "ubi1"
mtd10: 03200000 00020000 "overlay"
官方分区为FIP分区,有的在mtd4,有的在mtd5,请注意查看自己的,根据实际情况来备份,建议将mtd4和mtd5都备份
备份官方FIP分区命令
dd if=/dev/mtd5 of=/tmp/FIP.bin
恢复官方FIP分区
上传备份的FIP分区文件到tmp目录下
登录SSH执行
mtd write /tmp/FIP.bin /dev/mtd5
暂无评论