一加手机刷机教程
⚠️ 风险提示
- 刷机会清空全部数据,操作前务必完整备份(照片、通讯录、微信聊天记录、OTP 密钥、Authenticator 数据)
- 解锁 Bootloader 通常会导致保修失效,部分机型会永久熔断保险丝(如三星 Knox 0x1、小米部分机型)
- 操作不当可能变砖,本文末尾提供救砖方案,但不保证一定能救回
- 请确认电量 ≥ 60%,使用原装数据线,台式机请插机箱后置 USB 口
- 本文仅用于技术学习和自有设备的固件研究,请遵守当地法律法规
适用机型
本文覆盖一加 6 至一加 13 的全系主流机型(含 Ace / 一加数字系列的国内版与海外版)。核心流程(解锁 BL → fastboot 刷入 → Root)在骁龙平台上通用,天玑平台的 Ace 系列在 EDL 深刷与 payload 提取环节存在差异,文中已单独标注。
机型代号对照表
刷机圈交流、找 ROM、找 payload 全部使用 codename(代号),而不是"一加 11"这种市场名。下表为主流机型代号与常见型号(Model Number)对照:
| 市场名 | codename | 常见型号 | 平台 | 分区方案 |
|---|---|---|---|---|
| OnePlus 5 | cheeseburger | A5000 | 骁龙 835 | A-only |
| OnePlus 5T | dumpling | A5010 | 骁龙 835 | A-only |
| OnePlus 6 | enchilada | A6000 / A6003 | 骁龙 845 | A/B |
| OnePlus 6T | fajita | A6010 / A6013 | 骁龙 845 | A/B |
| OnePlus 7 Pro | guacamole / guacamoleb | GM1910 / GM1920 | 骁龙 855 | A/B |
| OnePlus 7T | hotdogb | HD1900 | 骁龙 855+ | A/B |
| OnePlus 7T Pro | hotdog | HD1910 | 骁龙 855+ | A/B |
| OnePlus 8 | instantnoodle | IN2010 / IN2013 | 骁龙 865 | A/B |
| OnePlus 8 Pro | instantnoodlep | IN2020 | 骁龙 865 | A/B |
| OnePlus 8T | kebab | KB2000 / KB2001 | 骁龙 865 | A/B |
| OnePlus 9 | lemonade | LE2110 / LE2113 | 骁龙 888 | A/B(虚拟) |
| OnePlus 9 Pro | lemonadep | LE2120 / LE2123 | 骁龙 888 | A/B(虚拟) |
| OnePlus 9R | lemonades | LE2101 | 骁龙 870 | A/B(虚拟) |
| OnePlus 10 Pro | neoli | NE2210 / NE2213 | 骁龙 8 Gen1 | A/B(虚拟) |
| OnePlus 10T | ovaltine | CPH2399 / CPH2413 | 骁龙 8+ Gen1 | A/B(虚拟) |
| OnePlus 11 | salami | PHB110 / CPH2447 / OP594DL1 | 骁龙 8 Gen2 | A/B(虚拟) |
| OnePlus 12 | waffle | CPH2573 / CPH2581 / PJD110 | 骁龙 8 Gen3 | A/B(虚拟) |
| OnePlus 13 | dodge | CPH2649 / CPH2653 / PJD110 | 骁龙 8 Elite | A/B(虚拟) |
Ace 系列(国内为主)代号相对混乱,且不同批次、不同运营商定制机可能存在差异:
| 市场名 | codename(常见说法) | 平台 | 备注 |
|---|---|---|---|
| 一加 Ace | 常见为 OP556F 系 | 天玑 8100-Max | 请以 XDA / 官方页面为准 |
| 一加 Ace Pro | 常见为 OPD2203 系 | 骁龙 8+ Gen1 | 与 10T 平台同源 |
| 一加 Ace 2 | 常见为 PHP110 系 | 骁龙 8+ Gen1 | 海外版对应 11R |
| 一加 Ace 2 Pro | 常见为 PJE110 系 | 骁龙 8 Gen2 | 请以官方页面为准 |
| 一加 Ace 3 | 常见为 PJF110 系 | 骁龙 8 Gen2 | 海外版对应 12R |
| 一加 Ace 5 / 5 Pro | 请以官方页面为准 | 骁龙 8 Gen3 / Elite | 较新机型资料少 |
📌 不确定就查,不要猜。 刷错 codename 的固件是变砖第一大原因。确认代号最可靠的方式是在 fastboot 下读取:
fastboot getvar product fastboot getvar variant或者在系统里看:
adb shell getprop ro.product.device adb shell getprop ro.product.name adb shell getprop ro.build.display.id
系统演变:氢 OS → 氧 OS → ColorOS
理解一加的系统演变,才知道该下载哪个包、能不能跨区刷:
| 阶段 | 时间 | 系统 | 说明 |
|---|---|---|---|
| 氢 OS / 氧 OS 并行 | 1 ~ 7 代 | H₂OS(国内)/ OxygenOS(海外) | 两套同源代码,包名不同,不能互刷(早期需转换包) |
| 氧 OS 统一 | 8 ~ 9 代 | OxygenOS 11+ | 国内版并入 OxygenOS,底层开始对齐 ColorOS |
| 合并 ColorOS | 10 ~ 11 代 | OxygenOS 12/13 ≈ ColorOS 12/13 | 底层已高度共用,国内版系统包名变为 ColorOS 系 |
| ColorOS 深度整合 | 12 代至今 | ColorOS 14/15 + OxygenOS 品牌 | 国内/海外固件仍分开发布,请勿直接互刷 |
刷机实际影响:
- 国内版(PHB110 等)与海外版(CPHxxxx)固件不通用,跨区刷大概率卡 LOGO 或基带丢失
- 一加 9 之后,国内版刷国际版需要同时刷入对应 region 的 persist / 基带,操作复杂,不建议新手尝试
- 一加 8 及之后所有机型都是 A/B 分区,刷分区时必须注意当前槽位
准备工作
工具清单
| 工具 | 用途 | 获取方式 |
|---|---|---|
| Android SDK Platform Tools | adb / fastboot 命令行 | 官方 developer.android.com/tools/releases/platform-tools |
| 一加 USB 驱动 | Windows 识别 fastboot / EDL 设备 | 一加官网支持页 / Windows 自动更新 |
| OnePlus USB Drivers(通用 ADB 驱动) | 解决"设备管理器感叹号" | Google USB Driver 也可应急 |
| payload-dumper-go | 从 payload.bin 提取分区镜像 | GitHub: ssut/payload-dumper-go |
| Fastboot Enhance | Windows 图形化刷 payload / 分区管理 | GitHub 开源项目 |
| Magisk | Root 方案(修补 boot / init_boot) | GitHub: topjohnwu/Magisk |
| KernelSU | 内核级 Root 方案 | GitHub: tiann/KernelSU |
| MSM Download Tool | 一加官方救砖工具(9008 深刷) | 各机型社区分发版本 |
| QFIL / QPST | 高通 9008 烧录工具 | 需授权账号,见后文 |
环境检查
Windows(PowerShell):
# 解压 platform-tools 后进入目录
cd D:\platform-tools
# 验证 adb 可用
.\adb.exe version
# 预期输出:Android Debug Bridge version 1.0.41 及之后版本
# 验证 fastboot 可用
.\fastboot.exe --version
# 预期输出:fastboot version 34.0.0-xxxxxxx 或更高
# 查看已连接设备(此时手机开启 USB 调试并授权)
.\adb.exe devices
# 预期输出:
# List of devices attached
# 8be64f1a device
📌 如果显示
unauthorized,说明手机上没点"允许 USB 调试"。撤销授权后重插:设置 → 开发者选项 → 撤销 USB 调试授权。
Linux / macOS(bash):
# udev 规则(Linux 无 root 权限识别不到设备时)
sudo tee /etc/udev/rules.d/51-android.rules <<'EOF'
SUBSYSTEM=="usb", ATTR{idVendor}=="2a70", MODE="0666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", MODE="0666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"
EOF
sudo udevadm control --reload-rules
sudo udevadm trigger
# 验证
adb devices
fastboot devices
一加设备的 USB VID 主要是 2a70(一加自有)和高通 05c6(EDL 模式)。
固件下载
| 来源 | 说明 |
|---|---|
| 一加官方支持页 | 最安全,提供完整全量包(国内 / 海外分开) |
| 一加社区「系统更新」板块 | 国内版全量包 + 增量包 |
| OxygenOS 官方 ROM 下载页 | 海外版全量包 |
| XDA Forums 对应机型版块 | 第三方 ROM、救砖包、payload |
下载后务必核对 MD5 / SHA256,一加官方页面会同时给出校验值:
# Linux / macOS
sha256sum OnePlus11_OxygenOS_xxx.zip
# Windows PowerShell
Get-FileHash .\OnePlus11_OxygenOS_xxx.zip -Algorithm SHA256
数据备份清单
# 1. 完整物理备份(需要已 Root,或依赖厂商工具)
adb backup -apk -shared -all -f backup.ab
# 2. 手动备份关键目录
adb pull /sdcard/DCIM ./backup_dcim
adb pull /sdcard/Download ./backup_download
adb pull /sdcard/Pictures ./backup_pictures
# 3. 微信聊天记录:微信内 设置 → 聊天 → 聊天记录迁移与备份
# 4. 短信/通话记录/联系人:建议直接用厂商云服务同步
# 5. OTP / Authenticator:Google Authenticator 需手动导出,微软 Authenticator 走云备份
⚠️ 警告:解锁 Bootloader 会强制清除 /data 分区,
adb backup之外的一切本地数据都会消失。OTP 密钥一旦丢失且没有恢复码,很多账号将永久无法找回。
一、开启开发者选项与 OEM 解锁
设置 → 关于手机,连续点击 版本号 7 次,输入锁屏密码后提示"您已处于开发者模式"- 进入
设置 → 系统 → 开发者选项 - 打开 USB 调试
- 打开 OEM 解锁(部分国行机型显示为"设备解锁"或"高级解锁")
- 部分机型需要登录一加账号并联网"申请解锁资格"
验证开关是否生效:
adb shell getprop ro.oem_unlock_supported
# 返回 1 表示支持解锁
adb reboot bootloader
fastboot oem device-info
# 关注 Device unlocked: false(未解锁)
二、解锁 Bootloader
方式一:fastboot 命令行(推荐)
# 进入 fastboot(bootloader)模式
adb reboot bootloader
# 或按键进入:关机后按住 音量上 + 电源键
# 确认设备被识别
fastboot devices
# 预期输出:8be64f1a fastboot
# 一加老机型(6/7 系列)用 oem unlock
fastboot oem unlock
# 一加 8 及之后机型用通用命令
fastboot flashing unlock
手机屏幕会出现解锁确认界面,用音量键选择 UNLOCK THE BOOTLOADER,按电源键确认。
# 解锁完成后重启
fastboot reboot
⚠️ 警告:确认解锁会立即执行恢复出厂设置。手机上会提示 "Erase all data",此时后悔还来得及——但一旦确认,数据不可恢复。
方式二:解锁码(部分老机型)
一加 3/3T/5 等老机型曾需要官方申请解锁码,现已基本停用。当前主流机型统一走 fastboot flashing unlock。
验证解锁状态
fastboot oem device-info
# 期望看到:
# Device unlocked: true
# Device critical unlocked: true
# 或者
fastboot getvar unlocked
# unlocked: yes
系统重启后,开发者选项里的 OEM 解锁会变灰并提示"设备已解锁",这也是解锁成功的标志。
三、A/B 分区机制(必读)
一加 8 之后(含 8)全部采用 A/B 无缝更新(Seamless Update),一加 9 之后进一步升级为 虚拟 A/B(Virtual A/B)。
A/B 分区原理
| 概念 | 说明 |
|---|---|
| slot(槽位) | 系统有两套分区:_a 和 _b,如 boot_a / boot_b |
| current slot | 当前正在运行的槽位 |
| 无缝更新 | OTA 在后台写入非当前槽位,重启后切换,用户无感知 |
| 虚拟 A/B | 用动态分区 + 快照技术模拟双槽,节省约 1.5GB 空间 |
槽位操作命令
# 查看当前槽位
fastboot getvar current-slot
# 预期输出:current-slot: a
# 手动切换槽位(刷入后要切到刚刷的槽)
fastboot set_active b
fastboot --set-active=b
# 设置下次启动的槽位(部分机型支持)
fastboot getvar all 2>&1 | grep -i slot
⚠️ 警告:刷分区时必须刷到当前槽位,否则刷完还是启动旧系统。最稳妥的做法是:
fastboot getvar current-slot # 假设返回 a fastboot flash boot_a boot.img fastboot flash init_boot_a init_boot.img或者不带后缀直接
fastboot flash boot boot.img,fastboot 会自动附加当前槽位后缀。
查看所有分区
fastboot getvar all 2>&1 | grep -E "partition-size|has-slot"
典型 A/B 分区列表(一加 11):
| 分区 | 作用 | 是否 A/B |
|---|---|---|
| boot / init_boot | 内核 + ramdisk,Root 修补目标 | 是 |
| vendor_boot | 厂商内核模块 + dtb | 是 |
| dtbo | 设备树覆盖层 | 是 |
| vbmeta / vbmeta_system | AVB 校验元数据 | 是 |
| super | 动态分区容器,内含 system/vendor/product/odm | 是(逻辑分区,无后缀) |
| recovery | 恢复模式(一加 8+ 多为 boot 内置) | 是 |
| persist | 传感器校准、DRM 密钥、WiFi/蓝牙 MAC | 否(共享) |
| modem / bluetooth | 基带与蓝牙固件 | 是 |
| userdata / metadata | 用户数据与加密元数据 | 是(但会被清空) |
四、payload.bin:现代一加固件的本质
一加 8 之后的官方全量包,解压后核心文件是 payload.bin,而不是一堆 *.img。这是 Android 10+ 的 OTA 更新包格式。
全量包典型结构
OnePlus11_OxygenOS_14.0.0.xxx.zip
├── payload.bin # 所有分区镜像的容器(2~5GB)
├── payload_properties.txt # 升级参数
├── META-INF/ # Recovery 升级脚本
├── care_map.pb # 分区校验映射
└── apex_info.pb # APEX 模块信息
用 payload-dumper-go 提取分区镜像
# 下载对应平台的 payload-dumper-go,以 Linux x64 为例
# 方式一:直接从 zip 提取(推荐,最快)
./payload-dumper-go -o ./out payload.bin
# 方式二:指定要提取的分区(省时省空间)
./payload-dumper-go -p init_boot,boot,vendor_boot,vbmeta -o ./out payload.bin
# 方式三:直接从 zip 提取,不用先解压
./payload-dumper-go -o ./out OnePlus11_OxygenOS_xxx.zip
预期输出:
[INFO] Extracting init_boot.img
[INFO] Extracting boot.img
[INFO] Extracting vendor_boot.img
[INFO] Extracting vbmeta.img
...
Done! Check ./out directory
提取成功后:
ls -lh ./out/
# boot.img init_boot.img vendor_boot.img vbmeta.img system.img ...
📌 Windows 下同样可用,直接运行
payload-dumper-go.exe。如果杀软报毒,一般是 Go 编译产物被误报,可加白名单。
用 Fastboot Enhance 图形化操作
不想敲命令可以用 Fastboot Enhance(Windows):
- 手机进入 fastboot 模式并连接电脑
- 打开 Fastboot Enhance,点击 Payload 标签页
- 载入官方全量包 zip
- 勾选需要刷入的分区,点击 Flash
- 工具会自动提取并刷入,无需手动处理 payload
五、刷入方式对比
| 方式 | 操作 | 是否清数据 | 适用场景 | 难度 |
|---|---|---|---|---|
| 本地升级 | 设置 → 系统更新 → 本地升级,选 zip | 否 | 官方同版本/跨版本升级 | ⭐ |
| 增量包(OTA) | 系统推送或本地选增量 zip | 否 | 小版本升级,需当前版本完全匹配 | ⭐ |
adb sideload |
进入 Recovery 后 adb sideload ota.zip |
否 | 官方包无法本地识别时 | ⭐⭐ |
fastboot update |
fastboot update full_ota.zip |
否 | 完整 OTA 包,官方推荐 | ⭐⭐ |
逐分区 fastboot flash |
提取 payload 后手动刷 | 可选 | Root、降级、救砖 | ⭐⭐⭐ |
flash_all 类脚本 |
执行官方 fastboot 线刷包脚本 | 是 | 救砖、彻底重置 | ⭐⭐⭐ |
| EDL 9008 深刷 | QFIL / MSM Download Tool | 是 | 真砖救砖 | ⭐⭐⭐⭐⭐ |
方式一:本地升级(最安全)
- 把官方全量 zip 放到手机存储根目录(不要解压)
设置 → 系统 → 系统更新 → 右上角设置 → 本地升级- 选中 zip,等待校验后自动重启升级
- 升级过程中不要断电、不要按键
方式二:adb sideload
# 进入 Recovery
adb reboot recovery
# Recovery 界面选择 Apply update from ADB(不同版本文案略有差异)
# 然后电脑执行:
adb devices
# 预期:8be64f1a sideload
adb sideload OnePlus11_OxygenOS_xxx.zip
# 预期输出:
# Total xfer: 2.00x
方式三:fastboot update(官方全量包)
adb reboot bootloader
fastboot devices
fastboot update OnePlus11_OxygenOS_xxx.zip
📌
fastboot update不会清除用户数据,适合"降级回官方版本但保留数据"的场景。但跨大版本降级(如 ColorOS 15 → 13)仍建议清空数据,否则容易出现系统应用 FC。
方式四:逐分区刷入(Root 必走路径)
这是最灵活也是 Root 的标准前置步骤:
# 1. 提取分区镜像
./payload-dumper-go -o ./out OnePlus11_OxygenOS_xxx.zip
# 2. 进入 fastboot
adb reboot bootloader
fastboot devices
# 3. 确认槽位
fastboot getvar current-slot
# current-slot: a
# 4. 刷入关键分区(不带后缀,fastboot 自动附加当前槽)
fastboot flash boot out/boot.img
fastboot flash init_boot out/init_boot.img
fastboot flash vendor_boot out/vendor_boot.img
fastboot flash dtbo out/dtbo.img
fastboot flash vbmeta out/vbmeta.img
fastboot flash vbmeta_system out/vbmeta_system.img
# 5. 刷入动态分区(super 里的逻辑分区,需要进入 fastbootd)
fastboot reboot fastboot
# 等待进入 fastbootd(屏幕显示 "FASTBOOTD" 或 "Entering fastboot")
fastboot flash super out/super.img
# 或者直接刷逻辑分区:
fastboot flash system out/system.img
fastboot flash vendor out/vendor.img
fastboot flash product out/product.img
fastboot flash odm out/odm.img
# 6. 清除逻辑分区元数据(刷 super 后常需要)
fastboot wipe-super super_empty.img
# 7. 重启
fastboot reboot
⚠️ 警告:刷
vbmeta.img时如果官方包启用了 AVB 校验,而你要刷入被修改过的 boot(比如 Root 后的),必须禁用校验,否则会卡在开机 LOGO 或直接进 fastboot:fastboot --disable-verity --disable-verification flash vbmeta out/vbmeta.img刷完若仍无法启动,可刷入空 vbmeta(部分机型需要):
fastboot --disable-verity --disable-verification flash vbmeta --slot-all vbmeta_empty.img
六、Root:Magisk 与 KernelSU
6.1 判断该修补 boot 还是 init_boot
| 机型 / Android 版本 | 修补目标 | 说明 |
|---|---|---|
| Android 12 及更早 | boot.img |
ramdisk 在 boot 里 |
| Android 13+(一加 9 之后升级到 13 也算) | init_boot.img |
ramdisk 被拆分到独立分区 |
| 部分 ColorOS 14 机型 | init_boot.img |
同 Android 13+ |
不确定就两个都试,或者看官方包里有没有 init_boot.img:
# 提取后检查
ls -lh out/ | grep -E "boot"
# 有 init_boot.img → 修它;只有 boot.img → 修 boot
6.2 Magisk 修补 init_boot(手机端修补法)
- 手机安装 Magisk APK(最新版)
- 提取官方包中的
init_boot.img,传到手机:adb push init_boot.img /sdcard/Download/ - 打开 Magisk → 安装 → 选择并修补一个文件 → 选中
init_boot.img - 输出文件在
/sdcard/Download/magisk_patched-xxxxx_init_boot.img - 拉回电脑:
adb pull /sdcard/Download/magisk_patched-xxxxx_init_boot.img - 刷入:
adb reboot bootloader
fastboot flash init_boot magisk_patched-xxxxx_init_boot.img
# 预期输出:
# Sending 'init_boot' (8192 KB) OKAY [ 0.230s]
# Writing 'init_boot' OKAY [ 0.110s]
# Finished. Total time: 0.412s
fastboot reboot
6.3 用 magiskboot 命令行修补(电脑端)
# 提取 magiskboot(在 Magisk APK 里,改后缀为 zip 解压)
unzip -o Magisk-v27.0.apk -d magisk_apk
ls magisk_apk/lib/x86_64/libmagiskboot.so
cp magisk_apk/lib/x86_64/libmagiskboot.so ./magiskboot
chmod +x magiskboot
# 解压 init_boot
./magiskboot unpack init_boot.img
# 输出:
# HEADER_VER "4"
# RAMDISK "ramdisk.cpio"
# ...
# 修补 ramdisk
./magiskboot cpio ramdisk.cpio "add 0750 init magiskinit" "mkdir 0750 overlay.d" "patch"
# 输出:Patch @ 000...
# 重新打包
./magiskboot repack init_boot.img init_boot_patched.img
📌 日常使用推荐 Magisk App 修补法(6.2),命令行法主要用于自动化脚本和定制研究。
6.4 KernelSU(内核级 Root)
KernelSU 工作在内核层,相比 Magisk 更难被检测:
| 对比项 | Magisk | KernelSU |
|---|---|---|
| 实现层级 | 用户态(修补 ramdisk + zygisk) | 内核态(钩子在内核) |
| 前置条件 | 修补 boot/init_boot | 需要刷入支持 KernelSU 的内核(或用 GKI 内核手动集成) |
| 检测难度 | 较高(需配合 Shamiko/隐藏) | 较低(无用户态痕迹) |
| 模块生态 | 丰富 | 相对少 |
KernelSU 有两种接入方式:
# 方式一:GKI 模式(官方通用内核镜像,一加 8+ 多数支持)
# 下载对应内核版本的 KernelSU boot 镜像后直接刷
fastboot flash boot kernelsu-boot-5.10.xxx.img
# 方式二:自行编译内核集成(需要内核源码 + 编译环境)
git clone https://github.com/tiann/KernelSU
# 按官方文档把 kernelsu 加入内核源码树,重新编译 boot
📌 KernelSU 需要内核版本与 GKI 版本严格对应(
uname -r查看,如5.10.198-android13),刷错版本直接变砖。
6.5 Root 后的隐藏与检测
# 检查 Root 是否生效
adb shell su -c "id"
# 预期输出:uid=0(root) gid=0(root) groups=0(root) context=u:r:su:s0
# Magisk 内置检查
# Magisk App → 首页 "Zygisk: 是" 表示 Zygisk 已启用
配合 Zygisk + Shamiko / Play Integrity Fix 模块可改善银行 App 与钱包的检测结果,但这是持续对抗过程,没有一劳永逸的方案。
七、9008 深刷模式(EDL)
EDL(Emergency Download Mode) 是高通芯片内置的紧急下载模式,设备在该模式下暴露为 Qualcomm HS-USB QDLoader 9008。它是比 fastboot 更底层的救砖通道——即使 bootloader 损坏、分区表损坏,只要主板没坏,理论上都能救。
进入 EDL 的方式
| 方式 | 操作 | 适用情况 |
|---|---|---|
| 按键组合 | 关机后同时按住 音量上 + 音量下,然后插入 USB 线 | 大部分骁龙机型,最常用 |
| 按键组合(带电源) | 关机后按 音量上 + 音量下 + 电源键 8 秒 | 部分机型 |
| adb 命令 | adb reboot edl |
系统能启动或能进 fastboot 时 |
| fastboot 命令 | fastboot reboot-edl / fastboot oem edl |
fastboot 可用时 |
| 主板短接 | 拆机,短接主板上的两个测试点(TP)再插线 | 完全无响应、按键失效 |
| 深刷线 | 特制 USB 线,内部短接 D+/D- 或强制进入 9008 | 需要专门制作 |
# 软件方式进入
adb reboot edl
# 或者
adb reboot bootloader
fastboot reboot-edl
进入成功后,Windows 设备管理器会出现:
端口 (COM 和 LPT)
└── Qualcomm HS-USB QDLoader 9008 (COM3)
Linux 下:
lsusb | grep -i qualcomm
# Bus 001 Device 012: ID 05c6:9008 Qualcomm, Inc. Gobi Wireless Modem (QDL mode)
EDL 烧录工具
| 工具 | 来源 | 说明 |
|---|---|---|
| QFIL | QPST 工具包组件 | 高通官方,需要 firehose_xxxx.mbn 编程器文件 |
| QPST Configuration | 高通官方 | 端口管理、设备检测 |
| MSM Download Tool | 一加官方 / 社区分发 | 一加专用,封装了 firehose,傻瓜式 |
| Fastboot Enhance | 开源 | 识别 9008 端口后可辅助操作 |
| MiFlash / XiaoMiFlash | 小米系(部分通用) | 需要修改配置才能刷非小米设备 |
MSM Download Tool 使用步骤(以一加 9 系列为例):
- 手机进入 EDL 模式并连接电脑,确认 COM 口出现
- 以管理员身份运行对应机型的
MSMDownloadTool V*.exe - 工具会自动检测到 COM 口(
Connected to COM3) - 点击 Start,等待进度条走完
- 工具提示
Download Complete后手机自动重启 - 首次开机会非常慢(可能 5~10 分钟),属正常
⚠️ 警告
- 一加 8 之后的机型,官方 firehose 文件基本不公开,网上流传的旧版工具对一加 11/12/13 通常无效
- 新版 MSM Download Tool 需要授权账号登录(售后体系内部工具),个人用户很难获取
- 淘宝/闲鱼上的"远程深刷"服务本质是走授权账号,有泄露隐私风险,请谨慎评估
- 短接主板需要拆机,会破坏防水胶且极易损坏排线,作为最后手段
9008 模式排障
| 现象 | 原因 | 处理 |
|---|---|---|
设备管理器显示 QHSUSB_BULK 而非 COM 口 |
驱动未装 | 安装 Qualcomm QDLoader HS-USB Driver |
| COM 口出现但很快消失 | 供电不足 / 数据线问题 | 换原装线、插后置 USB 口、换电脑 |
QFIL 提示 Sahara Fail |
firehose 不匹配 | 换对应机型的 firehose 文件 |
| Download 卡在 0% | 存储芯片损坏 | 硬件故障,需换主板 |
提示 Firehose Authentication Failed |
新版芯片要求签名 firehose | 无解(个人),走售后 |
八、常见问题
8.1 Widevine L1 降级
解锁 BL 后,部分机型的 Widevine DRM 等级会从 L1 降到 L3,表现为 Netflix、Disney+、腾讯视频等平台无法播放高清(只能 480p)。
# 查看当前 Widevine 等级
adb shell getprop | grep -i widevine
# 或用 DRM Info 类 App 查看 Security Level
| 等级 | 说明 |
|---|---|
| L1 | 硬件级安全路径(TEE),支持 1080p/4K 流媒体 |
| L3 | 纯软件解密,最高 480p |
📌 一加多数机型解锁后仍保持 L1(DRM 密钥在 persist 中且未触发熔断),但部分批次/系统会降级。降级后无法恢复,除非重新上锁 BL(且部分机型上锁后仍不恢复)。
8.2 银行 App / 支付 App 检测
解锁 BL + Root 后常见的检测点:
| 检测项 | 表现 | 应对思路(简述) |
|---|---|---|
| SafetyNet (已废弃) | 老 App 仍在用 | 已停止服务,无需处理 |
| Play Integrity | 钱包、银行、游戏 | Play Integrity Fix 模块 + 指纹伪装 |
| 文件系统痕迹 | 检测 magisk、.magisk 等路径 |
Magisk 随机包名 + 隐藏 |
| Zygisk 检测 | 检测内存注入 | Zygisk Next + Shamiko |
| 内核特征 | 检测 KernelSU 符号 | KernelSU 的 "su 兼容模式" 关闭 |
| 解锁状态 | 检测 ro.boot.verifiedbootstate |
需内核级隐藏 |
⚠️ 注意:这些手段属于持续对抗,随时可能失效。更重要的是:在自有设备上做安全研究时,不要在生产环境(主用手机)上折腾,建议用备用机。
8.3 刷机后无限重启(Bootloop)
# 排查顺序
# 1. 看能不能进 fastboot
fastboot devices
# 2. 槽位是否正确(A/B 机器刷错槽是最常见原因)
fastboot getvar current-slot
fastboot set_active other # 切到另一个槽试试
# 3. 清 data(80% 的 bootloop 是残留数据冲突)
fastboot erase userdata
fastboot erase metadata
# 4. 重新刷完整官方包
./payload-dumper-go -o ./out official.zip
fastboot reboot fastboot
fastboot flash super out/super.img
fastboot reboot
8.4 fastboot 识别不到设备
| 平台 | 排查 |
|---|---|
| Windows | 设备管理器 → 看是否有 "Android" 或感叹号设备 → 手动指定 Google USB Driver |
| Windows | 尝试换 USB 2.0 口(部分 USB 3.x 兼容性差) |
| Linux | 检查 udev 规则(见准备工作),sudo fastboot devices |
| 通用 | 换线、换口、重装 platform-tools |
# Windows 查看 USB 设备
Get-PnpDevice -PresentOnly | Where-Object { $_.InstanceId -match "USB" } | Select-Object FriendlyName, InstanceId
8.5 刷回官方并重新上锁
# 1. 刷入完整官方固件(逐分区或 fastboot update)
fastboot update official_full_ota.zip
# 2. 确认系统能正常启动、无任何修改
# 3. 重新上锁
fastboot flashing lock
# 部分老机型
fastboot oem lock
⚠️ 警告:上锁前必须确认系统 100% 原厂。上锁后如果系统被修改过,AVB 校验失败会导致无法开机且无法解锁(一加部分机型上锁后 OEM unlocking 开关会被锁死),直接变板砖。
九、救砖速查表
| 症状 | 可进入的模式 | 救砖方案 | 成功率 |
|---|---|---|---|
| 卡 LOGO / bootloop | fastboot | 清 userdata + 重刷 super | 高 |
| 无限重启 | fastboot | 切槽位 + 重刷官方包 | 高 |
| 进不了系统但能进 fastboot | fastboot | 逐分区刷入官方镜像 | 高 |
| 只能进 Recovery | recovery | adb sideload 官方全量包 |
高 |
| 黑屏但电脑有反应 | EDL 9008 | MSM Download Tool / QFIL | 中(需 firehose) |
| 完全黑屏无反应 | 需短接 | 主板短接触点进 EDL | 中低 |
| 充电无任何反应 | 无 | 硬件故障,查电池排线 / 电源 IC | 低 |
十、操作检查清单
- [ ] 完整备份数据(含 OTP 密钥、Authenticator)
- [ ] 电量 ≥ 60%
- [ ] 原装数据线,台式机后置 USB 口
- [ ] 确认机型 codename 与固件包匹配(
fastboot getvar product) - [ ] 校验固件包 SHA256
- [ ] adb / fastboot 能正常识别设备
- [ ] 了解当前槽位(
fastboot getvar current-slot) - [ ] 准备好同版本的官方救砖包(本地保存)
- [ ] 知晓 EDL 进入方式(作为最后手段)
参考资源
| 类型 | 说明 |
|---|---|
| XDA Forums | 各机型版块,ROM / 救砖包 / 讨论 |
| GitHub: topjohnwu/Magisk | Magisk 官方仓库与文档 |
| GitHub: tiann/KernelSU | KernelSU 官方文档 |
| GitHub: ssut/payload-dumper-go | payload 提取工具 |
| 一加官方支持页 | 官方全量包与驱动 |
| Android 官方 Platform Tools | adb / fastboot |
📌 不同批次、不同区域的机型在分区布局与工具可用性上可能存在差异,操作前请以对应机型的 XDA 原帖与官方页面为准。