1 准备工作

在开始刷机之前,我们首先需要确认京东云无线宝亚瑟 AX1800 Pro 的固件版本,以确定是否需要进行物理拆机。

如果你的设备原始固件为 1.5.80.r2262(2022-12-15) 或更低版本,那么恭喜你,你可以在不拆机的情况下开启设备的 SSH 功能。

查看固件版本非常简单,只需要在浏览器中登录 http://192.168.68.1/PC/main.html,然后在页面底部查看当前的固件版本。

例如,我的设备的生产日期是 2022.04,固件版本是 1.2.2.r2080,符合免拆的条件!

注意:

请不要进行任何有效的上网配置,否则一旦设备联网,系统就会自动升级为最新版本,白白错过免拆机会!

刷机前还需要准备以下材料:

  • 一台电脑
  • 一根网线
  • 下载资源:MobaXterm、Tftpd64、U-Boot 和固件

2 免拆开门

提示:

如果你的固件版本不符合免拆条件,请参阅下文的 拆机开门 章节。

如果固件版本小于 1.5.50r2204(2022-04-22)

首先,接通路由器电源,然后在浏览器中登录 http://192.168.68.1/PC/main.html。接着按下 F12 打开控制台,在 Console 中运行以下代码:

$.ajax({
    url: "/jdcapi",
    async: false,
    data: JSON.stringify({
        jsonrpc: "2.0",
        id: 1,
        method: "call",
        params: [
            $.cookie("sessionid"),
            "service",
            "set",
            {
                "name": "dropbear",
                "instances": {"instance1": {"command": ["/usr/sbin/dropbear"]}}
            }
        ]
    }),
    dataType: "json",
    type: "POST"
})

此时,SSH 功能就成功开启了。接着使用 MobaXterm 添加 SSH 连接:

  1. 在顶部菜单栏中,依次点击 Session > SSH
  2. 填写以下信息,然后点击 OK

    • Remote host: 192.168.68.1
    • Specify username: root
    • Port: 22
  3. 双击刚刚添加的连接,输入路由器登录密码。

如果固件版本在 1.5.50r2204(2022-04-22)1.5.80.r2262(2022-12-15) 之间

请参考:https://www.bilibili.com/read/cv21409975

如果固件版本等于 1.5.80.r2262(2022-12-15)

请参考:https://www.bilibili.com/read/cv21907565

3 拆机开门

3.1 拆机步骤

拆机需要额外准备以下材料:

  • CH340G USB 转 TTL 适配器
  • 三根公对母杜邦线
  • 拆机工具

新版路由器已经不能通过 SSH 传输刷机文件,但可以通过串口来进行。为了暴露路由器主板上的串口,我们需要先拆开机器。

  1. 拆除底部螺丝

路由器底部有一块用双面胶粘住的胶垫,可以用吹风机稍微加热,使胶水软化,然后小心揭开外围胶垫,找到并拆除 5 颗螺丝,以便取下底盖。取下底盖后,内部还有一圈螺丝,继续拆除它们。

  1. 拆除顶部螺丝

路由器的顶盖使用 5 个卡扣固定。用螺丝刀轻轻往里顶住卡扣,然后向上撬开。取下顶盖后,拆除内部的 2 颗螺丝。

  1. 取出机器本体

轻轻挤压外层保护壳,使其与网口分离,然后顺势从底部抽出路由器本体。

3.2 连接串口

串口,也称为串行通信接口,它允许计算机通过串行方式与外部设备进行数据传输。

3.2.1 连接适配器和路由器

在取出机器本体后,可以看到主板上有 4 个并排的串口引脚。

使用杜邦线将 USB 转 TTL 适配器和路由器的串口连接,对应关系如下:

适配器路由器
GND(地线)G
TXD(发送)R
RXD(接收)T

3.2.2 连接适配器到电脑上

将 USB 转 TTL 适配器插入到电脑的 USB 端口,然后在电脑的 设备管理器 - 端口 中找到适配器对应的端口号(例如 COM3)。

注意:

如果电脑无法识别适配器,可能需要安装相应的驱动程序。

使用 MobaXterm 或类似串行通信软件,设置串行通信参数(端口号、波特率等):

  1. 在顶部菜单栏中,依次点击 Session > Serial
  2. 填写以下信息,然后点击 OK

    • Serial port: COM3(在“设备管理器”中找到的端口号)
    • Speed(波特率): 115200
  3. 点击 OK 连接

3.2.3 进入 bootloader 模式

接通路由器电源,当路由器启动时,在 MobaXterm 中快速地按 Enter 键中断启动过程。

如果一切正常,MobaXterm 最后一行会显示 IPQ6018#,表示成功进入 bootloader 模式。

在此模式下,我们可以使用 tftpboot 命令从 TFTP 服务器下载文件。

所以为了将刷机文件发送给路由器,我们还要在电脑上搭建一个 TFTP 服务器。

3.2.4 开启 TFTP 服务器

京东云亚瑟默认的下载服务器 IP 是 192.168.10.1,我们需要将电脑的 TFTP 服务器地址也设置成这个 IP 。

首先,使用网线将路由器的 LAN 口和电脑的网口连接。

然后,按照以下步骤设置以太网 IP:

  • 打开 控制面板 > 网络和共享中心 > 更改适配器设置
  • 右键点击 以太网 > 属性
  • 双击 Internet 协议版本 4 (TCP/IPv4)
  • 选择 使用下面的 IP 地址 并输入以下信息:

    • IP 地址:192.168.10.1
    • 子网掩码:255.255.255.0

最后,下载并运行 tftpd64.exe 文件,确保软件界面中的 Server interface 选择了上述设置的 IP 地址,同时保持软件后台运行。

4 备份分区

养成刷机前先备份的好习惯,后续想要恢复也比较方便些。亚瑟使用的是双分区,一共有 27 个分区。

4.1 SSH

在 MobaXterm 中执行以下命令,先检查文件夹是否存在:

ls /mnt/mmcblk0p27

若第一个命令显示 No such file or directory,则新建分区:

mkdir /mnt/mmcblk0p27
mount -t ext4 /dev/mmcblk0p27 /mnt/mmcblk0p27

若第一个命令显示 lost+found,则可以开始备份 GPT 分区表和 mmcblk0p1~mmcblk0p26 分区:

dd if=/dev/mmcblk0 bs=512 count=34 of=/mnt/mmcblk0p27/mmcblk0_GPT.bin conv=fsync
dd if=/dev/mmcblk0p1 of=/mnt/mmcblk0p27/mmcblk0p1_0SBL1.bin conv=fsync
dd if=/dev/mmcblk0p2 of=/mnt/mmcblk0p27/mmcblk0p2_0BOOTCONFIG.bin conv=fsync
dd if=/dev/mmcblk0p3 of=/mnt/mmcblk0p27/mmcblk0p3_0BOOTCONFIG1.bin conv=fsync
dd if=/dev/mmcblk0p4 of=/mnt/mmcblk0p27/mmcblk0p4_0QSEE.bin conv=fsync
dd if=/dev/mmcblk0p5 of=/mnt/mmcblk0p27/mmcblk0p5_0QSEE_1.bin conv=fsync
dd if=/dev/mmcblk0p6 of=/mnt/mmcblk0p27/mmcblk0p6_0DEVCFG.bin conv=fsync
dd if=/dev/mmcblk0p7 of=/mnt/mmcblk0p27/mmcblk0p7_0DEVCFG_1.bin conv=fsync
dd if=/dev/mmcblk0p8 of=/mnt/mmcblk0p27/mmcblk0p8_0RPM.bin conv=fsync
dd if=/dev/mmcblk0p9 of=/mnt/mmcblk0p27/mmcblk0p9_0RPM_1.bin conv=fsync
dd if=/dev/mmcblk0p10 of=/mnt/mmcblk0p27/mmcblk0p10_0CDT.bin conv=fsync
dd if=/dev/mmcblk0p11 of=/mnt/mmcblk0p27/mmcblk0p11_0CDT_1.bin conv=fsync
dd if=/dev/mmcblk0p12 of=/mnt/mmcblk0p27/mmcblk0p12_0APPSBLENV.bin conv=fsync
dd if=/dev/mmcblk0p13 of=/mnt/mmcblk0p27/mmcblk0p13_0APPSBL.bin conv=fsync
dd if=/dev/mmcblk0p14 of=/mnt/mmcblk0p27/mmcblk0p14_0APPSBL_1.bin conv=fsync
dd if=/dev/mmcblk0p15 of=/mnt/mmcblk0p27/mmcblk0p15_0ART.bin conv=fsync
dd if=/dev/mmcblk0p16 of=/mnt/mmcblk0p27/mmcblk0p16_0HLOS.bin conv=fsync
dd if=/dev/mmcblk0p17 of=/mnt/mmcblk0p27/mmcblk0p17_0HLOS_1.bin conv=fsync
dd if=/dev/mmcblk0p18 of=/mnt/mmcblk0p27/mmcblk0p18_rootfs.bin conv=fsync
dd if=/dev/mmcblk0p19 of=/mnt/mmcblk0p27/mmcblk0p19_0WIFIFW.bin conv=fsync
dd if=/dev/mmcblk0p20 of=/mnt/mmcblk0p27/mmcblk0p20_rootfs_1.bin conv=fsync
dd if=/dev/mmcblk0p21 of=/mnt/mmcblk0p27/mmcblk0p21_0WIFIFW_1.bin conv=fsync
dd if=/dev/mmcblk0p22 of=/mnt/mmcblk0p27/mmcblk0p22_rootfs_data.bin conv=fsync
dd if=/dev/mmcblk0p23 of=/mnt/mmcblk0p27/mmcblk0p23_0ETHPHYFW.bin conv=fsync
dd if=/dev/mmcblk0p24 of=/mnt/mmcblk0p27/mmcblk0p24_plugin.bin conv=fsync
dd if=/dev/mmcblk0p25 of=/mnt/mmcblk0p27/mmcblk0p25_log.bin conv=fsync
dd if=/dev/mmcblk0p26 of=/mnt/mmcblk0p27/mmcblk0p26_swap.bin conv=fsync

等待备份完成后,打开 MobaXterm 左侧的 SFTP 会话窗口,然后导航到 /mnt/mmcblk0p27 目录,右键点击备份文件,选择 Download 下载文件到电脑上。

4.2 TTL

在 MobaXterm 中一行一行地执行以下命令:

mmc read 0x50000000 0x00000000 0x00000022 && tftpput 0x50000000 0x00004400 mmcblk0p_GPT.bin
mmc read 0x50000000 0x00000022 0x00000600 && tftpput 0x50000000 0x000c0000 mmcblk0p1_0SBL1.bin
mmc read 0x50000000 0x00000622 0x00000200 && tftpput 0x50000000 0x00040000 mmcblk0p2_0BOOTCONFIG.bin
mmc read 0x50000000 0x00000822 0x00000200 && tftpput 0x50000000 0x00040000 mmcblk0p3_0BOOTCONFIG1.bin
mmc read 0x50000000 0x00000a22 0x00000e00 && tftpput 0x50000000 0x001c0000 mmcblk0p4_0QSEE.bin
mmc read 0x50000000 0x00001822 0x00000e00 && tftpput 0x50000000 0x001c0000 mmcblk0p5_0QSEE_1.bin
mmc read 0x50000000 0x00002622 0x00000200 && tftpput 0x50000000 0x00040000 mmcblk0p6_0DEVCFG.bin
mmc read 0x50000000 0x00002822 0x00000200 && tftpput 0x50000000 0x00040000 mmcblk0p7_0DEVCFG_1.bin
mmc read 0x50000000 0x00002a22 0x00000200 && tftpput 0x50000000 0x00040000 mmcblk0p8_0RPM.bin
mmc read 0x50000000 0x00002c22 0x00000200 && tftpput 0x50000000 0x00040000 mmcblk0p9_0RPM_1.bin
mmc read 0x50000000 0x00002e22 0x00000200 && tftpput 0x50000000 0x00040000 mmcblk0p10_0CDT.bin
mmc read 0x50000000 0x00003022 0x00000200 && tftpput 0x50000000 0x00040000 mmcblk0p11_0CDT_1.bin
mmc read 0x50000000 0x00003222 0x00000200 && tftpput 0x50000000 0x00040000 mmcblk0p12_0APPSBLENV.bin
mmc read 0x50000000 0x00003422 0x00000500 && tftpput 0x50000000 0x000a0000 mmcblk0p13_0APPSBL.bin
mmc read 0x50000000 0x00003922 0x00000500 && tftpput 0x50000000 0x000a0000 mmcblk0p14_0APPSBL_1.bin

mmc read 0x50000000 0x00003e22 0x00000200 && tftpput 0x50000000 0x00040000 mmcblk0p15_0ART.bin
mmc read 0x50000000 0x00004022 0x00003000 && tftpput 0x50000000 0x00600000 mmcblk0p16_0HLOS.bin
mmc read 0x50000000 0x00007022 0x00003000 && tftpput 0x50000000 0x00600000 mmcblk0p17_0HLOS_1.bin
mmc read 0x50000000 0x0000a022 0x0001e000 && tftpput 0x50000000 0x03c00000 mmcblk0p18_rootfs.bin
mmc read 0x50000000 0x00028022 0x00002000 && tftpput 0x50000000 0x00400000 mmcblk0p19_0WIFIFW.bin
mmc read 0x50000000 0x0002a022 0x0001e000 && tftpput 0x50000000 0x03c00000 mmcblk0p20_rootfs_1.bin
mmc read 0x50000000 0x00048022 0x00002000 && tftpput 0x50000000 0x00400000 mmcblk0p21_0WIFIFW_1.bin
mmc read 0x50000000 0x0004a022 0x0000a000 && tftpput 0x50000000 0x01400000 mmcblk0p22_rootfs_data.bin
mmc read 0x50000000 0x00054022 0x00000400 && tftpput 0x50000000 0x00080000 mmcblk0p23_0ETHPHYFW.bin
mmc read 0x50000000 0x00054422 0x0002bc00 && tftpput 0x50000000 0x05780000 mmcblk0p24_plugin.bin

mmc read 0x50000000 0x00080022 0x00020000 && tftpput 0x50000000 0x04000000 mmcblk0p25_log1.bin
mmc read 0x50000000 0x000a0022 0x00020000 && tftpput 0x50000000 0x04000000 mmcblk0p25_log2.bin
mmc read 0x50000000 0x000c0022 0x00020000 && tftpput 0x50000000 0x04000000 mmcblk0p25_log3.bin
mmc read 0x50000000 0x000e0022 0x00020000 && tftpput 0x50000000 0x04000000 mmcblk0p25_log4.bin
mmc read 0x50000000 0x00100022 0x00016000 && tftpput 0x50000000 0x02c00000 mmcblk0p25_log5.bin

mmc read 0x50000000 0x00116022 0x00020000 && tftpput 0x50000000 0x04000000 mmcblk0p26_swap1.bin
mmc read 0x50000000 0x00136022 0x00020000 && tftpput 0x50000000 0x04000000 mmcblk0p26_swap2.bin
mmc read 0x50000000 0x00156022 0x00020000 && tftpput 0x50000000 0x04000000 mmcblk0p26_swap3.bin
mmc read 0x50000000 0x00176022 0x00020000 && tftpput 0x50000000 0x04000000 mmcblk0p26_swap4.bin
mmc read 0x50000000 0x00196022 0x00020000 && tftpput 0x50000000 0x04000000 mmcblk0p26_swap5.bin
mmc read 0x50000000 0x001b6022 0x00020000 && tftpput 0x50000000 0x04000000 mmcblk0p26_swap6.bin
mmc read 0x50000000 0x001d6022 0x00020000 && tftpput 0x50000000 0x04000000 mmcblk0p26_swap7.bin
mmc read 0x50000000 0x001f6022 0x00020000 && tftpput 0x50000000 0x04000000 mmcblk0p26_swap8.bin

这些命令会将备份文件直接上传到电脑上与 tftpd64.exe 文件相同的目录中。

5 刷入 U-Boot

下载 U-Boot 文件,自行修改命令中的 uboot.bin 为实际的文件名称。

5.1 SSH

使用 MobaXterm 的 SFTP 将文件上传到 /tmp 目录,然后执行以下命令:

dd if=/tmp/uboot.bin of=$(blkid -t PARTLABEL=0:APPSBL -o device) conv=fsync
dd if=/tmp/uboot.bin of=$(blkid -t PARTLABEL=0:APPSBL_1 -o device) conv=fsync

上述命令会将 U-Boot 刷入 mmcblk0p13(0:APPSBL)mmcblk0p14(0:APPSBL_1) 分区。

5.2 TTL

将文件放在与 tftpd64.exe 文件相同的目录中,然后在 MobaXterm 中执行以下命令:

tftpboot uboot.bin && flash 0:APPSBL && flash 0:APPSBL_1

上述命令会将 U-Boot 刷入 mmcblk0p13(0:APPSBL)mmcblk0p14(0:APPSBL_1) 分区。

6 刷入固件

成功刷入 U-Boot 后,就可以断开路由器电源,准备进行刷入固件。

提示:

如果是 TTL 刷机的方式,这时也可以拔出 USB 转 TTL 适配器,关闭 TFTP 服务器。

  1. 首先使用网线将路由器的 LAN 口和电脑的网口连接,长按重置按钮,再次接通路由器电源,当状态指示灯由闪烁红光变为常亮蓝光时,松开重置按钮。
  2. 设置以太网 IP:

    • 打开 控制面板 > 网络和共享中心 > 更改适配器设置
    • 右键点击 以太网 > 属性
    • 双击 Internet 协议版本 4 (TCP/IPv4)
    • 选择 使用下面的 IP 地址 并输入以下信息:

      • IP 地址:192.168.1.2
      • 子网掩码:255.255.255.0
      • 默认网关:192.168.1.1
  3. 在浏览器中访问 http://192.168.1.1,登录到路由器的 uboot web 界面。
  4. 在页面上点击 选择文件,并选择要更新的固件文件。
  5. 点击 更新固件,此时状态指示灯将闪烁蓝光,表示固件正在上传。
  6. 上传完成后,页面将显示 UPDATE IN PROGRESS,状态指示灯会闪烁红光然后常亮绿光。
  7. 新建一个标签页重新打开 http://192.168.1.1,如果一切正常,将会看到登录页面。默认用户名为 root,密码为 password

至此,就可以愉快地玩机啦!

Last modification:May 8th, 2024 at 09:15 pm
如果觉得我的文章对你有用,请随意赞赏