京東雲(JDC)AX1800亞瑟-全版本(4215)刷機-9008救磚免TTL刷uboot教程

介紹

本教程將詳細介紹京東雲AX1800亞瑟路由器全版本(4215)的刷機方法,特別是使用9008救磚模式免TTL刷uboot的完整流程。此方法適用於各種刷磚情況的救援。

相關資源

視頻教程: 京東雲亞瑟全版本降級大法(支援4211)——高通9008救磚模式降級 0

工具檔案: 京東雲AX1800-Pro亞瑟_AX6600雅典娜分區備份+TTL雙分區刷機+回原廠+USB救磚檔案20240510

前置條件

重要提醒

路由器不像手機,USB可以控制電源輸入輸出,路由器的USB電源是直接輸出的。在多次測試USB救磚過程中,有時還插著USB線啟動韌體,然後就發現路由器USB的5V不出電壓,損壞了。USB線接電腦和路由器,兩端都輸出5V,相當於5V並聯,但電源不能簡單直接並聯使用,會產生反灌電流、輸出異常等問題。懷疑反灌電流把路由器USB的5V電源晶片搞壞了,更換之後好了。

也許是個例,建議有條件的可以把USB線的5V線剪斷(一般是比較粗的紅色那根),或者在接口5V的銅片上貼膠帶等方式斷開5V,地線不用剪,防止反灌電流。

必需工具

  1. USB-A公對公線
  2. 9008短接工具(鑷子)

9008短接步驟

亞瑟啟動電阻焊盤在板子背面,靠近TTL的地方,用鑷子短接,然後上電路由器,等兩秒再鬆開即可:

9008短接位置

驅動安裝

  1. 執行檔案夾中的「打開設備管理器命令.bat」,會打開設備管理器
  2. USB線一頭插路由器,一頭插電腦,然後路由器上電
  3. 如正常,此時還沒安裝驅動,點開設備管理器「其他設備」下有個QUSB設備:

QUSB設備

注意: 不符合不需拆機情況的,需要短接啟動電阻再上電,等兩秒再鬆開短接。

  1. 執行檔案夾中的Qualcomm USB Driver.exe安裝驅動,一路同意允許下一步即可
  2. 安好驅動後,可以在設備管理器「端口(COM和LPT)」看到9008已連接上,記住COM口號,下面要用到

9008驅動安裝完成

USB命令執行和SBL1上傳

  1. 執行檔案夾中個「USB命令.bat」,選擇對應的機型後回車
  2. 然後輸入上面9008對應的COM口號碼後回車,命令會開始上傳SBL1
  3. CMD對話框輸出如下資訊,同時注意觀察「設備管理器」那裡會刷新兩次,刷新兩次之後等5秒則路由器已經重新連接了

SBL1上傳過程

錯誤處理

如果報錯:

1
ERROR: function: main:287 Could not connect to \\.\COM5

或者:

1
2
INFO: function: main:273 Port name '\\.\COM5'
EVENT: STATE <-- SAHARA_WAIT_HELLO

關閉CMD對話框,檢查COM是否被占用,路由器斷電,再重新來。

uboot WebUI操作

如果正常上傳SBL1,你接了TTL可以看到此時輸出停在usb: ENUM success。不過我們不需要TTL,可以直接啟動系統或者進入uboot webui救磚就行了。

TTL輸出

等待5秒後,按任意鍵繼續,如果沒問題會輸出如下,同時注意看路由器指示燈會亮起,此時馬上按住reset按鍵,等待紅燈閃爍,變為藍燈可以鬆開reset,這時已經進入uboot webui,可以設定電腦IP 192.168.1.2/24,然後瀏覽器訪問192.168.1.1。建議關閉所有網頁,重新打開瀏覽器去打開192.168.1.1,避免出錯。

uboot正常啟動後建議USB線沒有斷開5V的,先把USB斷開。

注意: 個別機友反應刷uboot後設定固定ip進不來uboot的webui。這個可能是網卡和uboot的驅動不相容,此時可嘗試將網卡速率的自動協商手動修改為10M全雙工,再嘗試訪問webui。刷好韌體後再修改回自動協商。

當然,如果你路由器的系統分區沒有壞,建議不按reset按鈕,直接載入啟動系統,系統啟動後再恢復刷磚的分區。

uboot啟動成功

uboot WebUI功能

  • 更新韌體: 支援kernel為6MB大小的factory.bin和官方原廠韌體
    http://192.168.1.1

  • 更新ART:
    http://192.168.1.1/art.html

  • 更新CDT: 上傳CDT檔案需要大於10KB
    http://192.168.1.1/cdt.html

  • 更新IMG: 可更新GPT分區表或者EMMC IMG鏡像
    http://192.168.1.1/img.html

  • 更新U-BOOT:
    http://192.168.1.1/uboot.html

注意: 上傳檔案點擊更新後,藍燈會閃爍,然後更新,更新完後出現UPDATE IN PROGRESS頁面,同時綠燈會亮3秒,沒亮綠燈的是不成功,刷新瀏覽器192.168.1.1重新上傳並更新。

各種救磚情況處理

  • 如果是uboot刷磚了,此時可直接uboot.html更新uboot即可
  • 如果是cdt刷磚了,此時可直接cdt.html更新cdt即可
  • 如果是gpt分區表刷磚了,可在img.html更新gpt分區表檔案,然後系統啟動後SSH保存下分區表,使用命令:
1
echo -e 'w' | fdisk /dev/mmcblk0

如果刷分區表後在系統中用分區表工具新建了分區,也會保存分區表,可以不用上面fdisk保存分區表了。

如果是SBL1、QSEE、DEVCFG或RPM刷磚了,可在img.html上刷對應的EMMC IMG合成鏡像。

如RPM分區刷磚了,用備份合成一個GPT到mmcblk0p9_0RPM_1.bin的IMG鏡像,按下列順序合成:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
mmcblk0_GPT.bin
mmcblk0p1_0SBL1.bin
mmcblk0p2_0BOOTCONFIG.bin
mmcblk0p3_0BOOTCONFIG1.bin
mmcblk0p4_0QSEE.bin
mmcblk0p5_0QSEE_1.bin
mmcblk0p6_0DEVCFG.bin
mmcblk0p7_0DEVCFG_1.bin
mmcblk0p8_0RPM.bin
mmcblk0p9_0RPM_1.bin

使用「bin檔案合併工具」合併,或者使用下面命令合併(自行修改檔案名,注意檔案順序)。

SSH刷寫uboot和分區表

刷寫大分區

刷uboot和雙分區gpt分區表

注意: 用誰的uboot看誰的教程,我的uboot是亞瑟雅典娜通刷,別人的我不知道,不要亂用!!!

我這個uboot是可以亞瑟、雅典娜通用的,不區分雙分區、單分區,預設uboot刷韌體都會刷到0:HLOS、rootfs。

如果擦除了0:BOOTCONFIG和0:BOOTCONFIG1分區,則啟動只會用到第一個命名正常的分區(即不是尾部有「_1」的分區),uboot只會啟動系統分區0:HLOS、rootfs。

如果保留0:BOOTCONFIG和0:BOOTCONFIG1分區,則按分區裡面的設定啟動對應的系統分區。

為了更好支援原廠系統,我是保留0:BOOTCONFIG和0:BOOTCONFIG1支援雙分區的,gpt分區表也使用的是雙分區擴容分區表。

SSH刷寫步驟

MobaXterm(SSH等連接軟體): https://mobaxterm.mobatek.net/download.html

已開SSH的可以SSH刷寫,沒有看下方的拆機TTL方法。

WinScp上傳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
md5sum $(blkid -t PARTLABEL=0:APPSBL -o device) && md5sum $(blkid -t PARTLABEL=0:APPSBL_1 -o device)

正確的輸出應該是:

1
2
3
root@JDBoxV2:~# md5sum $(blkid -t PARTLABEL=0:APPSBL -o device) && md5sum $(blkid -t PARTLABEL=0:APPSBL_1 -o device)
5e1817f795ada48335fda9f22545a43e  /dev/mmcblk0p13
5e1817f795ada48335fda9f22545a43e  /dev/mmcblk0p14

分區表刷寫

分區表檔案夾中的gpt檔案,rootfs512M對應rootfs是512MB大小,依次類推。這個rootfs就是韌體+overlay的大小,overlay近似是刷韌體後剩餘軟體包空間大小,選擇自己需要的rootfs大小的分區表即可。

因為刷分區表是改變了後面的分區的偏移量,所以後面分區的資料就不能識別了。後面會講到,如果要回原廠跑分,需要先恢復log、plugin、swap,後面新建的最後一個storage分區也要格式化才能用。

注意亞瑟和雅典娜的gpt分區表不同,不要上傳錯了!!!

上傳你需要的rootfs大小的gpt分區表檔案到tmp檔案夾,先驗證md5:

1
md5sum /tmp/gpt-JDC_*_dual-boot_rootfs*M_no-last-partition.bin

正確的md5值:

1
2
3
4
5
6
7
8
9
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
##雅典娜gpt md5
3447887a5f47893fa099c7c076eeeee3  /tmp/gpt-JDC_AX6600_Athena_dual-boot_rootfs512M_no-last-partition.bin
1f8217d1f0e0478d2e884278ea30ece5  /tmp/gpt-JDC_AX6600_Athena_dual-boot_rootfs1024M_no-last-partition.bin
9a921ca450e8a5aebd218b7fd1d1c5a8  /tmp/gpt-JDC_AX6600_Athena_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:

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

雅典娜 rootfs size 512M GPT:

1
2
dd if=/tmp/gpt-JDC_AX6600_Athena_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韌體後再進行新建分區、還原分區操作。

第三方韌體推薦

然後可以開始刷第三方韌體:

總結

本教程提供了京東雲AX1800亞瑟路由器完整的9008救磚流程,包括硬體短接、驅動安裝、SBL1上傳、uboot WebUI操作以及SSH刷寫等步驟。通過這個方法,即使在嚴重刷磚的情況下也能成功救回路由器,為後續刷入第三方韌體打下基礎。

請務必按照步驟操作,注意各種安全提醒,特別是USB電源的處理,避免對硬體造成損害。