海思机顶盒Hi3798使用Hitool和TTL备份并烧录海纳思Linux服务器系统固件
摘要
- 介绍了使用海思 CPU 的机顶盒的固件备份和烧录。通过 USB-TTL 串口烧录器 CH340 连接机顶盒,使用华为海思刷机工具 HiTool 创建和修改分区表文件,备份和烧写固件,通过升级包升级系统。在海纳思系统中安装homeassistant,通过 FTP、WebDAV、Alist云盘访问文件,真实的 CPU 型号和 reg name 的确定,以及加快烧写速度的方法。
背景说明
-
使用 Home assistant(后文缩写为 HA)需要个人服务器,根据不同的情况有不同的家用 Linux 服务器方案。
服务器方案 优点 缺点 旧手机 体积小、功耗低、价格低 性能低、网络受限 机顶盒 体积小、功耗低、价格低 性能低、网络受限 树莓派 体积小、功耗低 价格贵、性能中、网络受限 迷你主机 体积小、价格中 功耗中、性能中、网络受限 NAS 体积中、价格中 功耗高、性能高、网络受限 电脑/服务器 性能高 价格贵、体积大、功耗高、网络受限 云服务器 网络不受限,性能高 价格贵 -
旧手机可用于简单的功能验证,安装较为复杂,也容易出现问题。目前常用的方案有termux、termux+proot、Alpine Term+docker、linux deploy(需要 root 权限)。termux 和 termux+proot 方案主要是通过安装 Python 来安装 HA。经过尝试,termux 安装 HA 会出现依赖报错;termux+proot+debian 启动 HA 时会出现版本错误的提示;Alpine Term+docker 安装 HA 后可以正常运行,但性能极低卡顿严重。
-
机顶盒可用于简单的个人使用,安装难度一般,不容易出现问题。目前常用的有Armbian、海纳思系统这两种方案,主要是通过安装 docker 来安装 HA。海纳思系统 主要支持海思芯片中的 Hi3798MV100 、Hi3798MV200 、Hi3798MV300 ,不支持Hi3798MV300H 等带后缀的处理器。Armbian 主要支持晶晨芯片中的 S9xx 系列。
-
原本是打算对型号为
CM211-2
的机顶盒进行刷机,后来发现 CPU 型号为Hi3798MV300H
。于是改为对型号为HG680-j
且 CPU 为Hi3798MV100
的机顶盒进行刷机。
操作实践
前提要求
-
软件:华为海思刷机工具HiTool,电视机顶盒工具开心电视助手(非必需)。
-
硬件:电脑,USB-TTL 串口烧录器 CH340,U 盘。
获取系统信息
-
使用网线将接机顶盒和电脑连接到网络,使用导线连接机顶盒和 USB-TTL 串口烧录工具。
-
打开HiTool后点击HiBurn。
-
设置PC 与板端配置参数。设置 本地 PC 配置下的串口 和 服务器 IP,板端配置下的IP 地址 和网关。串口 为 USB-TTL 串口烧录器所使用的端口号(查看方式:控制面板 -> 设备管理器 -> 端口(COM 和 LPT)),服务器 IP 为电脑的 IP 地址。 IP 地址 为机顶盒的 IP 地址,网关一般保持默认即可 。传输方式 选择 网口(推荐)。
-
获取中央处理器型号和管脚配置表。点击 打开终端工具 ,然后点击连接,最后给机顶盒上电。启动信息中的
Reg Name
包含管脚配置表、中央处理器型号、内存规格、PCB 板层数、闪存类型。
-
查看分区表。对于型号为
CM211-2
且 CPU 为Hi3798MV300H
的机顶盒,启动信息中会显示分区表信息。而对于型号为HG680-j
且 CPU 为Hi3798MV100
的机顶盒,启动信息中不会显示分区表,需要执行cat /proc/cmdline
命令查看分区表信息。
-
查看挂载信息。执行
mount
命令查看系统中所有的挂载文件系统。
-
查看闪存块分区。对于型号为
CM211-2
机顶盒,执行cd /dev/block/platform/soc/by-name
和ls -al
命令查看闪存块分区所指向的分区名。而对于型号为HG680-j
机顶盒,执行cd /dev/block/platform/hi_mci.1/by-name
和ls -al
命令查看闪存块分区所指向的分区名。对于其它机顶盒,可在/dev/block/platform
下的目录的子目录中寻找by-name
文件夹。
-
查看文件系统信息。执行
df
命令查看系统中分区的大小和使用量。
-
根据系统中分区的使用量,清理无用信息为数据备份做准备。软件卸载可使用开心电视助手软件,此软件还可以便捷的获取分区表、挂载信息、文件系统信息等。
创建和修改分区表
-
设置芯片型号。点击芯片 -> 切换芯片 -> Hi3798MV100 。
-
点击 烧写 eMMC,点击表格右侧的绿色的加号以创建新的分区。
-
点击名称项,根据
分区表
输入分区名,并遵循闪存块分区
中的区块顺序(从mmcblk0p1
到mmcblk0p17
)。 -
点击文件项里面的右侧的文件夹图标(选中时出现),在弹出的对话框中选择文件路径并在输入文件名后点击打开,建议文件名与分区名一致。
-
点击长度项,根据
分区表
设置对应分区的大小。 -
点击文件系统项,根据
挂载信息
选择对应分区的文件系统。此项只影响烧录的速度。 -
勾选要操作的分区前面的复选框。
-
点击
eMMC分区表文件
右侧的浏览,在弹出的对话框中选择文件路径并在输入文件名后点击打开,然后点击保存。建议文件名包含设备的 CPU 型号和闪存类型。
操作固件
备份固件
方法一:TTL+HiTool
-
在创建和修改分区表的最后一步点击上载。
-
弹出对话框后关闭机顶盒电源。
-
开启机顶盒电源。
-
等待对话框中的上载的进度条结束。
方法二:TTL+U 盘
-
点击 打开终端工具 ,然后点击连接,最后给机顶盒上电。
-
执行
df
命令查看系统中分区的使用情况。 -
插入 U 盘(FAT32 格式)后执行
df
命令查看系统中分区的使用情况,新出现的/mnt/sda/sda1
表示 U 盘挂载成功。 -
执行
cd /dev/block/platform/soc/by-name
和ls -al
命令查看闪存块分区所指向的分区名。root@Hi3798MV300:/ # cd /dev/block/platform/soc/by-name root@Hi3798MV300:/dev/block/platform/soc/by-name # ls -al lrwxrwxrwx root root 1970-01-01 08:00 baseparam -> /dev/block/mmcblk0p5 lrwxrwxrwx root root 1970-01-01 08:00 boot -> /dev/block/mmcblk0p9 lrwxrwxrwx root root 1970-01-01 08:00 cache -> /dev/block/mmcblk0p14 lrwxrwxrwx root root 1970-01-01 08:00 fastboot -> /dev/block/mmcblk0p1 lrwxrwxrwx root root 1970-01-01 08:00 fastplay -> /dev/block/mmcblk0p8 lrwxrwxrwx root root 1970-01-01 08:00 logo ->