京东云亚瑟通刷教程代码(完整版)

一、解鎖 SSH

1.1:1.5.40.r2181(2022-03-01) 及之前版本开启 SSH 的方法:

直接浏览器登录路由器,浏览器上按 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"
})

如果无法复制的话,直接在 Console 输入 allow pasting 后 Enter 即可开启(右键)复制贴上等功能

然后就可以 SSH 登录路由器了,IP 192.168.68.1,端口 22,用户名 root,密码是路由器登录密码。注:如果 Console 不能输入代码,先解除浏览器上的限制。

1.2:r2262 之前固件版本开 SSH(参考教程:https://mao.fan/article/72

lsblk

这一步主要目的是确认下分区二的名称,建立软链接会用到,输入下面命令:

ln -s /etc/rc.local /mnt/sda2/rc.local
ln -s /etc/init.d/done  /mnt/sda2/done

京东云亚瑟通刷教程代码(完整版)

这里系统出现了报错,我仔细看了下。sda2 挂载的路径与命令行里的不同。把 /mnt 替换成现在这个路径也可以。
或者我们可以创建一个 /mnt/sda2 的路径 然后把 sda2 挂载过去


#创建文件夹
mkdir -p /mnt/sda2
#挂载 sda2 注意这里的路径不能照抄,需要根据自己的实际路径
mount /dev/sda2 /mnt/sda2
#再查看是否挂载成功
lsblk

京东云亚瑟通刷教程代码(完整版)

挂载成功之后再进入文件夹:

cd /mnt/sda2

然后再去执行创建软链接的命令:

ln -s /etc/rc.local /mnt/sda2/rc.local
ln -s /etc/init.d/done  /mnt/sda2/done

ls -l
cd /
umount /mnt/sda2
poweroff

在视频教程里我给给出更简单的解决方案。直接把我提供的映像文件刷入一个大于空间 16G 的 u 盘或者移动硬盘就可以达到同样的效果。(注意这步操作会格式化 u 盘,要提前备份好 u 盘上的资料)

京东云亚瑟通刷教程代码(完整版)

然后绑定亚瑟,开启 webdav
这一步的重点是绑定路由器后,关闭系统自动升级!防止京东云给我们升级了系统!
京东云亚瑟通刷教程代码(完整版)

▲ 打开无线宝 APP,手机连接亚瑟 WiFi 网络,路由器 WAN 口接入互联网,然后搜索设备、立即绑定、输入后台密码、绑定成功后关机自动升级。

京东云亚瑟通刷教程代码(完整版)

来到外置存储设置→智能加速服务→选择 sda1 分区→确认
这一步完成后打开 WIN10 系统连接亚瑟的网络,准备进行下一步。(注:2.win11 和 win10 在创建网络位置是一样的,不过因为地址是 http 的,需要修改一下注册表设置,网上搜 webdav+http 即可。)

挂载 sda2 分区,修改文件开启 SSH
打开→此电脑→右键空白处→添加一个网络位置→自定义网络位置
京东云亚瑟通刷教程代码(完整版)

▲ 填入:http://192.168.68.1:56589 如果 56589 端口不行,换 56590 端口试试,一般就这俩端口,剩下的一直下一步,默认会打开 sda5 文件夹。

京东云亚瑟通刷教程代码(完整版)

webdav 挂载成功,可以编辑 done 和 rc.local 这两个文件了,这里使用 Notepad++ 编辑器
京东云亚瑟通刷教程代码(完整版)

▲ rc.local 是配置开机自启动的,在 exit 0 前一行加上 /usr/sbin/dropbear,意思是开启 SSH 服务,保存即可。

京东云亚瑟通刷教程代码(完整版)

▲ done 默认 14 15 16 这三行被注释掉了,把注释 #号去掉,意思是让 rc.local 这个文件生效,保存即可。
然后可以拔掉 U 盘了,可以在系统后台重启路由器,咱直接断电、通电重启,简单粗暴,不出意外的话,SSH 打开了!

1.3:r2262 之后到 R2279 之前的固件可以参考链接:https://www.bilibili.com/read/cv21907565/

ln -s /lib/config/uci.sh /mnt/sda2/uci.sh

这个 uci.sh 文件我已经做好了,一并放到了映像文件里。

注:因为固件联网会自动接收下发的热补丁干掉 SSH 进程,所以需要先断网,再重置系统才能开门。
SSH 开门后,只要联网也会下方补丁,SSH 就没了。
详见 https://www.right.com.cn/forum/forum.php?mod=redirect&goto=findpost&ptid=8278061&pid=18501460

1.5.80.r2262 方法中在 Linux 或带 USB 的 openwrt 中生成 uci.sh 文件的快捷方式,将系统中的 uci.sh 映射到移动硬盘第二分区的 uci.sh,以便通过添加网络位置编辑 uci.sh,后面通过网络位置编辑 uci.sh 需要不报错正常保存才可以。

1.5.81.r2279(2023-04-06)、新版本 4.0.0.r4015(2023-10-16) 目前未见公开解锁 SSH 方法。

二、备份分区

(非必须步骤,备份分区是为了以后可以吃后悔药,或者方便机器被刷坏了以后恢复。如果没有以上需求也可以选择不备份)
刷其他第三方 OP 固件再备份也可,自行选择。
第三方 OP 固件是单分区的,刷固件只是覆盖 0:HLOS 和 rootfs 这两个分区,不会影响其他分区数据。
固件启动后 SSH 输入 ls -l /mnt 查看是是否挂载了 /mnt/mmcblk0p27

root@JDBoxV2:~# ls -l /mnt
drwxrwxrwx    4 root     root          4096 Mar 24 15:20 mmcblk0p27

刷其他 OP 没有挂载的,自己新建文件夹并挂载,然后再 ls -l /mnt 检查:

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

然后按照老方法备份到 eMMC 的 storage 分区即 /mnt/mmcblk0p27,再通过 WinScp 登录路由器下载保存。
WinScp 软件登录原厂系统,协议 SCP,IP 192.168.68.1,端口 22。
WInScp 下载大文件会提示主机超过 15 秒无通信,需要登录时点击高级,高级站点设置 - 连接 去掉勾选“优化连接缓冲大小”,再登录。如果心疼读写 2G 数据到 eMMC 的话,备份到 USB 移动硬盘也可以,命令中 /mnt/mmcblk0p27 替换为 USB 的挂载点例如 /mnt/sda1 即可。
确保 USB 移动硬盘有 2G 剩余空间,插上后查看移动硬盘的挂载点,这里是 /mnt/sda1。

root@JDBoxV2:~# ls -l /mnt
drwxrwxrwx    4 root     root          4096 Mar 24 15:20 mmcblk0p27
drwxrwxrwx    2 root     root          1024 Mar  1  2022 sda1

只备份 GPT 分区表和 mmcblk0p1-26,mmcblk0p27 是京东云跑分缓存数据,太大且恢复跑分可以重新缓存,不备份了。
建议分开备份分区,后面需要的时候只要按顺序合并就得到了 mmcblk0p0-26.img 镜像了。

复制命令粘贴一起执行:

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

三、上传 uboot 文件

传 uboot 文件 uboot-JDC_AX1800_Pro-AX6600_Athena-20240510.bin 到 tmp 文件夹,然后 SSH 输入命令刷写 uboot 到 0:APPSBL 和 0:APPSBL_1 分区

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

这里可以输入命令检查分区 md5 hash 值,和我这版 2024.05.10 编译的 md5 一致即可(注意这步不是必须得,为了保险起见大家可以检查一下):

md5sum $(blkid -t PARTLABEL=0:APPSBL -o device) && md5sum $(blkid -t PARTLABEL=0:APPSBL_1 -o device)
#以下分别是两个分区的 MD5 值
5e1817f795ada48335fda9f22545a43e  /dev/mmcblk0p13
5e1817f795ada48335fda9f22545a43e  /dev/mmcblk0p14

3.2:方法 2:在线下载 uboot 并安装

# 我是上传到了阿里云的 oss 上,通过 curl 下载,也可以通过其他方式比如 WinSCP 上传到路由器里面
# 如果是通过 curl 下载,此时路由器需要插上 WAN 口连上互联网,可以给 WAN 口接上网线
curl -o u-boot.mbn http://oss-hk4.oss-cn-hongkong.aliyuncs.com/tmp/u-boot.mbn 

# 确认文件存在且大小正确,我编译的文件大小是 644624
ls -l /root/u-boot.mbn

# 刷入 u-boot,此步骤需要谨慎,刷错可能导致路由器无法启动,需要确保文件存在且完整
# 如果文件不完整这一步可能会导致路由器无法启动,所以一定要确认文件大小和完整性
dd if=/root/u-boot.mbn of=/dev/mmcblk0p13 
dd if=/root/u-boot.mbn of=/dev/mmcblk0p14

四、修改分区表文件夹中的 gpt 文件

rootfs512M 对应 rootfs 是 512MB 大小,依次类推(一般是针对体积比较大的固件才需要扩容,如果可以刷的下的话我们可以在系统中再扩容)
详细内容可以看原文链接:https://github.com/lgs2007m/Actions-OpenWrt/blob/main/%E5%88%B7%E6%9C%BA%E6%95%99%E7%A8%8B/%E4%BA%AC%E4%B8%9C%E4%BA%91AX1800-Pro%E4%BA%9A%E7%91%9F_AX6600%E9%9B%85%E5%85%B8%E5%A8%9C%E5%88%86%E5%8C%BA%E5%A4%87%E4%BB%BD+TTL%E5%8F%8C%E5%88%86%E5%8C%BA%E5%88%B7%E6%9C%BA+%E5%9B%9E%E5%8E%9F%E5%8E%82+USB%E6%95%91%E7%A0%96%E6%95%99%E7%A8%8B20240510.md
上传你需要的 rootfs 大小的 gpt 分区表文件到 tmp 文件夹,先验证 md5:

root@JDBoxV2:~# md5sum /tmp/gpt-JDC_*_dual-boot_rootfs*M_no-last-partition.bin
## 亚瑟 gpt md5
9d9e3803ba541ff38449acd181026b28  /tmp/gpt-JDC_AX1800_Pro_dual-boot_rootfs512M_no-last-partition.bin
5aaf1b606458fbffc72342540db9bc52  /tmp/gpt-JDC_AX1800_Pro_dual-boot_rootfs1024M_no-last-partition.bin
b93b4823af2b4fc31d22c25468181e7a  /tmp/gpt-JDC_AX1800_Pro_dual-boot_rootfs2048M_no-last-partition.bin

你上传的文件的 md5 信息和上面对应文件的 md5 对比,没问题即可。
接着修改下面命令中的 gpt 文件名为你上传的文件名,然后复制命令粘贴一起执行:
(只修改 gpt 文件名,其他不变,这里以 rootfs512M 的分区表为例)
第 1 条 dd 命令是写入 gpt 文件到 /dev/mmcblk0 的前 34 个扇区
第 2 条是 dd 读取分区表传递给 md5sum 校验数据的 md5 值

## 亚瑟 rootfs size 512M GPT
dd if=/tmp/gpt-JDC_AX1800_Pro_dual-boot_rootfs512M_no-last-partition.bin of=/dev/mmcblk0 bs=512 count=34 conv=fsync
dd if=/dev/mmcblk0 bs=512 count=34 | md5sum

查看输出的 md5,和上传文件的 md5 一样即可断电进 uboot 刷 factory.bin 固件了。
刷第三方 OP 固件后再进行新建分区、还原分区操作。

4.2:刷好系统之后,在系统中扩容

参考教程:https://post.smzdm.com/p/a7p2opw5/

# 格式化 mmcblk0p27 大分区
umount /dev/mmcblk0p27
mkfs.ext4 -F /dev/mmcblk0p27
# 复制当前 overlay 文件到 mmcblk0p27
mkdir -p /mnt/mmcblk0p27
mount /dev/mmcblk0p27 /mnt/mmcblk0p27
cp -r /overlay/* /mnt/mmcblk0p27
ls /mnt/mmcblk0p27
# 修改分区
block detect > /etc/config/fstab
sed -i s#/mnt/mmcblk0p27#/overlay# /etc/config/fstab
sed -i '12s/1/0/g' /etc/config/fstab
# 重启路由器
reboot

原方法有大概 10 步操作,对于不熟悉命令行的小白来说,有点复杂,我写了一个一键脚本,两步操作即可完成软件包扩容!
扩容软件包空间
这个一键扩容脚本针对亚瑟刷 istore 版 OpenWrt 系统,其他版本可以确认下分区是否一致,酌情使用。

京东云亚瑟通刷教程代码(完整版)
▲ 系统→文件传输→选择文件 expand_overlay.sh 上传脚本
打开 TTYD 终端,输入下面命令:

chmod +x /tmp/upload/expand\_overlay.sh && /tmp/upload/expand\_overlay.sh

京东云亚瑟通刷教程代码(完整版)

▲ 等待几分钟,扩容成功后,路由器会重启。

京东云亚瑟通刷教程代码(完整版)

▲ 查看扩容成功!可以愉快的安装各种插件了~

五、TTl 刷机

先拆机,找到主板上的
电脑设置 ip 192.168.10.1/24,关闭防火墙,把 uboot 文件放在 tftp 服务软件根目录,打开 tftp 服务软件。
USB 转 TTL,亚瑟建议使用 1.8V 的 TTL 电平,雅典娜建议使用 3.3V 的,连接路由器串口,电脑使用串口软件打开串口。
串口 TTL 接线可以教程文件夹中的图片。
路由器上电后不停按回车,中断启动,然后输入命令上传 uboot 文件

tftpboot u-boot.mbn

然后再执行如下命令后回车

tftpboot u-boot.mbn && flash 0:APPSBL && flash 0:APPSBL_1

等待执行完成后即可,给路由器断电,断开 TTL 连接,网线连接保留。
接下来我们可以进入 uboot 模式 如果要备份原来的系统分区。可以刷入一个低版本的固件。通过第一种方法解锁 ssh,解锁后就可以进行分区备份了。
不想备份的也可以直接刷第三方的系统。

正文完
 0