准备工作
- 一台红米 AX6000 ( 产品型号 RB06)
- 一台电脑(Mac Win Linux 均可)
- 下载安装 Termius (任意 ssh 工具都行,termius 简单适合新手)
下载路由路由器固件 1.2.8 版本- 下载好红米 ax6000 的 openwrt 固件
解锁 SSH
1 升级到指定版本固件(可跳过)
这款路由器的固件一直没有升级,当前的固件可以直接跳过这一步,主要有人反馈 1.2.8 有丢失 5G 的情况。在小米路由器后台,将路由器手动升级到 1.2.8 版本
2 获取路由器 stock
登陆小米路由器后台后,浏览器地址栏 stok= 后面的一段内容即是(选中部分),准备好备用。
3 开启调试模式
打开浏览器,复制下面的内容到地址栏,并替换 {STOK}
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
我的替换后如上。将替换好的值复制到浏览器请求,如果显示 {“code”:0} 如上返回内容则表示成功。
4 通过浏览器请求重启
同样打开浏览器,复制下面的内容到地址栏,并替换 {STOK}
http://192.168.31.1/cgi-bin/luci/;stok={token}/api/misystem/set_sys_time?timezone=%20%27%20%3b%20reboot%20%3b%20
通过浏览器执行完这一步路由器会重启,等待重启完成。
5 设置 Bdata 永久开启 telnet
重启完成后打开路由器后台(注意:路由器重启你需要重新登陆获取下新的 stok ),然后同样打开浏览器,复制下面的内容到地址栏,并替换 {STOK} 。
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
然后再次执行第 4 小步的「通过浏览器请求重启」,等待重启完成。
6 telnet 连接开启 ssh
打开 Termius,可以选择不登录 Continue Without Account。
点击 New Host 添加
Address 填写:192.168.31.1
SSH:取消勾选
Telnet:勾选
然后点击向右的箭头,最后选择 Hosts 里的「192.168.31.1」开始 telnet 连接。(不用输入用户和密码)
7 永久开启并固化 ssh
echo -e 'admin\nadmin' | passwd root
nvram set ssh_en=1
nvram set telnet_en=1
nvram set uart_en=1
nvram set boot_wait=on
nvram commit
sed -i 's/channel=.*/channel="debug"/g' /etc/init.d/dropbear
/etc/init.d/dropbear restart
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
uci set system.@system[0].timezone='CST-8'
uci set system.@system[0].webtimezone='CST-8'
uci set system.@system[0].timezoneindex='2.84'
uci commit
mtd erase crash
reboot
复制上面的命令到 termius 终端里执行,这会设置 ssh 密码为 admin、并永久开启 SSH、并从开发模式修改回正常的模式,并重启。重启完成后就能连上 ssh 了。
8 尝试 ssh 连接路由器
选择 Hosts-点击 New Host 添加
Address 填写:192.168.31.1
SSH 的用户名里填写:root
Password 是:admin
点击右上角箭头,再点击 Hosts 里的 192.168.31.1 就应该能连接上 SSH 了。(注意选择 ssh 不是 telnet)
选择 ADD AND CONTINUE,就会进入 ssh 连接。
至此,红米AX6000解锁SSH完成。
刷写固件开始
第一步:刷入过渡固件
cat /proc/cmdline
这一步需要路由器是正常联网的,首先 ssh 连接上红米 ax6000 ,执行上面的命令,查看返回的 firmware 等于 0 还是 1。 (我截图这里是 1 )
如果是 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
cd /tmp
curl -L http://sebs.oss-cn-shanghai.aliyuncs.com/initramfs-factory.ubi -o initramfs-factory.ubi
ubiformat /dev/mtd9 -y -f /tmp/initramfs-factory.ubi
reboot -f
如果是 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
cd /tmp
curl -L http://sebs.oss-cn-shanghai.aliyuncs.com/initramfs-factory.ubi -o initramfs-factory.ubi
ubiformat /dev/mtd8 -y -f /tmp/initramfs-factory.ubi
reboot -f
复制执行完就会重启进入过渡固件,过渡固件的
- 管理ip:192.168.5.1
- 用户名和密码:root/password(密码有可能是空)
- 无线wifi名称:OpenWrt
- 无线wifi密码:password
第二步:从过渡固件刷入 openwrt
在刷写前需要设置下 ENV ,浏览器打开过渡固件后台 192.168.5.1,登录用户名 root,密码 password。然后打开服务里的终端,同样登录用户名 root,密码 password(输入密码不会显示输完回车即可)。
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
然后复制上面的命令到终端执行,从过渡固件刷入 openwrt 这步是必须做的。
然后打开系统-备份与升级,选择刷写固件。浏览里找到下载好的 openwrt 固件,选择上传。上传好后选择取消勾选保留当前配置然后选择继续。等待刷写完成自动重启,就会进入新的 openwrt 固件。
新的 openwrt 固件后台地址是 192.168.6.1 用户名和密码依然是 root 和 password,默认的网口 1 是 wan 口,剩下的都是 lan 口。
刷回官方固件
如果不想使用 openwrt 固件了或者一不小心刷错了无法开机,都可以是使用官方的修复工具刷回原厂,当然前提是你没修改过路由器的分区。目前 openwrt 官方的固件会合并最后两个分区为大分区,个人不建议新手这么做,因为要是挂了刷回官方固件就需要拆机比较麻烦,ptpt52 也在 GitHub 发了使用官方分区 PR 等等看吧。
首先下载好官方修复工具和官方固件,使用小米路由器修复工具需要提前退出 Windows 自带的杀毒,我更推荐大家去下载安装个火绒这样更安全方便。
路由器进入恢复模式,路由器先用针按住后面的 reset 恢复按钮,再插上电源,持续顶住大约 8s,等到黄色指示灯变为黄色闪烁,就可以松开 reset 按钮,然后用网线连接 Windows 电脑,路由器这边连接 lan 口就可以,红米 ax6000 没有标 lan wan ,接 234 都可以。
打开解压好的小米路由器修复工具,要是有防火墙提示选择允许即可,然后选择本地上传下载好的官方固件 ;然后网卡选择:请选择与路由器相连的以太网网卡; 现在再点下一步就会自动开始刷机,看到发送完成就说明刷机完成了。然后我们等待路由黄灯变为蓝灯闪烁。我们就可以拔下电源再重新插上路由器,这样就完成了,路由器就回到了官方的固件。
重置、升级、刷机后如何恢复 SSH
无论你是升级了系统、还是恢复了出厂、还是刷了别的版本的系统或 openwrt 再刷回来,telnet 其实都是打开的,因为已经写在了 bdata 分区。不过 telnet 密码会恢复成默认的,我们需要通过路由器后台右下角的 SN 号来计算。这里有一个网站直接在线计算(安全的离线计算):
telnet 连上以后,执行:
sed -i 's/channel=.*/channel="debug"/g' /etc/init.d/dropbear
/etc/init.d/dropbear restart
就开启了 ssh,ssh 默认密码就是上面计算出来的一样。