小米ax3600救砖&刷机
在某位朋友的推荐(忽悠)下从闲鱼上淘了小米ax3600,性价比之王。
早些时间装了宽带,一直用红米AX5,并没有在上面做代理,现在想着将订阅的机场利用起来,实现同一个内网的所有设备连接互联网。
简要的踩坑过程
到手后开始刷机,按照教程进行无分区扩容
过程:
- 无分区扩容刷机
- 变砖
- ttl工具救砖
- ttl刷机的几个失败
- 使用tftp传输固件包失败
- 使用tftp加载到内存后,写入固件到指定分区失败
- 由于分区大小不够,尝试刷入小固件重启失败
- ttl刷官方固件
- 重启后降级连ssh
- 扩容教程
- 分区扩大后ttl工具刷入准备好的固件包
- 重启后依然黄灯
- 两个分区都刷同一个固件包成功
不扩容刷入openwrt
与参考链接小米AX3600不扩容刷机OpenWrt教程一致,本部分仅作为个人的笔记与备份
开启SSH
路由器控制台降级:刷入旧版固件
miwifi_r3600_firmware_5da25_1.0.17.bin
获取SSH并修改默认密码为
admin
- 复制路由器后台网址中
STOK=
1
http://192.168.31.1/cgi-bin/luci/;stok=/api/misystem/set_config_iotdev?bssid=Xiaomi&user_id=longdike&ssid=-h%3B%20nvram%20set%20ssh_en%3D1%3B%20nvram%20commit%3B%20sed%20-i%20's%2Fchannel%3D.*%2Fchannel%3D%5C%22debug%5C%22%2Fg'%20%2Fetc%2Finit.d%2Fdropbear%3B%20%2Fetc%2Finit.d%2Fdropbear%20start%3B
将上面URL中的
stok=
后面补全为自己路由器网址的{"code":0}
表示成功
修改默认密码为
admin
1
http://192.168.31.1/cgi-bin/luci/;stok=/api/misystem/set_config_iotdev?bssid=Xiaomi&user_id=longdike&ssid=-h%3B%20echo%20-e%20'admin%5Cnadmin'%20%7C%20passwd%20root%3B
同样补全
stok=
后面内容,{"code":0}
表示成功
至此可以ssh登陆路由器控制台了
- 复制路由器后台网址中
刷机
MacOS直接使用Terminal,Windows可以使用WinSCP/Putty
将小于29M的ubi格式固件传至tmp根目录下
运行下面命令:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18nvram set flag_last_success=0
nvram set flag_boot_rootfs=0
nvram set flag_boot_success=1
nvram set flag_try_sys1_failed=0
nvram set flag_try_sys2_failed=0
nvram set boot_wait=on
nvram set uart_en=1
nvram set telnet_en=1
nvram set ssh_en=1
nvram commit
# 使用ubiformat工具,不经确认地格式化第十二个MTD设备,并使用位于/tmp/目录下的指定UBI格式固件文件
ubiformat /dev/mtd12 -y -f /tmp/请替换固件包名.ubi
nvram set flag_last_success=0
nvram set flag_boot_rootfs=0
nvram commit
# 重启
reboot
等待一分钟左右蓝灯亮可以登入OpenWrt系统,注意这里的地址变为
192.168.10.1
用户名root
密码passwd
到这里刷机是成功的,这个固件也很不错了,如果不需要其他扩展,这个双系统还是不错的,
博客作者也给出了切回官方的命令:
1 | fw_setenv flag_last_success 1 |
变砖
我想着刷入朋友编译的固件,
然后就通过路由器控制台的「刷写新的固件」上传.bin
文件通过升级,结果,重启后一直黄灯,变砖了。
于是使用官方救砖工具救砖,还是不行,重启循环显示黄灯。
其实这里我应该意识到一件事,切换回官方系统就可以了。
TTL救砖
回忆是珍珠
据上一次通过TTL工具刷路由器还是在上一次,呃,是2016年,那时候还是传说中的土豪金编程器,记得应该是买了个小米路由器mini青春版
工具准备
淘宝上购买TTL工具+杜邦线三种类型的(公对公,母对母,公对母),我的USB转TTL是FT232RL,支持5V/3.3V/1.8V
拆机
小米ax3600非常难拆,4个螺丝分布在底部防滑垫上,第5个在中间贴纸下面。上壳是塑料的卯榫结构,需要用翘片慢慢拆。如果拆坏了也不要紧,使用胶带粘起来就好了。
刷机
这里刷机靠着Benny的教程和他的帮助
连接准备
TTL调到1.8v,将黄色盖帽压到1.8v的位置,然后接线,使用杜邦线将FT232RL的TX 要接路由器的RX,RX接TX,GND接 GND,VCC不接。
进入screen
电脑端:MacOS直接使用screen
,通过系统信息-USB查看信息看到设备名称
路由器通电
1 | screen -L /dev/cu.usbserial-A50285BI 115200 –L |
然后按回车中断引导,进入screen
正常来说路由器启动后会进入uboot,这里按回车中断了引导,可以进行刷机了。至此,说明电脑通过TTL连接路由器是没有问题了。
准备tftp(照抄Benny)
macOS 自带一个 tftp,使用如下命令启动
1 | sudo launchctl load -w /System/Library/LaunchDaemons/tftp.plist |
把后缀是 ubi 的 nand factory 复制到/private/tftpboot
中(需要 sudo)
停止tftp可以用这个命令
1 | sudo launchctl unload -w /System/Library/LaunchDaemons/tftp.plist |
uboot刷分区(继续抄Benny)
配置环境变量
网线连接电脑和路由器 LAN,电脑设置 IP 192.168.31.100,然后在 uboot 中执行如下命令
1 | setenv serverip 192.168.31.100 |
加载固件
然后加载固件到内存中
1 | tftpboot 1.ubi |
此时能看到屏幕上在走进度条,如果你没走,提示 tftp server died 或者卡住了,那多半是 tftp 服务器没配置好。
这里我遇到了两个奇怪的问题,第一个是加载固件的时候,另外一个是出现了这样的 TTTTTT
1 | IPQ807x# tftpboot openwrt-ipq807x-generic-xiaomi_ax3600-squashfs-nand-factory.ubi |
T应该就是表示timeout了,我的解决办法就是关了Wi-Fi,重新加载。问题出在我家里连接的也是小米家的红米路由器,连接Wi-Fi是地址和设置的服务端重了。
正常的情况是这样的:
1 | IPQ807x# tftpboot 1.ubi |
进度条走完之后,会留下一个数字,Bytes transferred = 41811968 (27e0000 hex)
也就是固件的大小,同时最开始 Load address: 0x44000000
还会告诉你固件的起始地址,这两个数值很重要,要记下来。
获取分区信息
用smeminfo
可以获取分区信息
1 | IPQ807x# smeminfo |
其实这里问题就浮现了,第13分区的大小是35.75M,小于我的固件大小40M,所以下面的步骤无法操作。
那我只能刷一个小的固件,这里我准备重新开始,选择刷入小米官方固件miwifi_r3600_firmware_5da25_1.0.17.bin
,然后再回到上面的过程。
清除分区内容
保险起见,先给 rootfs 抹掉,自己对应起始结束地址,我的和Benny不同
1 | nand erase 0xa00000 0x23c0000 |
第一个数是起始地址,第二个数是擦除的大小
写入固件
rootfs_1 中,使用nand write
命令,这个命令接受三个参数,分别是固件内存地址,分区起始地址,固件大小。对我来说,写到 rootfs_1 也就是
1 | nand write 0x44000000 0x2dc0000 0x1c00000 |
写到 rootfs 就是
1 | nand write 0x44000000 0xa00000 0x1c00000 |
我这里两个分区都刷入了小米官方固件,然后按照教程刷qsdk扩容
重来
按照上述教程刷成功后,再次使用TTL工具进入screen
通过smeminfo
发现第13分区已经扩大到128M了
1 | IPQ807x# smeminfo |
这样可以直接按照刷机的步骤再次刷入大的固件,这里我还是将固件都写入了第12、13分区,因为只写一个的话还是黄灯进不去。
然后重启路由,蓝灯进入路由器控制台,救回来了!
并且刷入了目标的固件!
固件体验
这个编译了ShadowSocksR Plus+,支持 SS/SSR/V2RAY/XRAY/TROJAN/NAIVEPROXY/SOCKS5/TUN 等协议,可以进行订阅,定时刷新以及自动切换节点,这样我就实现了我刷机的目标,同一内网下的所有设备的全部互联网连接。
缺点是访问控制只支持LAN ip级别的筛选,对于特定的硬件设备不能管理,不过问题不大,我使用这个路由器做中继,然后另外一个直连光猫,有互联网需求的连ax3600,没有的连红米。OpenWrt的中继设置参考的这篇:进阶教程之 OpenWrt 无线中继配置指南
总结
其实按照我踩过的坑,比较顺利的路线为首先刷入过渡包进行扩容,然后通过控制台升级;如果控制台变砖了,由于扩容成功,还可以进行ttl直接刷入准备好的固件包。
后续
1
后续就是ssrp的问题,我订阅的节点是解锁了openai的,但是通过电脑直连路由器openai返回我的公网ip,
具体解决看我连不上openai了这篇博文。
另外还有Adblock的问题,ssrp完全不能分流我的广告啊,这下不得不重新刷机了。
2
刷了https://github.com/vonl1/Openwrt_xiaomi_ax3600 0609的包,通过无线连接路由器时需要 输入密码
1234567890
另外登录的地址是10.10.10.1
用户名root
密码boos
他参考的https://github.com/Boos4721/openwrt进行的编译。
上面那个太坑了,比如ssh路由器的管理器密码都不是页面定义的,dropbear重启了也不管用,魔改了不少后门。
找不到表情包来形容我的窘迫了,只能说愿你刷机归来,还是恩山无线
https://www.right.com.cn/forum/thread-8294637-1-1.html 然后在根据群里老哥的帮助终于用上了openclash
3
openclash启用,我的机场使用的是TUN内核,比较简单的图形化操作是在「配置文件管理」中上传内核,内核是从OpenClash的core分支中,master/premium目录下载相应架构的文件,这里不需要解压。
另外一种方法是下载解压、改名之后传到/etc/openclash/core中,记得给权限,改名为clash_tun
另外dev不需要上传,openclash的配置检查是:如果有dev的话会用dev,但是我的机场需要tun。所以可以不传dev,只传tun。
4
openclash的推荐配置:
运行模式:fakeip+增强
代理模式:rule
开完fakeip不要频繁重启路由器,重启了客户端要记得清理dns缓存,这里也可以设置fakeip持久化,禁dns缓存。
5
刷入uboot,具体看这篇文章小米AX3600刷入uboot
参考
- 无分区扩容刷机:https://www.ceer.cc/122
- 刷入qsdk并扩容rootfs_1分区到128M:https://www.right.com.cn/forum/thread-4631481-1-1.html
- Benny的教程:https://dmesg.app/fix-ax3600.html
- 进阶教程之OpenWrt 无线中继配置指南
- 恩山无线的ImmortalWrt固件