京東雲亞瑟通刷教程代碼(完整版)

本教程提供京東雲亞瑟路由器的完整刷機代碼,包含SSH解鎖和分區備份的詳細步驟。適用於不同固件版本的亞瑟路由器,請根據自己的固件版本選擇對應的方法。

一、解鎖SSH

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

直接瀏覽器登入路由器,瀏覽器上按F12打開控制台,在Console選項卡下方編輯區域貼上並回車運行下方代碼。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
$.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

首先確認分區二的名稱:

1
lsblk

這一步主要目的是確認下分區二的名稱,建立軟連結會用到,輸入下面命令:

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

分區掛載

這裡系統出現了報錯,我仔細看了下。sda2掛載的路徑與命令行裡的不同。把/mnt 替換成現在這個路徑也可以。或者我們可以創建一個/mnt/sda2 的路徑然後把sda2掛載過去:

1
2
3
4
5
6
# 創建文件夾
mkdir -p /mnt/sda2
# 掛載sda2 注意這裡的路徑不能照抄,需要根據自己的實際路徑
mount /dev/sda2 /mnt/sda2
# 再查看是否掛載成功
lsblk

掛載成功

掛載成功之後再進入文件夾:

1
cd /mnt/sda2

然後再去執行創建軟連結的命令:

1
2
3
4
5
6
7
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盤上的資料)

U盤映像

綁定亞瑟,開啟webdav

這一步的重點是綁定路由器後,關閉系統自動升級!防止京東雲給我們升級了系統!

無線寶APP

▲ 打開無線寶APP,手機連接亞瑟WiFi網絡,路由器WAN口接入互聯網,然後搜索設備、立即綁定、輸入後台密碼、綁定成功後關閉自動升級。

外置存儲設置

來到外置存儲設置→智能加速服務→選擇sda1分區→確認

這一步完成後打開WIN10系統連接亞瑟的網絡,準備進行下一步。

注意: win11和win10在創建網絡位置是一樣的,不過因為地址是http的,需要修改一下註冊表設置,網上搜webdav+http即可。

掛載sda2分區,修改文件開啟SSH

打開→此電腦→右鍵空白處→添加一個網絡位置→自定義網絡位置

網絡位置

▲ 填入:http://192.168.68.1:56589 如果56589端口不行,換56590端口試試,一般就這倆端口,剩下的一直下一步,默認會打開sda5文件夾。

webdav掛載

webdav掛載成功,可以編輯done和rc.local這兩個文件了,這裡使用Notepad++編輯器

編輯rc.local

▲ rc.local是配置開機自啟動的,在exit 0前一行加上/usr/sbin/dropbear,意思是開啟SSH服務,保存即可。

編輯done

▲ done默認14 15 16這三行被註釋掉了,把註釋#號去掉,意思是讓rc.local這個文件生效,保存即可。

然後可以拔掉U盤了,可以在系統後台重啟路由器,咱直接斷電、通電重啟,簡單粗暴,不出意外的話,SSH打開了!

1.3:r2262之後到R2279之前的固件

參考連結:https://www.bilibili.com/read/cv21907565/

1
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:

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

刷其他OP沒有掛載的,自己新建文件夾並掛載,然後再 ls -l /mnt 檢查:

1
2
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:

1
2
3
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鏡像了。

複製命令貼上一起執行:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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分區

1
2
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一致即可(注意這步不是必須得,為了保險起見大家可以檢查一下):

1
2
3
4
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並安裝

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#我是上傳到了阿里雲的 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:

1
2
3
4
5
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值

1
2
3
## 亞瑟 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/

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 格式化 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終端,輸入下面命令:

1
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文件

1
tftpboot u-boot.mbn

然後再執行如下命令後回車

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

等待執行完成後即可,給路由器斷電,斷開TTL連接,網線連接保留。 接下來我們可以進入uboot模式 如果要備份原來的系統分區。可以刷入一個低版本的固件。通過第一種方法解鎖ssh,解鎖後就可以進行分區備份了。 不想備份的也可以直接刷第三方的系統。

總結

本教程提供了京東雲亞瑟路由器的完整刷機代碼,包含不同固件版本的SSH解鎖方法、完整的分區備份流程、uboot文件上傳刷寫、分區表修改以及TTL刷機等全套操作。請根據自己的固件版本選擇對應的SSH解鎖方法,並在刷機前做好分區備份,以防萬一。

重要提醒:

  1. 操作前請確認固件版本
  2. 建議先備份分區再進行刷機操作
  3. 新版本固件可能已經封堵SSH解鎖方法
  4. uboot刷寫操作需要謹慎,確保文件完整性
  5. 分區表修改前請驗證md5值
  6. TTL刷機需要硬件操作,請注意電平匹配
  7. 操作有風險,請謹慎進行