ax3000t刷机教程
转载自https://www.kaitaku.xyz/misc/ax3000t-openwrt/
小米 AX3000T openwrt 刷机 —— 从入坑到刷回原厂
前言
作者于前端时间购入一台 AX3000T 作为 Mesh 网络节点,后续发现由于没有弱信号剔除导致设备连到 AX3000T 之后就回不到主节点了 所以想刷入 openwrt 来解决这个问题(最后也没解决)
本文需要硬件设施:
- AX3000T 路由器
- 一个有以太网口的电脑
- 一根网线
- 一个卡针 (或者牙签)
软件设施放在下面的蓝奏盘里了,有需要可以自行取用:
启用 SSH
降级固件 (非必需)
如果你的 AX3000T 手动升级了固件到 1.0.47 以上 (不含),此时需要降级到 1.0.47 这个脆弱的版本来启用 SSH
openwrt 文档中说可以手动上传固件后改 URL,但作者测试无法降级,会提示找不到固件或不完整,因此只能使用小米官方的救砖工具降级
1.0.47 固件链接:小米官方 CDN 工具见上方网盘
打开工具后用网线连接路由器和电脑 (理论上路由器任意一个网口即可),然后启动工具,选择下载的 ROM,点击下一步
note: 工具此时会让你选择网卡,如果你安装了 VMWare / Hyper-V 可能存在很多个虚拟网卡,注意选择物理网卡 (一般名称为以太网)
点击下一步,此时给路由器断电,用卡针按住 RESET 键,按住后插电,继续按住,等到路由器橙灯快速闪烁为止,此时工具会自动刷入 ROM,等待路由器变为蓝灯快速闪烁 10 秒后断电重启
启用 SSH
注意:下面的代码需要用 cmd 而不是 powershell 运行,运行时出现 curl 参数错误则代表你使用的是 powershell 本文不处理没有 curl 的情况,请自行必应解决
登录到小米路由器后台,此时的 URL 应该类似于这样:
http://192.168.31.1/cgi-bin/luci/;stok=123456789qwertyuiop/web/home#router 将 stok 后面的部分 ( 123456789qwertyuiop 这一块) 复制下来,后续使用
1
2
3
4
5
6
curl -X POST http://192.168.31.1/cgi-bin/luci/;stok=<stok>/api/misystem/arn_switch -d "open=1&model=1&level=%0Anvram%20set%20ssh_en%3D1%0A"
curl -X POST http://192.168.31.1/cgi-bin/luci/;stok=<stok>/api/misystem/arn_switch -d "open=1&model=1&level=%0Anvram%20commit%0A"
curl -X POST http://192.168.31.1/cgi-bin/luci/;stok=<stok>/api/misystem/arn_switch -d "open=1&model=1&level=%0Ased%20-i%20's%2Fchannel%3D.*%2Fchannel%3D%22debug%22%2Fg'%20%2Fetc%2Finit.d%2Fdropbear%0A"
curl -X POST http://192.168.31.1/cgi-bin/luci/;stok=<stok>/api/misystem/arn_switch -d "open=1&model=1&level=%0A%2Fetc%2Finit.d%2Fdropbear%20start%0A"
每行执行完后都会输出 {code:0} ,四条均输出此内容则 SSH 开启成功,此时可以使用 SSH 终端登入,为便于后续文件操作,此处使用 MobaXterm (可从前文网盘下载) 进行登入
获取 SSH 密码
登入小米路由器主页后,右下角会有一个 SN ,将下方黑体字内容全部复制后输入 miwifi.dev 右侧的 SN 中,点击 calc,随后点击 copy 复制密码并保存
登入 SSH
因终端而异,提示两点:
登入用户名为 root 出现一个提示框时选带 ACCEPT 的 #刷入 U-Boot 第一步是刷入 UBoot,便于刷入真正的 openwrt 和防止刷错固件之后被迫售后,同时备份原厂固件便于恢复
备份原厂固件
登入 SSH 后,输入 cat /proc/mtd 确定需要备份的内容,如果为 mtd0-mtd12 可直接使用下文命令,否则请自行参照下文修改:
通常来说,因为路由器的 ROM 通常较小,而备份过程相当于把固件体积 x2,因此 ROM 大概率会爆掉,如果你在备份过程中 SSH 异常中止参照上文重新获取 stok 后激活 SSH 即可 当然,为了防止上文情况出现和造成严重后果,备份文件通常放在 /tmp 中并且备份完成一个就要下载下来后删除,防止 ROM 空间不足或者不足重启后无法自动修复 如果你懒得看上面那段文字:下文的每行执行完之后就把对应的 bin 下载下来后删掉,不要用终端的多行命令偷懒
1
2
3
4
5
6
7
8
9
10
11
12
dd if=/dev/mtd1 of=/tmp/BL2.bin
dd if=/dev/mtd2 of=/tmp/Nvram.bin
dd if=/dev/mtd3 of=/tmp/Bdate.bin
dd if=/dev/mtd4 of=/tmp/Factory.bin
dd if=/dev/mtd5 of=/tmp/FIP.bin
dd if=/dev/mtd6 of=/tmp/crash.bin
dd if=/dev/mtd7 of=/tmp/crash_log.bin
dd if=/dev/mtd8 of=/tmp/ubi.bin
dd if=/dev/mtd9 of=/tmp/ubi1.bin
dd if=/dev/mtd10 of=/tmp/overlay.bin
dd if=/dev/mtd11 of=/tmp/date.bin
dd if=/dev/mtd12 of=/tmp/KF.bin
每条命令执行完成后会输出带有 in 和 out 字样的提示,备份可能会需要一些时间,此过程中不要断开 SSH 和电源
刷入 UBoot
此部分正式进入刷机,在进行下面的任何步骤之前确定你的备份保存完好,他人提供的备份有相当高概率使路由器变砖,务必保存好自己的备份
本文直接使用网盘内的 SSH 终端说明,其他客户端请自行探索 点开左侧绿色文件夹,进入 tmp,将 UBoot 固件拖入其中,等待上传完成
网上的一些资源仅提供了收费的 UBoot,本文不提供这些 UBoot 的链接。作者自行编译了一份开源的 UBoot 放在了前文网盘中,可以直接下载使用。有 Ubuntu 系统或 WSL 环境的可以自行编译。
ls 确定存在后,执行下列命令刷入:
mtd write mt7981_ax3000t-fip-fixed-parts-multi-layout.bin FIP 等待刷入完成后,此时 UBoot 刷入完成
刷入 openwrt
刷入固件
理论上很难刷出问题,作者前后刷入了 6 次各种固件并失败 2 次仍然能正常进入 UBoot 并刷回原厂。 当然,上文前提是不故意作,例如刷入 SoC 不正确的固件和刷入不支持 AX3000T 的固件,如果真成砖了可参考后文的刷回原厂,刷写 3 次仍然未修复建议返厂维修
网盘中有 QWRT 和 immortalwrt 两种固件,作者已测试可刷入,但注意:
网盘中的 QWRT 不能使用 WPA3 加密 此时使用网线连接到 UBoot (如果你把网线拔了) 然后先断路由器电,用卡针按住 RESET 约 3 秒后插电,继续按住,等到路由器灯由橙色变蓝色后松开 此时手动配置电脑网卡为手动分配 IP 模式:
- ip: 192.168.1.2
- 子网掩码: 255.255.255.0
- 网关: 192.168.1.1
- 首选 DNS: 填一个能用的国内 DNS,例如 114.114.114.114 ,不建议开启加密
点击确定后,浏览器访问 192.168.1.1 ,应该进入 UBoot 界面
双网卡或无线 + 有线请断开可访问互联网的那个网络,这个网址会和部分家庭网关冲突,可能导致无法访问
选择固件后 mtd layout 根据固件选择,QWRT 选 QWRT,immortalwrt 选 immortalwrt-w112 点击 upload 后耐心等待,路由器会变为橙灯,随后橙灯快速闪烁,再变为蓝色灯 此时网卡可调整为 DHCP (自动) 了
如果橙灯慢速闪烁
如果观察到路由器的橙灯慢速闪烁 (约 5 秒一次),此时请等待半分钟,如果仍然保持此状态,可以按照前文重新进入 UBoot 了。 这个闪烁意味着固件刷入失败,UBoot 会提示 UPDATE FAILED,建议更换固件并选择正确的 mtd layout 后重试
进入 openwrt 后台
不同固件不同,大部分是 192.168.1.1 ,自定义固件会有 10.0.0.1 或 192.168.8.1 等,建议查看固件说明 如果和家庭网关冲突,请断开家庭网络,使用网线连接到 openwrt 后修改 LAN IP 来解决此问题
刷回原厂
网上的一些教程是先 UBoot 刷入 ubi.bin (之前备份的原厂固件) 后再解锁 SSH 恢复 UBoot,但作者实验发现 UBoot 刷入 ubi.bin 大概率会刷入失败,因而采用先恢复 UBoot 后使用小米救砖工具刷入固件的方法
恢复原厂 UBoot
接下来的操作中涉及上传文件的,上传后务必使用 ls 确认文件存在再刷入
找到前文的备份文件中的 FIP.bin ,使用 SSH 工具上传到 /tmp 目录下,随后:
1
mtd write FIP.bin FIP
恢复原厂固件
等待命令完成 (15-30 秒左右) 后断电重启,此时按照前文的降级方法刷入原厂 1.0.47 固件 (可能需要多次刷入) 如果刷入成功,橙灯会常亮一会,然后橙灯闪烁,此时可以按照正常新路由器的方法,连接到无密码默认 SSID 中进入开始使用了 此时可以正常升级和使用路由器了