👁 3984

高通 IPQ60xx / IPQ53xx 平台 9008 (EDL) 模式救砖通用流程。本文是京东云无线宝全系——亚瑟(RE-SS-01)、雅典娜(RE-CS-02)、太乙(RE-CS-07)、赵云(RE-CS-06 / RE-CS-08)、连我 NN6000、双鱼 sy1800、飞利浦 ly1800——的公共救砖外链。U-Boot Web 还能进就别看本文,老老实实回主帖刷分区就行。本文针对的是连 U-Boot Web 都进不去的最后一公里,靠的是高通官方 EDL(Emergency Download,俗称 9008 模式)+ 一份多机型 .bat 工具包,把活的 U-Boot 直接灌回 eMMC 里。
? 2026-08-16 更新(260907 版):所有机型 U-Boot 升级为 260907_172823_3e89586 编译版。新增 Linux 版救砖脚本(JDC-9008-多机型救砖工具.sh,附带编译好的 QSaharaServer-linux);临时 uboot 地址改为 192.168.3.3(电脑网卡改 DHCP 自动获取);新救砖流程:写入完成后路由器正常启动 → 亮红灯时马上按住 RESET 约 5 秒 → 长蓝灯即进入临时 uboot。
? 2026-09-15 更新(GUI 一键版):工具升级为 GUI 图形界面版,三步变一步——自动识别 COM 口(插上 9008 设备即检测,不用手动去设备管理器查端口号)· 自动匹配机型 U-Boot(左侧点机型卡片,自动加载对应 260907 版 uboot 与全部基础分区文件,不用记文件名 / 编号)· 一键启动(点一下自动跑完 SBL1 → CDT/DEVCFG/QSEE/RPM → U-Boot 全部上传)。详见第六章 6.1。
一、9008 是什么 / 为什么需要它
9008 是高通 SoC 内建的 EDL(Emergency Download)模式,是芯片掩膜 ROM 里写死的最底层下载通道。设备一旦进入 9008,会在 Windows 设备管理器里枚举成一个 VID_05C6&PID_9008 的串口(端口或调制解调器分类下)。这个模式不依赖 SBL、不依赖 U-Boot、不依赖任何固件——只要 SoC 没烧、eMMC 还能读写,就能进 9008。所以业内把它叫”最后一根救命稻草”。
什么场景下要用 9008?回答:U-Boot 全废 + U-Boot Web 也进不去的时候。京东云盒正常刷机流程里都是 A/B 双槽 U-Boot(p13 / p14),刷一个错另一个能救;万一两个槽位都被同时刷废,或者刷错 machid 导致 U-Boot 起不来但 SBL 还活着,按住 reset 死活进不了 U-Boot Web,这时候就只能 9008。
⚠ 重要提醒:99% 的玩家走不到这一步。U-Boot Web 还能进 → 回主帖按部就班 Web 上传分区文件就行。本文是给真砖用的,正常折腾遇到一点错误别急着上 9008。
二、进入 9008 的三种方式
| 方式 | 原理 | 难度 | 风险 | 适用场景 |
|---|---|---|---|---|
| A. 短接 9008 点 | 主板上找到 eMMC CLK / DAT0 测试点,上电瞬间短接到 GND,让 SBL 检测不到合法 eMMC,掩膜 ROM 自动 fallback 到 EDL | ? 高 | ? 高(短接错位置可能烧 SoC / 烧 eMMC) | SBL 也挂了 / 上述两条路都走不通的最后手段 |
| B. 串口命令 | USB-TTL 接 RX/TX/GND,上电期间看 U-Boot 启动 log,按 Ctrl+C 中断进 U-Boot 命令行,敲 reset 9008 或 go_edl |
? 中 | ? 低 | U-Boot 还能进命令行但 Web 起不来 / 想稳进 9008 但不想拆主板的最佳路径 |
| C. 卡 U-Boot 引导 | 反复刷错的 U-Boot 或者主动把 BOOTCONFIG 写花,让 SBL 找不到可用 U-Boot 槽位,自动进 EDL(部分 IPQ60xx 版本支持) | ? 低 | ? 中 | 已经把 U-Boot 刷废的玩家——直接拔插上电反复试就行 |
推荐顺序:先 C(什么都不用,上电试),不进再 B(焊 4 根线 / 用排针顶住 TTL 头),实在不行再 A(拆主板 + 镊子 / 飞线 + 高度警惕)。不建议新手直接上 A,烧主板的案例太多。
? 京东云各机型具体短接点:不同机型坐标各不相同,看工具包里对应机型的短接点位图(机型对应不要搞混)。
三、Windows 环境准备
9008 是 Windows 流派。Linux / Mac 有 edl.py 但折腾门槛高,本文不展开。Windows 上要准备的就两样:高通 USB 驱动 + 设备管理器能看到 9008 口。
3.1 安装高通 USB 驱动
驱动名字:Qualcomm HS-USB QDLoader 9008 Driver,官方版本是 Qualcomm USB Driver v1.0.10061.1.exe,工具包里也带一份。安装步骤:
- 右键管理员运行
Qualcomm USB Driver v1.0.10061.1.exe - 一路 Next,到选择安装类型时勾 WWAN-DHCP is not used to get IPAddress(默认就是)
- 装完重启 Windows(驱动签名要刷进内核,不重启容易抓不到 9008 口)
⚠ Windows 11 / 较新 Win10:默认开了”强制驱动签名“,可能装不上。解决方法:开机按 Shift + 重启 → 疑难解答 → 启动设置 → 重启 → 按 7 选”禁用驱动程序强制签名“,进系统再装一遍。
3.2 设备管理器确认 9008 口
设备一旦成功进 9008,Windows 会在设备管理器 → 端口(COM 和 LPT)下看到一项:
Qualcomm HS-USB QDLoader 9008 (COMxx)
新版 GUI 版工具会自动识别这个 COM 口(插上设备即检测,无需手动记编号);传统 .bat 脚本版才需要记住后面的 COMxx 编号(比如 COM5 / COM12)手动填写。如果驱动没装好,这里会显示成黄色感叹号的”QHSUSB_BULK“或”未知设备 USBVID_05C6&PID_9008″——补装驱动就好。
| 设备管理器看到的 | 含义 | 下一步 |
|---|---|---|
✅ Qualcomm HS-USB QDLoader 9008 (COMxx) |
驱动正常,9008 已进入 | 直接跑 .bat |
? QHSUSB_BULK(黄色叹号) |
设备在 9008 但驱动没装 | 右键更新驱动,选 QDLoader 那个 |
? QHSUSB__BULK 双下划线 |
同上,驱动版本对应不上 | 卸载后重装 Qualcomm USB Driver |
| ❌ 没有任何新设备 | 没进 9008 / 数据线坏 / USB 口坏 | 换数据线、换 USB 口(建议主板后置 USB2.0) |
? 一定要用支持数据传输的 USB 线——很多老充电线只有电源没数据 D+/D-,一插上去 Windows 屁都没反应。怀疑线的话换一根手机数据线试。建议直接插主板后置 USB2.0 口,前置 / USB3.0 / Hub 都可能出兼容性问题。
四、工具包目录结构(260907 版)
新版工具包同时支持 Windows 和 Linux,目录统一为:
JDC救砖-刷机-9008(适合亚瑟,雅典娜,赵云,太乙)
├── JDC-9008-多机型救砖工具.exe # ★ Windows GUI 一键版(自动识别COM/自动匹配uboot/一键启动)
├── JDC-9008-多机型救砖工具.bat # Windows 命令行脚本(旧版)
├── JDC-9008-多机型救砖工具.sh # Linux 脚本
├── QSaharaServer-linux # Linux 版 QSaharaServer(已编译)
├── QSahara/ # IPQ60xx 机型文件
│ ├── QSaharaServer.exe # Windows 刷机工具
│ ├── mmcblk0p*_*.bin # SBL1/QSEE/DEVCFG/RPM 基础分区
│ ├── mmcblk0p10_0CDT*.bin # 各机型 CDT
│ ├── NN6000V1*/NN6000V2* # NN6000 专用文件
│ └── uboot-ipq60xx-*-260907_172823_3e89586.bin # 6 个专用 U-Boot
├── QSaharaz/ # IPQ53xx 机型文件(赵云)
│ ├── QSaharaServer.exe
│ └── uboot-ipq53xx-jdcloud_re-cs-0[68]-260907_172823_3e89586.bin
├── 260907/ # 260907 版 U-Boot 源文件(全机型)
├── Qualcomm USB Driver v1.0.10061.1.exe # Windows 驱动
└── 教程文档/图片 # 详细教程与接线图
? 这些 U-Boot 可直接写入 eMMC(0:APPSBL / 0:APPSBL_1 分区),无需转换,QSaharaServer 直接烧录。
五、机型与 U-Boot 映射表(260907 版)
主脚本启动后按选项编号选机型。QSahara/ 目录(IPQ60xx 系列):
| 选项 | 机型 | 代号 | U-Boot 文件 | 目标分区 |
|---|---|---|---|---|
| 1 | AX1800 Pro 亚瑟 512M | ss-01 | uboot-ipq60xx-jdcloud_re-ss-01-260907_172823_3e89586.bin | 0:APPSBL / 0:APPSBL_1 |
| 11 | AX1800 Pro 亚瑟 1G | ss-01 | uboot-ipq60xx-jdcloud_re-ss-01-260907_172823_3e89586.bin | 0:APPSBL / 0:APPSBL_1 |
| 2 | AX6600 雅典娜 1G | cs-02 | uboot-ipq60xx-jdcloud_re-cs-02-260907_172823_3e89586.bin | 0:APPSBL / 0:APPSBL_1 |
| 22 | AX6600 雅典娜 2G | cs-02 | uboot-ipq60xx-jdcloud_re-cs-02-260907_172823_3e89586.bin | 0:APPSBL / 0:APPSBL_1 |
| 222 | AX6600 雅典娜 4G | cs-02 | uboot-ipq60xx-jdcloud_re-cs-02-260907_172823_3e89586.bin | 0:APPSBL / 0:APPSBL_1 |
| 3 | ER1 太乙 2G | cs-07 | uboot-ipq60xx-jdcloud_re-cs-07-260907_172823_3e89586.bin | 0:APPSBL / 0:APPSBL_1 |
| 5 | NN6000 V2 2G | link_nn6000 | uboot-ipq60xx-link_nn6000-260907_172823_3e89586.bin | 0:APPSBL / 0:APPSBL_1 |
| 7 | NN6000 V1 2G | link_nn6000 | uboot-ipq60xx-link_nn6000-260907_172823_3e89586.bin | 0:APPSBL / 0:APPSBL_1 |
| 8 | 双鱼 sy1800(无 NOR) | ss-01 | uboot-ipq60xx-jdcloud_re-ss-01-260907_172823_3e89586.bin | 0:APPSBL / 0:APPSBL_1 |
| 9 | 飞利浦 ly1800(无 NOR) | ss-01 | uboot-ipq60xx-jdcloud_re-ss-01-260907_172823_3e89586.bin | 0:APPSBL / 0:APPSBL_1 |
| 88 | 双鱼 sy1800(带 NOR) | sy_y6010 | uboot-ipq60xx-sy_y6010-260907_172823_3e89586.bin | 0:APPSBL / 0:APPSBL_1 |
| 99 | 飞利浦 ly1800(带 NOR) | philips_ly1800 | uboot-ipq60xx-philips_ly1800-260907_172823_3e89586.bin | 0:APPSBL / 0:APPSBL_1 |
QSaharaz/ 目录(IPQ53xx 系列 — 赵云):
| 选项 | 机型 | 代号 | U-Boot 文件 | 目标分区 |
|---|---|---|---|---|
| 4 | 赵云 BE6500 | cs-06 | uboot-ipq53xx-jdcloud_re-cs-06-260907_172823_3e89586.bin | 0:APPSBL / 0:APPSBL_1 |
| 44 | 赵云 ER Plus | cs-08 | uboot-ipq53xx-jdcloud_re-cs-08-260907_172823_3e89586.bin | 0:APPSBL / 0:APPSBL_1 |
⚠⚠⚠ 选错机型 = 刷错 U-Boot。不同机型 machid 不同,刷错会 machid 不匹配卡引导。如果型号铭牌掉了 / 看不清,先翻底壳贴纸找 RE-xx-xx 字样,找不到就别瞎试。
六、运行脚本流程
6.1 Windows GUI 一键版(自动识别 COM 口 / 自动匹配 U-Boot / 一键启动)
- 设备先进 9008(参见第二章)——新版工具自动识别设备,无需手动去设备管理器确认 COM 口
- 打开
JDC-9008-多机型救砖工具.exe(GUI 版),右侧日志区自动检测到QDLoader 9008 (COMxx)并列出 - 左侧点选你的机型卡片(显示「文件齐全」的都能直接点)——工具自动匹配该机型专用 U-Boot(260907 版)及全部基础分区文件(CDT / DEVCFG / QSEE / RPM 等)
- 点一键启动,工具自动完成全部上传:SBL1 → CDT / DEVCFG / QSEE / RPM / U-Boot,右侧日志实时滚动,全程无需输入机型编号、无需输 COM 口号
- 看到
Sahara protocol completed/ 提示「本次刷写流程结束」,工具自动显示「9008 设备已断开(COM 消失)」,拔 USB 线、断电 5 秒后重新上电

6.2 ★ 新 U-Boot 救砖流程(260907 版)GUI 版特性:自动识别 COM 口(插上 9008 设备即检测,不用手动查端口)· 自动匹配 U-Boot(按机型卡片自动加载对应 260907 版 uboot 文件,不用记文件名)· 一键启动(点一下自动跑完 Sahara 协议全部上传)· 顶部自带「设备管理器 / 安装驱动 / 救砖说明」按钮,缺驱动随时装。
写入完成后进入临时 uboot 的方式:
? 260907 版 U-Boot 新特性:
• DHCP 进入:临时 uboot 地址固定为 192.168.3.3,电脑网卡改 DHCP 自动获取即可,不用手动配 IP
• 单选分区刷入:U-Boot Web 界面可单独选择某个分区刷入(GPT / factory / rootfs 等按需刷),不必整套流程走完
• eMMC 显示品牌:界面直接显示 eMMC 颗粒品牌(江波龙 Longsys / 时意创 SYC 等),一眼看清颗粒来源
• 其余功能与原版一致
- 提示写入后,等第二次指令跑完(正式引导),路由器正常启动
- 亮红灯时马上按住 RESET 约 5 秒左右,显示长蓝灯即进入了临时 uboot!
- 此时临时 uboot 地址是 192.168.3.3,电脑网卡改 DHCP 即可(自动获取 IP)
- 浏览器访问 192.168.3.3,根据需要救砖分区去刷入对应分区(可单选分区刷)
- 如果里面看不到分区信息,就是分区表挂了,先刷入分区表!
6.3 Linux 版
前置准备(非 root 用户):
# 串口权限
sudo usermod -aG dialout $USER # 然后重新登录
# 关闭 ModemManager(否则会抢 9008 串口)
sudo systemctl stop ModemManager
运行:
./JDC-9008-多机型救砖工具.sh
- 选
[0]可查看 USB 设备与串口列表(/dev/ttyUSB0等) - 选择机型 → 输入串口号(如
/dev/ttyUSB0) - 流程与 Windows 版一致,刷完同样按 6.2 的 260907 救砖流程操作
若提示找不到 QSaharaServer:脚本会自动在目录下查找 QSaharaServer-linux / ks / kickstart;也可用环境变量指定 QSS_BIN=/path/to/qsahara-server ./JDC-9008-多机型救砖工具.sh;或让脚本自动编译(需要 git + gcc + make + 网络):
./JDC-9008-多机型救砖工具.sh --build
? Linux 注意事项:编译好的 QSaharaServer-linux 依赖本机 glibc,换到别的 Linux 机器请重新编译(GCC 10+ 需 make CFLAGS="-Wall -D LINUXPC -fcommon",产物名为 kickstart,复制为 QSaharaServer-linux 即可);串口可能因权限不足失败,脚本会自动尝试 sudo。
七、运行中常见错误 + 处理
| 错误信息 | 含义 | 处理 |
|---|---|---|
ERROR: Cannot open COMxx |
填的 COM 口不对 / 被别的程序占用(GUI 版一般不会出现,自动识别) | 设备管理器重新确认 COM 号;关掉串口调试助手 / putty 等占用;GUI 版重启工具再插一次设备即可自动重连 |
ERROR: Sahara handshake failed |
设备不在 9008 / 驱动版本不对 | 重进 9008;卸载 QHSUSB__BULK 后重装 Qualcomm USB Driver |
ERROR: Failed to download firehose |
firehose loader 与本机型/批次不匹配 | 看 README 是否有替代 loader;换一份 prog_emmc_firehose_*.elf 试 |
ERROR: Write failed at sector ... |
eMMC 局部坏块或通讯中断 | 换 USB 线 / 换 USB 口;重跑一次;多次同位置失败 → eMMC 损坏,编程器 |
Timeout waiting for response |
USB 线掉了 / 中途碰到设备 | 检查物理连接,重跑;切忌跑到一半中断电源 |
| 跑完看似成功但断电后还是不亮 | 没真正写进去 / SBL 也挂了 | 看脚本最后一行是否有 Programming finished successfully;没有就是没成 |
| 窗口一闪而过看不到 log | 路径有中文 / 没用管理员身份 | 移到纯英文路径;右键管理员运行;或先开 cmd 手动跑 .bat 看完整 log |
? 跑失败不要立刻反复重试。先看清楚错误信息,再决定下一步。9008 期间设备 SBL 是活的,只要别物理插拔搞坏 eMMC,9008 模式可以反复进、反复试。
八、刷入成功后的后续流程(重要)
.bat 跑完 ≠ 刷完。它只是把第三方 U-Boot 加载到内存里启动一次(并没有写入 eMMC),让你能进临时 U-Boot Web。救砖时根据需要救的分区写入——分区表挂了就先刷分区表,再按需刷对应分区(GPT / factory / rootfs 等)。
- 断电、拔 USB 数据线
- 电脑网线接路由器任意 LAN 口,电脑网卡改 DHCP 自动获取
- 上电(如果直接上电不进 Web,再试一次按住 reset 10 秒上电)
- 浏览器开
http://192.168.3.3——看到 U-Boot Web 上传页就成 - 按需选择要刷的分区:分区表挂了先刷分区表;一般救砖按对应机型主帖流程刷 GPT + factory;只想换 U-Boot 就单选 APPSBL 分区
- factory 刷完会自动重启进新系统
? GPT + factory 的具体文件、md5、Web 操作截图都在对应主帖里:
• 雅典娜:godsun.pro/blog/jdc-athena-ax6600-flash.html
• 亚瑟:godsun.pro/blog/jdc-ax1800pro-flash.html
• 太乙:godsun.pro/blog/jdc-taiyi-flash.html
• 赵云 BE6500:godsun.pro/blog/jdc-be6500-flash.html(及站内 be6500 相关文)
八·补、常见问题
| 问题 | 解决办法 |
|---|---|
| 设备管理器看不到 9008 设备 | 检查驱动是否安装;确认进入 9008 模式的方法(短接点/按键时序) |
| Linux 下刷机无反应 | sudo systemctl stop ModemManager;确认 /dev/ttyUSB0 存在且当前用户可读写 |
| 进入 192.168.3.3 看不到分区信息 | 分区表已损坏,先在临时 uboot 里刷入分区表,再刷其他分区 |
| 无法访问 192.168.3.3 | 电脑网卡改为 DHCP 自动获取,不要手动配 IP |
| 红灯亮没有按住 reset | 断电重来:重新进入 9008 模式再刷一遍,亮红灯立刻按住 RESET 约 5 秒 |
九、9008 也救不了的场景
9008 是 SoC 的 EDL,覆盖的边界是“SoC 还活、eMMC 还能读写”。落到这个边界以外,本文工具集就帮不上忙了:
| 症状 | 原因 | 解决方向 |
|---|---|---|
| 9008 进得去、.bat 写到一半每次同一扇区失败 | eMMC 局部坏块 / 颗粒老化 | 换 eMMC 颗粒(吹下来焊新的,亚瑟改 8G 是常规操作) |
| 设备管理器死活看不到 9008 口(短接、串口、卡 U-Boot 全试过) | SBL1 也挂了 / SoC 烧了 | 编程器读写 eMMC(把 eMMC 拆下来直接读写) |
跑 .bat 全程报 Sahara handshake failed 且换驱动换线都没用 |
SoC 内部 PMIC / USB PHY 损坏 | 主板报废,换主板 |
| 刷完 U-Boot 上电完全没反应、无任何指示灯 | 电源 / SoC 烧穿(多半是上一步短接时操作失误) | 主板报废 |
遇到上面这些不要在 9008 上死磕,9008 救不了硬件级损坏。eMMC 坏的话直接换 eMMC;SoC 烧的话主板就当废铁。
十、工具集下载
多机型救砖工具集(260907 版,含 Windows/Linux 双脚本 + QSahara/QSaharaz 双目录全量文件 + 高通驱动 + QSaharaServer(QSaharaServer-linux) + 各机型专用 U-Boot + 短接点位图):
| 资源 | 下载 | md5 |
|---|---|---|
| JDC-9008 多机型救砖工具集 (亚瑟 / 雅典娜 / 太乙 / 赵云 / NN6000 / 双鱼 / 飞利浦) |
JDC-9008-多机型救砖工具.zip |
已上传 |
| 高通官方驱动(已含在 zip 内) | Qualcomm USB Driver v1.0.10061.1.exe | — |
包已经上传 解压密码为本文章网址:https://godsun.pro/blog/jdc9008.html
? 资源说明:260907 版工具集已上传网盘,点击上方链接下载(网盘需登录:直接用 GitHub 快捷登录即可进入,或账号密码在 TG 群里)。解压密码为本文章网址:https://godsun.pro/blog/jdc9008.html。
十一、回到正常刷机详文
救完砖回主路径,按对应机型的主帖把 GPT + factory 走完:
- 雅典娜 RE-CS-02 / AX6600:godsun.pro/blog/jdc-athena-ax6600-flash.html
- 亚瑟 RE-SS-01 / AX1800Pro:godsun.pro/blog/jdc-ax1800pro-flash.html
- 太乙 RE-CS-07 / AX6600 缩水版:godsun.pro/blog/jdc-taiyi-flash.html
- 开 telnet 通用教程:gwrt.uk/jdc-arthur-telnet-4546.html(救砖以后 telnet 也能开起来,再做日常备份)
不管哪一台,照本文流程走完一遍 9008,没烧硬件的话基本都能救回来。慌不要慌、断电前先想清楚、路径不要中文、机型不要刷错——这四条做到,99% 的砖都能从 9008 这条路捞回来。
本文针对高通 IPQ60xx / IPQ53xx 系列(京东云无线宝亚瑟 / 雅典娜 / 太乙 / 赵云 / NN6000 / 双鱼 / 飞利浦)的 9008 EDL 救砖流程。9008 操作涉及底层硬件,短接点位错误可能直接烧 SoC,请充分理解每一步含义后再操作,作者不为变砖或硬件损坏负责。
💖 打赏支持
如果这篇文章帮到了你,欢迎打赏支持
微信扫一扫,赞赏支持
坐等“JDC-9008-多机型救砖工具”上传
================================================ JDC 9008 Multi-Model Recovery Tool Linux edition (QSaharaServer: /run/media/godsun/f092bc24-3a96-4bb2-b75f-640ff3b72f86/openwrt-rom/JDC救砖-刷机-9008(适合亚瑟,雅典娜,赵云,太乙)/QSaharaServer-linux) U-Boot 20260815 (260815_205505_3e89586) ============ 救砖操作流程 ============ 提示写入后,等第二次指令跑完正式引导, 路由器正常启动。亮红灯时马上按住 RESET 约 5 秒,显示长蓝灯即进入临时 uboot! 此时 uboot 地址是 192.168.3.3, 电脑网卡改 DHCP 即可自动获取 IP! 浏览器访问 192.168.3.3 救砖: 根据需要刷入对应分区; 如果看不到分区信息就是分区表挂了, 先刷入分区表! ================================================ [0] Show USB devices / serial ports --- JDC IPQ60xx Series --- [1] AX1800 Pro-ss-01 (512M) [11] AX1800 Pro-ss-01 (1G) [2] AX6600 Athena-cs-02 (1G) [22] AX6600 Athena-cs-02 (2G) [222] AX6600 Athena-cs-02 (4G) [3] ER1 Taiyi-cs-07 (2G) [4] Zhaoyun-BE6500-cs-06 [44] Zhaoyun-ER-Plus-cs-08 --- NN6000 Series --- [5] NN6000 V2 (2G) [7] NN6000 V1 (2G) --- Others (NOR removed, eMMC mode) --- [8] Shuangyu sy1800 [9] Philips ly1800 --- Others (with NOR) --- [88] Shuangyu sy1800 (with NOR) [99] Philips ly1800 (with NOR) [Q] Quit ================================================ Enter number (0-Q):请教一个关于SBL1分区的问题。文中的SBL1.bin是直接备份原厂固件得到吗?
我这边设备是RAX3000Q(IPQ5000 + SPI NAND),飞线USB后能正常进入9008模式。但上传SBL1后,后续流程完全卡死,设备无响应。
我用hexdump -C查看了两份SBL1,原厂固件备份的SBL1里搜不到Sahara协议相关字符串,但救砖包里的SBL1可以搜到。这是否意味着救砖包的SBL1是经过特殊处理或带有Sahara引导逻辑的版本?
你好,观察很细,但结论要反过来看——这两份 SBL1 不是同一个角色的东西,所以字符串差异说明不了「被特殊处理过」。
先把链路理清(IPQ 平台):
上电
└─ PBL(SoC 掩膜 ROM,Sahara 协议就在这一层)
├─ 正常:从 flash 读 SBL1 分区 → 验签 → 跳 SBL1 → 做 DDR/时钟初始化 → 加载 QSEE/RPM/U-Boot
└─ 异常:SBL1 读不到 / 验签失败(比如短接 eMMC CLK-DAT0)→ fallback 进 EDL(9008) → ROM 跑 Sahara → 上传加载器
关键一点:Sahara 协议属于 PBL(ROM),不属于 SBL1。所以原厂 flash 里的 SBL1 搜不到 Sahara 字符串是正常的,说明不了它不完整。
而 EDL 阶段喂给 QSaharaServer 的那份 SBL1,职责完全不同:它要被 ROM 在 Sahara 阶段接收、跳进去、初始化 DDR,然后自己当加载器,把后面的 CDT/DEVCFG/QSEE/RPM/U-Boot 写进 flash。要在 EDL 路径里干活,它的代码里带 Sahara/firehose 相关字符串是必然的。
另外,用 hexdump 搜字符串本身不能当判据,三个因素都会吃掉明文字符串:① 格式(ELF 带 .strtab 符号表 vs MBN 去壳裸镜像)② 压缩/签名打包 ③ strip 掉符号。想验证的话,比 grep 字符串靠谱的做法:
file sbl1_*.bin # 看是 ELF 还是 MBN 容器
xxd -l 64 sbl1_*.bin # 看容器头和魔数
ls -l sbl1_*.bin # 体积差一个量级,通常就是一个压缩了
再说你卡死这件事——我的头号嫌疑不是字符串,是 SoC 不匹配。
本文工具集是 IPQ60xx / IPQ53xx 两套(QSahara / QSaharaz 两个目录),对应的是京东云无线宝那一批机器。RAX3000Q 是 IPQ5000(双核 1GHz + 256MB 内存 + 128MB NAND 闪存),不在本文支持列表里。
拿 IPQ60xx/53xx 的 SBL1 去喂 IPQ5000 的 ROM,典型症状就是你说的这个:加载器被接收了,但它按另一颗芯片的 DDR/时钟/SPI-NAND 参数去初始化 → 直接挂死、设备无响应。
怎么定性,看日志停在哪一步:
· Sahara handshake failed —— 加载器还没被接收,属驱动 / 没真进 9008 / 线材问题
· Failed to download firehose —— 加载器与本机型批次不匹配(本文第 7 章也写了这条)
· Sahara protocol completed 之后卡死 —— 加载器被接收了,但 DDR/NAND 初始化失败,这就是型号不匹配的典型特征
建议:
1. 先停手,别反复试。去找 IPQ5000(RAX3000Q)专属的 EDL 加载器,别用本文这套。
2. 如果手上有 RAX3000Q 自己的原厂固件备份,优先用它里面的 SBL1——DDR/时钟参数是芯片相关的,用对机器的那一份才有意义。
3. 换主板后置 USB2.0 口、换短一点的好线。SPI NAND 平台在 DDR 初始化阶段对供电更敏感。
感谢提问。也提醒后面看到这条的朋友:高通 9008 不是通用流程,机型对不上别硬刷。
感谢回复。我使用的是另一台正常工作的rax3000q的sbl1和其他分区备份,sbl1上传后可以重新枚举9008设备,但后续上传无法进行,Sahara hello也不响应。
目前来说我在搜集其他ipq50xx的sbl1分区(尤其是带原生usb的),希望能找出一些端倪
感谢补充,这条信息很关键。「SBL1 上传后能重新枚举 9008,但后续上传进不去、Sahara hello 不响应」——卡点基本能定位了:你喂进去的这份 SBL1,在 EDL 里活不过 USB 那一步。
先分清两个常被混为一谈的东西:
· flash 里的 SBL1:正常开机链上的一环,做完 DDR/时钟初始化就把 QSEE/RPM/U-Boot 顺下去,它不需要、一般也不带完整 USB 协议栈。
· EDL 里喂给 ROM 的加载器:必须自己把 USB 控制器拉起来,才能在 Sahara 会话结束后继续跟主机对话(继续收分区、写 flash)。
你从另一台正常 RAX3000Q 备份出来的 SBL1 属于前者。ROM 把它收进 RAM 执行,DDR 可能过了,但 USB 没接管 → 设备掉回 PBL,Windows 于是重新枚举一次 9008(就是你看到的那次「重新枚举」),而 PBL 每个上电周期只吃一次 Sahara 握手,第二个 hello 自然不响应。
三个现象就能定性:
① 设备管理器里 9008 是稳定存在、还是反复出现/消失(反复 = 加载器挂掉后的复位循环);
② 重新枚举后 PID/设备名跟第一次比变没变(不少平台在加载器阶段会换成 900E 一类的另一个 PID);一直停在 9008,通常意味着又掉回 ROM 了;
③ QSaharaServer 加 -v 跑,看日志卡在 handshake 的哪一步。
所以你「搜集带原生 USB 的 IPQ50xx SBL1」的方向是对的——你要找的其实是 EDL 加载器,而不是启动用的 SBL1。本文包里那份 SBL1 之所以能搜到 Sahara 字符串,正是因为它被做成了加载器(带 USB 启动逻辑),这一点上一轮已经说过。
几条更省时间的路:
1. 直接找加载器,别继续拼 SBL1。搜 IPQ5010/IPQ5018 的 prog_firehose_ddr.elf(QSDK 里的 firehose 程序,论坛帖有时直接叫 ipq5018 edl loader)。加载器只要 USB 起得来,后面用 Firehose 的分区 XML 写回即可。
2. SPI NAND 走物理编程最稳。RAX3000Q 是 SPI NAND,只要封装没坏,用编程器(或 SOP8 夹子)读全片 dump,再拿同型号另一台机的完整 dump 原样回写,机器立刻活。这条路不依赖 9008,也不需要任何加载器匹配。
3. 换加载器之前,先把 USB 这一层排除掉:主板后置 USB2.0 直连、别过 hub、线要短。DDR 初始化阶段对供电和信号很敏感,「hello 不响应」有相当一部分是这一层造成的。
4. 别连续硬试。SBL1 阶段挂死是复位循环,试多了纯浪费时间——每轮之间拔电等 10 秒再上电,让 ROM 状态干净。
还有个前提值得先确认:如果这颗 SPI NAND 本身读不动(坏块多、或数据线有问题),SBL1 就算从 RAM 跑起来,也读不到后面的 CDT/QSEE/U-Boot,照样卡住——症状和加载器不匹配很像。这也是我建议顺手做一次全片读出的原因。
愿意的话,把停下那一刻的 QSaharaServer -v 完整日志(带时间轴)、设备具体型号/批次、以及这次「重新枚举」在设备管理器里的 VID/PID 贴上来,我帮你判断是加载器不匹配还是 flash 读不出来——这两种修法完全不一样。