2026/4/6 12:32:09
网站建设
项目流程
一个真实的海思Hi3798MV300H机顶盒救砖全过程包含所有踩过的坑和解决方案 前言为什么要写这篇文章事情要从一个周末说起。手贱把家里的CM201-2机顶盒刷成了砖头——开机无显示串口疯狂输出错误信息。折腾了一周查了无数资料终于用HiTool成功救砖。这个过程踩了太多坑写出来希望能帮到遇到类似问题的朋友。 救砖前的准备硬件准备TTL转USB串口模块CH340/CP2102均可网线必须TFTP刷写必备U盘格式化为FAT32电脑Windows系统软件准备HiTool海思烧录工具版本5.2.19以上串口驱动CH340/CP2102驱动TFTP服务器HiTool自带完整的固件镜像包网友分享或自己备份的⚠️ 关键认知别想着一次成功这是我最大的教训。一开始总想一次性刷完所有分区结果反复失败。正确的思路是分阶段、保网络、留后路。 第一阶段TTL刷写最小系统让设备活过来1. 连接TTL线text机顶盒主板 → TTL模块 TX → RX RX → TX GND → GND2. HiTool基础配置打开HiTool选择对应的芯片型号我的是Hi3798MV300H串口号COM5根据实际选择波特率115200勾选网口烧写重要3. 只刷这5个核心分区约76MBxmlPartitionNamefastboot Start0 Length4M/ PartitionNamebootargs Start4M Length4M/ PartitionNamekernel Start160M Length40M/ PartitionNamebaseparam Start24M Length8M/ PartitionNamemisc Start200M Length20M/为什么只刷这几个这是能启动到命令行的最小集合刷写速度快3-5分钟即使失败也不会变真砖4. 第一个坑IP地址设置错误text# 错误示例我犯的错 setenv ipaddr 192.168.1.0 # 不能用0结尾 setenv serverip 192.168.1.1 # 正确设置 setenv ipaddr 192.168.1.10 # 不能和电脑冲突 setenv serverip 192.168.1.1 # 电脑IP setenv netmask 255.255.255.0 setenv gatewayip 192.168.1.2 saveenv 第二阶段网络配置打通任督二脉网络连接方式text机顶盒网口 ── 网线 ── 路由器/交换机 ── 网线 ── 电脑验证网络连通性在HiTool终端中输入bashping 192.168.1.1 # 看到 host 192.168.1.1 is alive 就成功了第二个坑防火墙拦截TFTPWindows防火墙会拦截TFTP传输必须控制面板 → Windows Defender防火墙允许应用通过防火墙添加C:\Program Files (x86)\smallTools\HiTool\tftpd32.exe 第三阶段U盘DD刷写最优方案这是我自己摸索出来的最佳实践。既然最小系统能跑起来了为什么还要用慢速的网络刷写1. 挂载U盘bash# 查看U盘设备 cat /proc/partitions | grep sd # 创建挂载点 mkdir /mnt/usb # 挂载U盘通常是sda1 mount /dev/sda1 /mnt/usb2. 准备精简镜像重要发现很多分区后面全是0可以大幅精简bash# 查看system分区实际使用量 df -h /system # 结果1GB分区实际只用了350MB # 精简备份在好的机顶盒上执行 dd if/dev/block/by-name/system of./system.img bs1M count400 convsparse3. U盘DD刷写脚本创建/mnt/usb/flash.shbash#!/system/bin/sh echo 开始刷写系统... # 刷写system分区最大最耗时 dd if/mnt/usb/system.img of/dev/block/by-name/system bs1M statusprogress # 刷写recovery dd if/mnt/usb/recovery.img of/dev/block/by-name/recovery bs1M # 刷写logo开机画面 dd if/mnt/usb/logo.img of/dev/block/by-name/logo bs1M # 验证刷写 echo 验证中... cmp /mnt/usb/system.img /dev/block/by-name/system echo 刷写完成 sync reboot4. 第三个坑DD命令卡死症状dd命令执行到一半卡住不动原因U盘接触不良或供电不足解决bash# 使用convfsync确保数据写入完成 dd ifsystem.img of/dev/block/by-name/system bs1M convfsync # 或分块写入 dd ifsystem.img of/dev/block/by-name/system bs4M 第四阶段解决启动循环症状刷完后不断重启串口输出循环错误原因分析缺少cache分区或data分区未初始化解决方案bash# 手动创建cache分区 make_ext4fs /dev/block/by-name/cache # 清除misc分区标记 dd if/dev/zero of/dev/block/by-name/misc bs4k count1 # 恢复出厂设置 reboot recovery 各阶段时间对比方案耗时成功率推荐度全分区TTL刷写40-60分钟60%❌网络TFTP刷写15-20分钟80%⭐⭐最小系统U盘DD5-8分钟95%⭐⭐⭐⭐⭐ 核心经验总结1. 分区选择策略必须刷的缺一不可fastboot引导bootargs启动参数kernel内核system系统recovery恢复模式可以跳过的cache系统自动创建userdata首次启动创建backup备份分区2. 镜像精简技巧bash# 查看分区实际使用率 df -h | grep mmcblk # 创建稀疏镜像 dd if/dev/block/by-name/system of./system.img bs4k convsparse # 压缩备份 tar -czf system.tar.gz /system/3. 救砖黄金法则永远保留TTL连接- 这是最后的救命稻草先最小后完整- 确保能启动再完善网络是基础- 打通网络才有更多选择U盘是王道- 本地刷写最稳定 最终成果经过一周折腾机顶盒成功复活✅ 正常开机进桌面✅ 网络功能正常✅ USB识别正常✅ 遥控器响应镜像大小对比原始全备份2.8GB精简后备份500MB刷写时间从1小时 → 8分钟 写在最后救砖最大的敌人不是技术而是焦虑。遇到问题别慌按照最小系统→网络→U盘的思路来成功率很高。希望这篇文章能帮你少走弯路。如果遇到具体问题欢迎留言交流