Loading...
Loading...
Compare original and translation side by side
| Script | Purpose |
|---|---|
| Query DCP API, download + extract device image |
| Parse |
| 脚本 | 用途 |
|---|---|
| 查询 DCP API,下载并解压设备镜像 |
| 解析 |
hdc list targetshdc list targets
**Via SSH tunnel:**
```bash
ssh -p $SSH_PORT $SSH_USER@$SSH_HOST "echo connected && hdc list targets"
**通过 SSH 隧道连接:**
```bash
ssh -p $SSH_PORT $SSH_USER@$SSH_HOST "echo connected && hdc list targets"
Record the current firmware version for post-flash comparison:
```bash
hdc shell param get const.product.software.version
记录当前 firmware 版本,以便刷写后进行对比:
```bash
hdc shell param get const.product.software.versionSKILL_DIR=<installed-skill-dir>
python3 "$SKILL_DIR/download_daily.py" --component dayu200SKILL_DIR=<installed-skill-dir>
python3 "$SKILL_DIR/download_daily.py" --component dayu200system.img--yesflash_device.pyFLASHpython3 "$SKILL_DIR/flash_device.py" --img-dir daily_build --yessystem.img--yesflash_device.pyFLASHpython3 "$SKILL_DIR/flash_device.py" --img-dir daily_build --yeshdc shell param get const.product.software.versionhdc list targetshdc shell param get const.product.software.versionhdc list targetshdc shell mount -o rw,remount /
for lib in lib1.z.so lib2.z.so; do
hdc file send $lib /system/lib/$lib
done
hdc shell rebootssh -p $SSH_PORT $SSH_USER@$SSH_HOST "hdc shell mount -o rw,remount /"
for lib in lib1.z.so lib2.z.so; do
scp -P $SSH_PORT $lib $SSH_USER@$SSH_HOST:push_tmp/$lib
ssh -p $SSH_PORT $SSH_USER@$SSH_HOST "hdc file send push_tmp/$lib /system/lib/$lib"
done
ssh -p $SSH_PORT $SSH_USER@$SSH_HOST "hdc shell reboot"hdc shell mount -o rw,remount /
for lib in lib1.z.so lib2.z.so; do
hdc file send $lib /system/lib/$lib
done
hdc shell rebootssh -p $SSH_PORT $SSH_USER@$SSH_HOST "hdc shell mount -o rw,remount /"
for lib in lib1.z.so lib2.z.so; do
scp -P $SSH_PORT $lib $SSH_USER@$SSH_HOST:push_tmp/$lib
ssh -p $SSH_PORT $SSH_USER@$SSH_HOST "hdc file send push_tmp/$lib /system/lib/$lib"
done
ssh -p $SSH_PORT $SSH_USER@$SSH_HOST "hdc shell reboot"SKILL_DIR=<installed-skill-dir>
SSH_PORT=<ssh-port>
SSH_USER=<ssh-user>
SSH_HOST=<ssh-host>SKILL_DIR=<installed-skill-dir>
SSH_PORT=<ssh-port>
SSH_USER=<ssh-user>
SSH_HOST=<ssh-host>
**WARNING: SSH disconnect during flash is dangerous.** If the SSH session drops while `dd` is writing a partition, the device may be left in a partially-written state. Mitigations:
- Use `nohup` or `tmux`/`screen` on the remote machine to keep the process alive if SSH drops.
- Ensure the remote machine has a stable power supply.
- If SSH drops mid-flash, do NOT power cycle the device. Reconnect SSH and check if the process is still running (`ps aux | grep flash_device`).
**警告:刷写期间断开 SSH 连接非常危险。** 如果 SSH 会话在 dd 写入分区期间中断,设备可能处于部分写入状态。缓解措施:
- 在远程机器上使用 `nohup` 或 `tmux`/`screen`,确保 SSH 断开后进程仍能继续运行。
- 确保远程机器供电稳定。
- 如果刷写过程中 SSH 断开,请勿立即给设备断电。重新连接 SSH,并检查进程是否仍在运行(`ps aux | grep flash_device`)。| Symptom | Recovery |
|---|---|
| Device reboots to updater loop | Re-flash all partitions from updater mode |
| hdc list targets shows nothing | Try maskrom mode or check USB cable |
| Boot hangs on logo | system.img may be corrupt — re-download and flash |
| Services crash after custom .so push | IDL interface mismatch — do a full flash instead of partial push |
| 症状 | 恢复方法 |
|---|---|
| 设备反复重启进入 updater 模式 | 在 updater 模式下重新刷写全部分区 |
| 尝试 maskrom 模式或检查 USB 线缆 |
| 启动时停留在 Logo | |
| 推送自定义 .so 后 service 崩溃 | IDL 接口不匹配,应执行完整刷写,而不是部分推送 |
flash_device.pyCMDLINE:mtdparts=...parameter.txt--allow-fallback-partitionsdata.builds.dataList[].componentdownload_daily.pyflash_device.pyFLASH--yesflash_device.pyhdcuserdata.img/dataddsyncuserdata.imghdc file send/dev/block/by-name/userdataflash_device.pyparameter.txtCMDLINE:mtdparts=...--allow-fallback-partitionsdata.builds.dataList[].componentdownload_daily.py--yesflash_device.pyFLASHhdcflash_device.pyuserdata.img/datasynchdc file senduserdata.img/dev/block/by-name/userdata| Mistake | Fix |
|---|---|
| DCP 返回空 | 日期格式 |
| dd 无输出 | 必须 updater 模式 |
| userdata 失败 | 先 umount /data |
| 推包后 mmi_service 不启动 | IDL 接口变了需全量刷机,不能只推部分 .so |
| SSH 连不上 | 先启动目标机器的 SSH 或端口转发服务,确认端口 |
| SSH 断开导致烧录中断 | 用 nohup/tmux 运行脚本;不要立即断电 |
| 下载的镜像包损坏 | 删除 tar.gz 重新下载;检查网络连通性 |
| 错误 | 解决方法 |
|---|---|
| DCP 返回空 | 日期格式 |
| dd 无输出 | 必须使用 updater 模式 |
| userdata 失败 | 先执行 umount /data |
| 推包后 mmi_service 不启动 | IDL 接口已变更,需要完整刷写,不能只推送部分 .so |
| SSH 无法连接 | 先启动目标机器的 SSH 或端口转发服务,并确认端口 |
| SSH 断开导致刷写中断 | 使用 nohup/tmux 运行脚本;不要立即断电 |
| 下载的镜像包损坏 | 删除 tar.gz 并重新下载;检查网络连通性 |