京东云AX1800-Pro亚瑟_AX6600雅典娜 高通9008端口救砖USB救砖教程
资料来自网上各位大神!
PS:路由器不像手机,USB 可以控制电源输入输出,路由器的 USB 电源是直接输出的。我多次测试 USB 救砖,有时还插着 USB 线启动固件,然后就发现路由器 USB 的 5V 不出电压,坏了。USB 线接电脑和路由器,两端都输出 5V,相当于 5V 并联,但电源不能简单直接并联使用,会产生反灌电流、输出异常等问题。怀疑反灌电流把路由器 USB 的 5V 电源芯片搞坏了,更换之后好了。也许是个例,建议有条件的可以把 USB 线的 5V 线剪断(一般是比较粗的红色那根),或者在接口 5V 的铜片上贴胶带等方式断开 5V,地线不用剪,防止反灌电流。
首先明确可以不拆机的情况:
只要变砖后使用双公头 USB-A 线(有 Tpye-C 接口的也可以用一头 Tpye-C 一头 USB-A 数据线)接路由器和电脑,电脑设备管理器显示 QUSB 或 Qualcomm HS-USB QDLoader 9008 的,就可以直接救砖。会导致变砖路由器直接进入高通 9008 模式的情况:
1. 刷坏 gpt 分区表,导致不能启动 SBL1,只擦除 gpt 的话会使用 EMMC 最后 33 个扇区保存的备份 gpt 启动,不会砖;
2. 擦除或者刷其他文件(非 ipq60xx 系列 SBL1)到 SBL1 分区,QSEE、DEVCFG、RPM 这个分区同理,不过这个几个没什么刷的;
3. 擦除 uboot 分区(即 0:APPSBL 分区)或者刷了其他文件(非 ipq60xx 系列 uboot)到该分区;
4. 擦除 cdt 分区(即 0:CDT 分区)或者刷了非 cdt 文件到该分区。
需要拆机短接电阻进入高通 9008 模式的情况:
1. 刷错了 ipq60xx 系列 uboot(如 ax5_jdc gl-ax1800 uboot)到 uboot 分区,这种情况会启动 SBL1 加载 uboot,导致不能直接进 9008,要拆机用镊子短接启动电阻焊盘,才可以进 9008;
2. 刷错了 cdt(如 ax5_jdc gl-ax1800 cdt)到 cdt 分区。
亚瑟短接
亚瑟启动电阻焊盘在板子背面,靠近 TTL 的地方,用镊子短接,然后上电路由器,等两秒再松开即可:

雅典娜短接
雅典娜启动电阻焊盘在 CPU 边上,用镊子短接,然后上电路由器,等两秒再松开即可:

运行文件夹中的“打开设备管理器命令.bat”,会打开设备管理器。PS:要用管理员打开
USB 线一头插路由器,一头插电脑,然后路由器上电。
插上USB
如正常,此时还没安装驱动,点开设备管理器“其他设备”下有个 QUSB 设备:

注意:不符合不需拆机情况的,需要短接启动电阻再上电,等两秒再松开短接。
运行文件夹中的 Qualcomm USB Driver.exe 安装驱动,一路同意允许下一步即可。
驱动安装
安好驱动后,可以在设备管理器“端口 (COM 和 LPT)”看到 9008 已连接上,记住 COM 口号,下面要用到。
运行刷机命令
运行文件夹中个“USB 命令.bat”,选择对应的机型后回车,然后输入上面 9008 对应的 COM 口号码后回车,命令会开始上传 SBL1。
CMD 对话框输出如下信息,同时注意观察“设备管理器”那里会刷新两次,刷新两次之后等 5 秒则路由器已经重新连接了。

如果报错
ERROR: function: main:287 Could not connect to \\.\COM5
或者
INFO: function: main:273 Port name '\\.\COM5'
EVENT: STATE <-- SAHARA_WAIT_HELLO
关闭 CMD 对话框,检查 COM 是否被占用,路由器断电,再重新来。
如果正常上传 SBL1,你接了 TTL 可以看到此时输出停在 usb: ENUM success。
不过我们不需要 TTL,可以直接启动系统或者进 uboot webui 救砖就行了。
等待 5 秒后,按任意键继续,如果没问题会输出如下,同时注意看路由器指示灯会亮起,此时马上按住 reset 按键,等待红灯闪烁,变为蓝灯可以松开 reset,这时已经进入 uboot webui,可以设置电脑 IP 192.168.1.2/24,然后浏览器访问 192.168.1.1。建议关闭所有网页,重新打开浏览器去打开 192.168.1.1,避免出错。
uboot 正常启动后建议 USB 线没有断开 5V 的,先把 USB 断开。
【注意】部分机器要设置网卡速率为10M 不然 进入UBoot后链接不到web后台
个别机友反应刷 uboot 后设置固定 ip 进不来 uboot 的 webui。这个可能是网卡和 uboot 的驱动不兼容,此时可尝试将网卡速率的自动协商手动修改为 10M 全双工,再尝试访问 webui。刷好固件后再修改回自动协商。
当然,如果你路由器的系统分区没有坏,建议不按 reset 按钮,直接加载启动系统,系统启动后再恢复刷砖的分区。
雅典娜原厂是两颗 512M DDR4 内存,QSahara 文件夹的雅典娜 CDT 是原厂双内存 CDT,如果雅典娜改了内存,只用单颗内存,用原厂 CDT 是启动不了的,可以用文件夹中的单内存 cdt-JDC_AX6600_Athena_1024M16_DDR4_2G.bin 改名替换 mmcblk0p10_0CDT_AX6600_Athena.bin 后再尝试。或者用自己能用的 CDT。 这里标记一下 要是更欢 颗粒的话要注意. 次 CDT 只支持单晶的颗粒. 如果是双晶的 2G 也只能当 1G 的用. 至于区分 购买颗粒前先了解一下.
进入 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 保存下分区表,使用命令 echo -e 'w' | fdisk /dev/mmcblk0。如果刷分区表后在系统中用分区表工具新建了分区,也会保存分区表,可以不用上面 fdisk 保存分区表了。
如果是 SBL1、QSEE、DEVCFG 或 RPM 刷砖了,可在 img.html 上刷对应的 EMMC IMG 合成镜像。
如 RPM 分区刷砖了,用备份合成一个 GPT 到 mmcblk0p9_0RPM_1.bin 的 IMG 镜像,按下列顺序合成:
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 文件合并工具 V1.1.rar
合并,或者使用下面命令合并(自行修改文件名,注意文件顺序)。
Linux:
cat file1.bin file2.bin file3.bin > merged_file.bin
Windows:
copy /B file1.bin + file2.bin + file3.bin merged_file.bin
其他镜像依次类推。
恢复 IMG 镜像后,要进入 OP 恢复自己的各个分区数据,特别是 mmcblk0p12_0APPSBLENV.bin 和 mmcblk0p15_0ART.bin 分区保存着本机的 MAC 地址信息,如果被覆盖了,要恢复一下,如果系统没坏,不用刷固件,系统坏了再进 uboot 刷下固件。
刷分区表建议使用这个命令,fdisk 检查分区表错误。最后还是 fdisk -l /dev/mmcblk0 自己检查下分区表
dd if=/tmp/mmcblk0_GPT.bin of=/dev/mmcblk0 bs=512 count=34 conv=fsync && echo -e 'w' | fdisk /dev/mmcblk0
恢复其他分区
dd if=/tmp/mmcblk0p1_0SBL1.bin of=$(blkid -t PARTLABEL=0:SBL1 -o device) conv=fsync
dd if=/tmp/mmcblk0p2_0BOOTCONFIG.bin of=$(blkid -t PARTLABEL=0:BOOTCONFIG -o device) conv=fsync
dd if=/tmp/mmcblk0p3_0BOOTCONFIG1.bin of=$(blkid -t PARTLABEL=0:BOOTCONFIG1 -o device) conv=fsync
dd if=/tmp/mmcblk0p4_0QSEE.bin of=$(blkid -t PARTLABEL=0:QSEE -o device) conv=fsync
dd if=/tmp/mmcblk0p5_0QSEE_1.bin of=$(blkid -t PARTLABEL=0:QSEE_1 -o device) conv=fsync
dd if=/tmp/mmcblk0p6_0DEVCFG.bin of=$(blkid -t PARTLABEL=0:DEVCFG -o device) conv=fsync
dd if=/tmp/mmcblk0p7_0DEVCFG_1.bin of=$(blkid -t PARTLABEL=0:DEVCFG_1 -o device) conv=fsync
dd if=/tmp/mmcblk0p8_0RPM.bin of=$(blkid -t PARTLABEL=0:RPM -o device) conv=fsync
dd if=/tmp/mmcblk0p9_0RPM_1.bin of=$(blkid -t PARTLABEL=0:RPM_1 -o device) conv=fsync
dd if=/tmp/mmcblk0p10_0CDT.bin of=$(blkid -t PARTLABEL=0:CDT -o device) conv=fsync
dd if=/tmp/mmcblk0p11_0CDT_1.bin of=$(blkid -t PARTLABEL=0:CDT_1 -o device) conv=fsync
dd if=/tmp/mmcblk0p12_0APPSBLENV.bin of=$(blkid -t PARTLABEL=0:APPSBLENV -o device) conv=fsync
dd if=/tmp/mmcblk0p15_0ART.bin of=$(blkid -t PARTLABEL=0:ART -o device) conv=fsync
QSaharaServer 中的 img id:
https://gitee.com/sususususu/Qualcomm-IPQ8074/blob/master/meta-tools/scripts/mbn_tools.py#L202
class ImageType:
NONE_IMG = 0
OEM_SBL_IMG = 1
AMSS_IMG = 2
QCSBL_IMG = 3
HASH_IMG = 4
APPSBL_IMG = 5
APPS_IMG = 6
HOSTDL_IMG = 7
DSP1_IMG = 8
FSBL_IMG = 9
DBL_IMG = 10
OSBL_IMG = 11
DSP2_IMG = 12
EHOSTDL_IMG = 13 # If the board was bricked (flash does not have a valid booting image)
NANDPRG_IMG = 14
NORPRG_IMG = 15
RAMFS1_IMG = 16
RAMFS2_IMG = 17
ADSP_Q5_IMG = 18
APPS_KERNEL_IMG = 19
BACKUP_RAMFS_IMG = 20
SBL1_IMG = 21 # If the boot from USB option is selected
SBL2_IMG = 22
RPM_IMG = 23
SBL3_IMG = 24
TZ_IMG = 25
PSI_IMG = 32
https://github.com/openpst/libopenpst/blob/master/include/qualcomm/mbn.h
enum MbnImageId {
kMbnImageNone = 0x00, //0
kMbnImageOemSbl = 0x01, //1
kMbnImageAmss = 0x02, //2
kMbnImageOcbl = 0x03, //3
kMbnImageHash = 0x04, //4
kMbnImageAppbl = 0x05, //5
kMbnImageApps = 0x06, //6
kMbnImageHostDl = 0x07, //7
kMbnImageDsp1 = 0x08, //8
kMbnImageFsb = 0x09, //9
kMbnImageDbl = 0x0A, //10
kMbnImageOsb = 0x0B, //11
kMbnImageDsp2 = 0x0C, //12
kMbnImageEhostdl = 0x0D, //13
kMbnImageNandprg = 0x0E, //14
kMbnImageNorprg = 0x0F, //15
kMbnImageRamfs1 = 0x10, //16
kMbnImageRamfs2 = 0x11, //17
kMbnImageAdspQ5 = 0x12, //18
kMbnImageAppsKernel = 0x13, //19
kMbnImageBackupRamfs = 0x14, //20
kMbnImageSbl1 = 0x15, //21
kMbnImageSbl2 = 0x16, //22
kMbnImageRpm = 0x17, //23
kMbnImageSbl3 = 0x18, //24
kMbnImageTz = 0x19, //25
kMbnImageSsdKeys = 0x1A, //26
kMbnImageGen = 0x1B, //27
kMbnImageDsp3 = 0x1C, //28
kMbnImageAcdb = 0x1D, //29
kMbnImageWdt = 0x1E, //30
kMbnImageMba = 0x1F, //31
kMbnImageLast = kMbnImageMba
};
bool init_sahara_mapping_list(void) {
add_sahara_mapping(2, "amss.mbn");
add_sahara_mapping(6, "apps.mbn");
add_sahara_mapping(8, "dsp1.mbn");
add_sahara_mapping(10, "dbl.mbn");
add_sahara_mapping(11, "osbl.mbn");
add_sahara_mapping(12, "dsp2.mbn");
add_sahara_mapping(16, "efs1.mbn");
add_sahara_mapping(17, "efs2.mbn");
add_sahara_mapping(20, "efs3.mbn");
add_sahara_mapping(21, "sbl1.mbn");
add_sahara_mapping(22, "sbl2.mbn");
add_sahara_mapping(23, "rpm.mbn");
add_sahara_mapping(25, "tz.mbn");
add_sahara_mapping(28, "dsp3.mbn");
add_sahara_mapping(29, "acdb.mbn");
add_sahara_mapping(30, "wdt.mbn");
return add_sahara_mapping(31, "mba.mbn");
};
资料来自网上。 经测试可行!
一些需要的附件 工具在此