DCD / XCD 刷机教程

官方 DCD/XCD 刷机总教程。DCD(watt / SA8295)走 EDL 9008 刷机(sudo ./edl.sh -f);XCD 走 fastbootsudo ./flash_all.sh),刷前必须关闭 SoC 心跳,否则刷机过程中 MCU 会重启 SOC 导致失败。

ROM 包

Daily ROM 下载:座舱ROM平台(无权限需申请:权限申请

熔丝熔断版本刷机:熔丝熔断版本台架刷 user-root ROM

ROM 选择:当天 Dev 分支的线刷包-整包

一定要下载签名为测试、版本名称以 .D 结尾的包,否则默认未打开 ADB。

DCD

DCD ROM 选择示例(s-watt-dev / 测试 / .D)

DCD 线刷包与整包文件示例

  • 线刷包:watt_M_24.11.05.D_838_24.11.05.01.00_12_Uroot_IMAGES.zip(约 8082 MB)
  • 整包:watt_full_images.zip(约 3090 MB)

XCD

XCD ROM 选择示例(suiren / xcd-init)

XCD 线刷包文件示例

  • 线刷包:suiren-24.11.05.D-flash_package.tgz

卡刷

线刷

DCD

台架准备

  1. 将二合一串口线的 Type-C 端连入黑色口(注意正反),另一端连入电脑 二合一串口线接黑口
  2. 金手指插入台架背部,先关闭台架电源,再按住金手指上的按钮不松并重新上电,一段时间后(5 秒以上)松开,台架将进入 EDL 模式 金手指位置

Ubuntu

  1. 首次使用 Ubuntu 刷机时,需先参考 EDL工具使用说明 中“二、工具获取安装”,安装 EDL

  2. 验证台架:终端输入 lsusb,若列表中有 9008 设备,则已进入 EDL 模式 lsusb 看到 05c6:9008

  3. 进入到 watt_images 目录中(包含 ufs0、ufs1 文件夹),在终端执行:

    sudo ./edl.sh -f

    watt_images 目录结构

    命令执行完成,显示如下信息表示刷机完成({All Finished Successfully}): edl.sh 刷机完成输出

  4. 执行完毕后,给台架重新断电、上电即可

Windows

Windows 刷机工具已更新至 2.0+,流程待完善

  1. 安装下面的软件:小米汽车PC刷机鉴权工具 - 下载地址
  2. 账号申请:小米汽车PC刷机鉴权工具 - 账号&权限申请说明
  3. 小米座舱PC刷机鉴权工具 v2.0 - 使用说明
  4. 安装高通驱动qpm.qualcomm.com使用公司邮箱注册,安装驱动,下载完成后重启电脑Qualcomm USB Driver 下载

XCD

Ubuntu

关心跳! 如果没关心跳就进行了刷机,MCU 会在刷机过程中重启 SOC,导致刷机失败,此时设备会无限重启进 fastboot,无法正常开机。需通过 MCU 方式关闭心跳,再进行刷机。

❗ XCD 在 E4U2 阶段开启了功能安全 SoC 心跳监控功能,旨在能够在 SoC 系统异常场景下 MCU 根据 SoC 心跳监控策略重启 SoC,实现功能安全要求。

关心跳方式(任选其一):

方式 1:在“用户反馈” APP 中关闭

  1. 打开“用户反馈” APP
  2. 连续点击 10 次“问题反馈”
  3. 在弹出的页面中关闭“Soc 开关状态”
  4. 重启一次设备至点亮屏幕
  5. 通过 adb reboot bootloader 进入 fastboot 模式
  6. 前往下文「第三步」,开始刷机

用户反馈APP - Soc 开关状态

方式 2:SOC 侧(Android Shell 方式)

adb root
adb remount
adb shell setprop persist.soc_heartbeat_switch false
adb reboot

设备重启后,再进入 fastboot:

adb reboot bootloader

方式 3:MCU 侧(MCU Shell 方式)

进入 MCU Shell(任选其一):

  • Adb(适用于 Android 正常启动、能进 adb 的情况)
    adb root && adb shell stop mculog && adb shell microcom /dev/ttyHS4
  • MCU 串口(适用于设备起不来等各类异常情况)
    1. 将二合一串口线接到 MCU 串口上。对于 XCD 旧板(裸板),白口为 MCU 串口,黑口为 SOC 串口;对于 XCD 新板(有金属外壳),和旧板相反,黑口为 MCU 串口,白口为 SOC 串口。 XCD 旧板 MCU 串口(白口)

    2. 使用串口通信工具连接(任选其一):

      Minicom

      sudo apt update && sudo apt install minicom
      # 查看串口 USB
      ls /dev/ | grep -i usb   # 例如 ttyUSB0
      # 连接串口('ttyUSB0' 需根据上一步输出确定)
      sudo minicom -D /dev/ttyUSB0
      # 下面两步仅需配置一次,后续刷机无需再配:
      #   CTRL+A -> Z -> O -> Serial port setup -> Hardware Flow Control: NO
      #   CTRL+A -> L  (保存配置)

      Minicom 串口配置

      Putty

      sudo apt update && sudo apt install putty
      sudo putty

      Putty 串口配置

进入 MCU Shell 后:

  1. 关闭日志输出:
    log.set.loglevel.current 0
  2. 关闭心跳(粘贴到 MCU Shell 中回车;几秒后设备会自动重启进 fastboot 模式,此时心跳自动关闭):
    pm.soc.fastboot.ctrl 1
    MCU Shell 关闭心跳
  3. 若使用 MCU 串口形式,关闭心跳后需重新将线束插回 SOC 串口
    # 进入 fastboot 后获取版本,获取成功后执行刷机
    sudo fastboot getvar product

若 XCD 处于 Host 模式,无法线刷

  1. 参考上述 putty 方式进入串口
  2. 执行 usb.set.mode.saved 0 可以将 XCD 模式切换回 device

第三步:关闭心跳后,解压下载的 ROM 包,进入 ROM 包目录,执行:

sudo ./flash_all.sh

避坑记录

  1. 报错:Flashing is not allowed in Lock State
    • 现象:执行 sudo ./flash_all.sh 后提示 FAILED (remote: 'Flashing is not allowed in Lock State')
    • 解决:执行 sudo fastboot oem unlock
  2. 设备型号一致,但报错:Missmatching image and device
    • 现象:执行 sudo ./flash_all.sh 后提示 Missmatching image and device(镜像与设备不匹配),但实际确认台架硬件与 ROM 版本完全一致,排除版本不匹配。
    • 解决:可能是 sudo 的 PATH 环境变量不包含 fastboot 所在路径导致的。
      • 方法一:不使用 sudo,直接执行 ./flash_all.sh(普通用户的 PATH 包含 fastboot 安装路径)
      • 方法二:将 fastboot 所在路径添加到 sudo 的 PATH 环境中
    • 根源:脚本通过 fastboot 命令获取台架设备信息与 ROM 版本对比。但当 fastboot 命令本身不可用时(fastboot: not found),脚本未提示“命令不存在”,反而默认输出“镜像与设备不匹配”,导致报错误导。本质是 sudo 使用 root 的 PATH,未包含 fastboot 安装路径。

Windows

  1. 安装下面的软件:[附件: zip (token=JhPNbevKToE1mGxdDZKc8A0Un4f)]
  2. 参考“线刷-DCD-Windows”中的第 5 步:DCD / XCD 刷机教程,下载高通驱动
  3. WIN11 显示缺少驱动:Windows 常用驱动
  4. 打开 MobaXterm,选择对应串口建立连接,进入 mcu shell MobaXterm 主界面 MobaXterm 选择 Serial 连接 MobaXterm Serial 设置
  5. 输入 pm.soc.fastboot.ctrl 1 进入 fastboot 模式
  6. 进入 ROM 包目录,执行 sudo ./flash_all.sh 即可进行刷机

海外 ROM TIPS

最近 global 版本在切换到海外域名,开机向导登录小米汽车扫码会报错,暂时需要使用以下命令进行登录:

adb root
adb shell settings put global account_mi_config_host 1
adb shell settings put global micar_account_env PREVIEW
adb shell pkill -9 account

如果台架是 pre-prod 环境,就把 env 后面的环境改成 preprod

参考文档