0.准备工作
0.1 刷机所需软件
U-Boot:亚瑟对应版
iStoreOS:亚瑟对应版
OpenWrt:亚瑟对应版
TFTPD64:用于传U-Boot
PuTTY:用于TTL刷机和SSH连接
WinSCP:用于传文件到路由
0.2 刷机所需硬件
网线2根
电脑1台
若要拆机,则需要螺丝刀,撬棒;
若要拆机,则需USB2TTL=>CH340G土豪金转接板
杜邦线5根,一头公一头母;或者杜邦线5根+TTL探针4个
0.3 刷机大致流程
- 破解并开启SSH
- 刷入u-boot
- 刷入固件
- 分区调整等其他补丁
1.破解并开启SSH(最讨厌的部分)
根据系统版本分成三种情况:
- 固件版本 < 1.5.50 r2204 :向目标服务器发送一个 JSON-RPC 请求,启动dropbear的SSH服务端。
- 1.5.50 r2204 < 固件版本 < 1.5.80 r2262 :利用外置存储设置的一个漏洞,利用WebDAV开启SSH。
- 固件版本 >= 1.5.80 r2262 :暂时需要拆机并TLL。
三种情况我会逐一说明,本次实际机器版本已经升级至最新的R4XXX版本,只能使用拆机法。
任何版本都可以用拆机法
1.1 固件版本 < 1.5.50 r2204(2022-04-22)
可以参看这篇文章。
1.2 固件版本在 1.5.50 r2204 和 1.5.80 r2262 之间
可以参看这篇文章。
1.3 固件版本 >= 1.5.80 r2262
还是用拆机法最简单,拆机后直接用TTL连接,通过亚瑟自己的底层系统,刷入U-boot。
2.拆机刷入U-BOOT
2.1 拆机准备
- CH340G USB 转 TTL 适配器
- 三根公对母杜邦线
- 拆机工具
- U-BOOT上传软件:Tftpd64
- ttl连接软件:PUTTY
- U-Boot固件:u-boot.bin
2.2 拆机过程
不说了,自己百度
2.3 连接串口
- 适配器跳线至3.3v模式
- 插上电脑,记得装驱动,装好后,在设备管理器可以知道适配器为COM(X),我这为COM(3)口;
- 连接的线序如下:
CH340 | 路由TTL |
---|---|
GND(地线) | G |
TXD(发送) | R |
RXD(接收) | T |
- 连接好后,打开putty,Connection Type 选择 Serial; Serial line 选择 COM3 ; Speed 输入115200;
- 点击Open,一切正常的话,就是一个黑色的窗口,暂时没有任何内容。
2.4 上传并刷入U-BOOT
- 将本机网口和路由器LAN口用网线连接,将本机IP设置为192.168.10.1,
- 给路由器通电,此时上一步留下的黑色窗口里面就有内容出现,此时赶紧在黑色窗口中按回车键,这样就可以打断路由器的自动启动;
- 此时已是路由器的6018#模式,可以使用 boot loader 的命令了。
- 将Tftpd64和u-boot.bin,放在同个文件夹内;打开Tftpd64,设置服务器地址为:192.168.10.1;
- 在6018#后面输入以下代码,完成U-BOOT的上传和写入;
tftpboot u-boot.bin && flash 0:APPSBL && flash 0:APPSBL_1
- 看到命令输出里有几个
OK
就完成 u-boot 刷入了。暂时不用关机。
3.刷入路由器固件
3.1 首次刷入固件
- 由于亚瑟的默认固件分区只有60MB大小,所以无法刷入大于60MB的固件。因此首次刷固件,只能刷小于60MB的固件;
- 首次刷机固件:
openwrt-qualcommax-ipq60xx-jdc_ax1800-pro-squashfs-factory-6.6.x.bin
- 重启路由器,再次进入6018#模式,输入
httpd 192.168.10.10
,启动U-BOOT WEB刷机界面; - 在本机浏览器中访问192.168.10.10,选择openwrt-xxx-squashfs-factory-6.6.x.bin,刷入固件。
- 到此为止,系统固件已经完成,一切顺利的话就刷好了。重启即可。
3.2 首次进路由
将本机IP改为自动获取,待路由灯变绿,就能获取IP了,可以登录网页设置,也可以登录后台SSH了。
其实到了这里,基本上可以用了(装不了大软件,不能DOCKER)。只是若要玩出些花样来,则需要打些补丁。
3.3 备份分区(可不做)
懒得写,自己看这里
4.高级操作
4.1 更改分区,刷入GPT
前面说过,因为亚瑟的原版分区结构问题,导致装不下大的系统,或者说系统默认留的软件安装空间太小了。
所以有高手备份了分区表并用DG调整了大小,重新刷入后,可以放心玩了。
亚瑟 AX1800 Pro 默认的分区信息如下:
Device Label
/dev/mmcblk0p1 0:SBL1
/dev/mmcblk0p2 0:BOOTCONFIG
/dev/mmcblk0p3 0:BOOTCONFIG1
/dev/mmcblk0p4 0:QSEE
/dev/mmcblk0p5 0:QSEE_1
/dev/mmcblk0p6 0:DEVCFG
/dev/mmcblk0p7 0:DEVCFG_1
/dev/mmcblk0p8 0:RPM
/dev/mmcblk0p9 0:RPM_1
/dev/mmcblk0p10 0:CDT
/dev/mmcblk0p11 0:CDT_1
/dev/mmcblk0p12 0:APPSBLENV
/dev/mmcblk0p13 0:APPSBL
/dev/mmcblk0p14 0:APPSBL_1
/dev/mmcblk0p15 0:ART
/dev/mmcblk0p16 0:HLOS
/dev/mmcblk0p17 0:HLOS_1
/dev/mmcblk0p18 rootfs
/dev/mmcblk0p19 0:WIFIFW
/dev/mmcblk0p20 rootfs_1
/dev/mmcblk0p21 0:WIFIFW_1
/dev/mmcblk0p22 rootfs_data
/dev/mmcblk0p23 0:ETHPHYFW
/dev/mmcblk0p24 plugin
/dev/mmcblk0p25 log
/dev/mmcblk0p26 swap
/dev/mmcblk0p27 storage
其中mmcblk0p18
和mmcblk0p20
默认的大小为 60MB,意味着最大只能刷入大小为 60MB 的固件。
如果你需要刷入大于 60MB 的固件或者扩容 overlay,那么需要刷入大分区的 GPT 分区表。
使用 Winscp 将GPT分区表文件GPT.bin
和sgdisk.ipk
上传到 /tmp 目录,然后执行以下命令,注意修改命令中的 GPT.bin 为实际的文件名称:
# 刷入GPT分区表
dd if=/tmp/GPT.bin of=/dev/mmcblk0 bs=512 count=34 conv=fsync
# 安装sgdisk分区工具
opkg install /tmp/sgdisk.ipk
# 新建 storage 分区
sgdisk -e -n 0:0:0 -c 0:storage -t 0:1B1720DA-A8BB-4B6F-92D2-0A93AB9609CA -p /dev/mmcblk0
提示 The operation has completed successfully 说明成功新建分区。
最后运行 reboot 重启路由器即可。
4.2 刷入CDT(路由器硬改为 1GB 内存时使用)
使用 Winscp 将 CDT 文件上传到 /tmp 目录,然后执行以下命令,注意修改命令中的 CDT.bin 为实际的文件名称:
dd if=/tmp/CDT.bin of=/dev/mmcblk0p10 conv=fsync
最后运行 reboot 重启路由器。
5.最后总结和下载
补丁打完后,可以再次刷系统,建议再OPENWRT下强刷iStoreOS
这个系统软件多,而且直接设置好了很多东西,不像OP还需要设置许多。
所有用到的东西,都会统一打包,放出下载。
6.参考资料:
https://www.yindan.me/tutorial/jdc-ax1800-pro.html
https://watermelonwater.tech/archives/%E4%BA%AC%E4%B8%9C%E4%BA%91AX1800%20Pro%E4%BA%9A%E7%91%9FopenWRT%2FiStoreOS%E5%88%B7%E6%9C%BA%E6%95%99%E7%A8%8B
https://phyng.com/2024/05/05/ax1800-openwrt.html
https://zhuanlan.zhihu.com/p/669394502