尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

旧机顶盒变智能家居中枢:EC6108V9C刷海纳思部署Home Assistant全攻略

旧机顶盒变智能家居中枢:EC6108V9C刷海纳思部署Home Assistant全攻略 电视柜下面翻出这台华为EC6108V9C的时候我本来没抱太大期望。一台老掉牙的IPTV机顶盒跑原厂系统连安装软件都受限制扔了可惜卖了不值。后来查了一圈资料发现这个盒子的海思Hi3798M方案其实性能并不差社区里还有专门给盒子和NAS玩家做的海纳思系统。我顺手把它刷成海纳思在Docker里跑起Home Assistant接着配好了HACS插件市场最后干脆让它接管了全屋智能家居的中枢角色。整套折腾下来成本几乎为零作用却比多数几百块的智能网关都实在。这个过程没有想象中复杂但坑确实不少。刷机前的短接姿势不对、烧录工具不识别、Docker镜像拉取失败、HACS装完找不到入口这些问题我一个没落下。如果你手里也有同款机顶盒或者类似的海思方案盒子想把它利用起来做智能家居控制中心这篇内容可以帮你少走不少弯路。1. 项目整体设计旧盒子焕新的可行性判断1.1 华为EC6108V9C的硬件底子怎么样很多人的第一反应是一个电视盒子能干什么实际上EC6108V9C用的海思Hi3798M芯片四核A53架构主频1.5GHz左右搭配1GB内存和4GB到8GB的eMMC存储。这个配置放在今天去看手机是很寒酸但和树莓派3B对比它的CPU性能并不差多少而且自带百兆有线网口、USB 2.0接口、HDMI输出基础外设接口齐全。最关键的是这类机顶盒普遍是运营商定制版原厂系统被深度定制限制了一大堆功能很多人刷机只是为了装个第三方桌面看视频。但换个思路它本质上就是一台小型的ARM计算机只要能接管系统底层就能像一台迷你服务器一样使用。Hi3798M这颗芯片在Linux生态里的适配比较成熟海纳思社区正是围绕这类海思芯片盒子做的固件支持。评估之后我对这台盒子的定位是这样的不需要它干重活只要7x24小时稳定运行跑一个Docker容器里的Home Assistant再把串口设备或者局域网设备接进来就完全够用了。性能上不用担心Home Assistant本身非常轻量真正吃资源的是后续添加的摄像头分析、语音助手这类高负载功能。1.2 海纳思在系统层面扮演的角色为什么不直接在安卓系统里装APK版的Home Assistant原因很简单Home Assistant作为智能家居中枢需要长时间后台运行安卓系统在机顶盒上容易出现进程被杀、系统休眠、网络断连等问题。更重要的安卓版功能受限很多集成和硬件访问能力都不完整。海纳思是专为NAS玩家和电视盒子定制的Linux系统基于Debian和Armbian的体系做二次开发。它解决的问题很具体把原本跑安卓的盒子刷成标准的Linux环境并且预置了Docker、文件共享、下载工具等NAS常用功能甚至提供一个网页管理面板。对于玩Home Assistant的人来说海纳思相当于帮我们把底层的驱动、引导、文件系统都处理好了剩下的事情就是装Docker和跑容器。选择海纳思而不是直接刷Armbian我主要考虑到三点。第一海纳思有专门针对EC6108V9C的适配固件网络、GPU、遥控器、无线模块这些外设的驱动基本不用自己折腾。第二自带的面板可以图形化查看系统状态、磁盘占用、容器运行情况对新手非常友好。第三社区活跃遇到问题能搜到不少现成方案尤其是海思盒子相关的教程。1.3 装好之后的架构与预期效果整套系统跑起来的架构不复杂但分工很清晰华为EC6108V9C海纳思Linux └── Docker └── Home Assistant容器 ├── HACS插件市场 ├── 小米/局域网设备接入 └── USB Zigbee网关/串口外设我最终希望达到的效果是通过Home Assistant把不同品牌的智能设备统一管理用自动化脚本实现跨平台联动。比如回家自动开灯、温度过高自动开风扇、门磁触发自动推送通知到手机这些都不依赖某个特定品牌的App。HACS负责补齐Home Assistant官方没有的功能相当于给HA提供一个可扩展的插件商店。2. 刷机前准备工具、固件与烧录原理2.1 确认硬件版本与刷机诉求刷机之前你最好先确定手里的盒子具体情况。EC6108V9C只是一个系列型号不同批次在内存、存储、无线模块上可能有差异。最简单的确认方法是拆机看主板上印刷的型号丝印其次是进原厂系统看设置里的硬件信息。我手上这台是1GB内存加4GB存储的版本属于这个系列里比较常见的配置。说实话4GB的eMMC装上海纳思之后剩余空间并不宽裕所以后来我把Home Assistant的配置目录放在了外接U盘上这样既不影响系统运行也方便备份。刷机之前还有一件重要的事情确认自己为什么刷机。如果只是想在盒子上装个第三方桌面看视频那完全不用走到刷Linux这一步。但如果你想做智能家居中枢又希望系统稳定、权限完整、能跑Docker那刷海纳思就是更彻底也更省心的路线。2.2 工具清单与HiTool烧录原理海思芯片的烧录方式和普通的Rockchip、Amlogic不太一样它通常使用海思官方的HiTool工具通过USB烧写。这背后的原理是Hi3798M芯片内置了bootrom引导程序当检测到特定启动模式时会等待上位机通过USB传输固件分区镜像。刷机需要的工具并不复杂列个清单工具用途备注电脑Windows安装HiTool并传输固件烧录工具仅支持WindowsUSB A-A数据线连接盒子和电脑正反都要能插紧镊子或短接帽短接主板上的烧录触点触发bootrom烧录模式十字螺丝刀拆机壳注意卡扣海纳思EC6108V9C固件包包含烧录分区表和各分区镜像从海纳思社区或相关教程获取这里要提一下短接烧录的原理。正常情况下机顶盒上电后会从eMMC引导系统进入安卓。但如果我们把主板上特定两个触点短路bootrom在启动阶段就会跳过正常的引导流程进入USB烧录等待状态。此时把电脑和盒子用USB A-A线连好HiTool就能识别到芯片并开始烧写。2.3 Hi3798M平台短接烧录实操具体的刷机步骤我按当时的操作顺序来写拆开盒子外壳找到主板上的短接触点。不同批次的主板短接位置可能不同有的标注为J16有的在芯片附近裸露两个焊点。一般来说短接点附近会有一组针脚或者标识你可以先在网络上搜对应主板型号的照片对比确认。安装HiTool工具打开后选择“烧写eMMC”模式加载海纳思固件包里的分区表xml文件。分区表会告诉HiTool哪些分区要写入哪个镜像包含fastboot、boot、system、recovery等分区。用USB A-A线连接盒子和电脑。然后把镊子短接在烧录触点上保持不动给盒子上电。这时电脑设备管理器里会出现一个新的USB设备HiTool底部状态栏也会显示识别到芯片。HiTool识别成功后点击“烧写”等待进度条走完。整个过程大概几分钟根据固件大小和USB传输速度决定。烧写完成后先断开短接再给盒子断电。重新上电正常情况下盒子会进入海纳思的首次启动流程。如果电视上没有任何画面可以先确认HDMI线是否接好、固件是否适配以及刚才烧写过程有没有报错。刷机过程中最容易犯的错误是短接时间太短或者USB线不是A-A线而是普通打印机线。还有一个细节HiTool烧写时会清空原有安卓系统所以在进入这一步之前确保你并不需要原系统里的任何数据。我个人的习惯是在刷机前先备份原厂固件这样即使后面后悔还能通过同样的方式刷回去这个备份工作也可以直接用HiTool的“读取”功能来做。3. 海纳思初始化与Home Assistant容器化部署3.1 首启配置开机、找IP、SSH登录刷完海纳思第一次开机电视上会进入一个类似Linux终端或者简易控制台界面。如果没接显示器也不用慌海纳思默认启用了SSH我们直接通过网络连接它。首先要找到盒子的IP地址。最简单的方法是在路由器管理后台看在线设备列表找设备名称类似“hinas”或主机名包含相关信息的设备。如果看不到也可以用网线直接连接电脑通过同网段扫描工具发现但为了省事还是建议在路由器页面操作。确认IP后用SSH工具连接ssh root192.168.x.x初始账号一般是root默认密码以固件发布说明为准常见的是hinas。登录成功后的第一件事我建议立刻修改密码passwd然后检查系统分区和剩余空间df -h free -h如果发现根目录空间没有完全扩展到eMMC可以看一下海纳思是否提供了扩容命令。部分固件首次启动时会自动完成空间扩容如果没有可以参考海纳思面板里的磁盘管理操作。总体而言这时候你已经有了一个标准的Linux环境接下来安装Docker容器就是水到渠成的事。3.2 Docker部署Home Assistant配置与参数解读海纳思系统通常会预装Docker环境可以在终端里验证一下docker --version如果没有安装可以运行海纳思面板或根据系统文档安装Docker。接下来是部署Home Assistant。我选择用Docker Compose的方式把配置固化下来方便以后修改和重建。先创建目录mkdir -p /opt/hass/config然后在/opt/hass目录下创建docker-compose.yml文件services: homeassistant: image: ghcr.io/home-assistant/home-assistant:stable container_name: homeassistant restart: unless-stopped network_mode: host privileged: true volumes: - /opt/hass/config:/config - /etc/localtime:/etc/localtime:ro这里每项参数都是有讲究的。restart: unless-stopped保证容器在系统重启后自动拉起这对7x24小时运行的中枢设备非常重要。network_mode: host的意思是容器直接使用主机的网络栈不做端口映射。Home Assistant大量依赖局域网广播和自动发现协议比如mDNS、SSDP如果使用默认的bridge网络模式很多设备会搜索不到所以host模式是跑HA的首选。privileged: true是给容器更高的权限主要是为了让HA能够访问USB串口设备、GPIO这类硬件资源。虽然从安全角度看不太推荐但在家庭内网环境里这是一个常见且省心的选择。启动容器cd /opt/hass docker compose up -d第一次启动会拉取镜像大小在1GB左右具体速度取决于网络情况。拉取完成并启动后可以用日志确认状态docker logs -f homeassistant看到“Home Assistant initialized”相关的日志后就可以在浏览器里访问http://盒子的IP:8123了。3.3 外接USB设备透传与多协议接入Home Assistant本身支持非常多的接入方式WiFi设备、局域网设备、云平台账号、蓝牙、Zigbee、Z-Wave等等。盒子自带百兆网口跑局域网协议完全没压力。如果你想接入Zigbee设备通常需要一个USB协调器比如常见的CC2531或者基于Silicon Labs芯片的Zigbee Dongle。把USB协调器插到盒子上后先确认系统识别到了设备ls /dev/ttyUSB* ls /dev/serial/by-id/然后修改docker-compose.yml把设备透传给容器。这里建议使用/dev/serial/by-id/路径而不是/dev/ttyUSB0因为ttyUSB0在多个USB设备切换时可能会变而by-id路径是固定的services: homeassistant: image: ghcr.io/home-assistant/home-assistant:stable container_name: homeassistant restart: unless-stopped network_mode: host privileged: true volumes: - /opt/hass/config:/config - /etc/localtime:/etc/localtime:ro devices: - /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0:/dev/ttyUSB0改完后执行docker compose up -d容器会重建并挂载设备。之后在Home Assistant里搜索对应集成选择/dev/ttyUSB0就可以配对Zigbee设备了。4. HACS插件市场安装与插件推荐4.1 HACS的价值与应用场景Home Assistant官方集成库虽然覆盖面很广但总有等你需要的时候发现没有的情况。HACS就是解决这个问题的它相当于Home Assistant的插件商店里面可以下载非官方的前端卡片、自动化工具、第三方集成。很多智能家居玩家装HA的下一步必装HACS原因很简单官方没有的功能HACS里大概率有人已经做出来了。举个实际场景家里有一堆米家设备虽然可以通过米家官方集成接入但设备类型覆盖不全自动化触发也受限。通过HACS安装第三方米家集成很多之前识别不了的设备就能完整暴露出来。再比如你想在仪表盘上做一个更美观的卡片HACS里的card-mod可以让你自定义卡片样式这是官方默认功能做不到的。4.2 Docker版HA安装HACS的完整步骤我自己用的是Docker容器版Home Assistant安装HACS和其他场景稍有不同但整体思路一致。HACS的本质是一堆Python代码组成的自定义组件只需要放进Home Assistant的custom_components目录即可。具体操作下载HACS发布包。到GitHub的HACS Releases页面下载最新的zip压缩包文件名类似hacs.zip。把压缩包上传到盒子的/opt/hass/目录解压到正确位置。需要注意解压层级解压后应该能看到custom_components/hacs/这样的结构。如果目录结构不对可以手动调整cd /opt/hass unzip hacs.zip # 解压后检查是否看到 custom_components 目录 ls custom_components/hacs/重启Home Assistant容器docker restart homeassistant重启后在Home Assistant左侧菜单进入“设备与服务”点击“添加集成”搜索“HACS”。如果搜索不到清理一下浏览器缓存或者等几分钟再试。按照提示走授权流程这里需要用到GitHub账号HACS的更新和仓库加载依赖GitHub的API。整个授权过程在官方引导下完成不会有任何问题。有的场景下网络访问GitHub不稳定导致HACS界面加载不出来或者插件更新失败。这种情况我建议优先检查DNS设置把盒子的DNS改成公共DNS再试。如果仍然不行HACS也支持手动下载插件压缩包解压到custom_components目录后重启HA实现离线安装的效果。4.3 装好HACS后优先补的插件HACS装好之后里面内容很多我建议优先装这几个插件名称类型用途card-mod前端卡片自定义卡片样式browser_mod前端工具浏览器端弹窗、控制auto-backup集成自动备份HA配置Xiaomi Miot Auto集成更完整的米家设备接入高德地图卡片前端卡片位置轨迹展示其中auto-backup我个人强烈推荐。智能家居配置是越改越多很可能某次修改导致配置错误、HA起不来。有了自动备份出问题时可以快速回滚到之前能用的状态。这套方案跑在老旧机顶盒上存储空间不大备份策略建议保留最近3到5个版本太多会把磁盘塞满。5. 常见故障、救砖方法与长期运行优化5.1 刷机失败与救砖排查玩刷机最怕什么变砖。海思平台好在有短接烧录这个保底方案理论上只要bootrom没坏就可以通过HiTool重新写入。遇到设备无法正常启动不要慌按照这个顺序排查。第一确认电源和HDMI是否有输出。有时候只是HDMI线接触不良或者电源适配器功率不够带不动。第二重新进入短接烧录模式把原先下载的固件再烧一遍。这一步能解决绝大多数刷机失败问题。第三检查HiTool工具能否识别芯片。如果设备管理器里没有新设备很可能是驱动没装好换一台电脑或者重装驱动再试。我在实操中遇到最诡异的问题是烧录显示成功但重启后依然进不了系统。反复排查后发现是eMMC原有分区表有残留后来在HiTool烧写前选择了“擦除eMMC”选项重新烧写才恢复正常。所以如果你遇到类似问题可以检查烧录配置里是否有全盘擦除或完整烧写的选项。5.2 Home Assistant运行期的典型案例系统稳定运行之后日常维护的重点转移到Home Assistant本身。我列几个高概率遇到的问题和处理方式。第一网页打不开HA页面。先确认容器是否在运行运行docker ps看状态如果容器停了用docker logs查看原因。常见原因是配置错误导致HA启动失败这时可以进入配置目录临时修改或者恢复备份。第二USB设备在容器里找不到。重启盒子之后USB设备的路径可能发生变化。前面提到用/dev/serial/by-id路径、重启后重新挂载docker compose up -d基本能解决。第三eMMC空间不足。Docker镜像、HA日志、数据库会不断占用空间。我建议开启HA的recorder组件数据清理策略把历史数据保留天数控制在合理范围内。同时定期运行docker system prune -a清理无用镜像。5.3 散热、功耗与稳定性调整老机顶盒长期开机散热是需要关注的点。Hi3798M本身发热不算大但机顶盒原装外壳通风条件一般。我做了两件事把盒子外壳顶部钻了几个通风孔给芯片贴了一片小铝散热片。温度实测从待机60多度降到了50度左右运行稳定性有明显提升。可以定期查看芯片温度cat /sys/class/thermal/thermal_zone0/temp输出除以1000就是摄氏度。如果温度长期超过80度就得加强散热了。功耗方面这个盒子整机满载也就在5W到8W之间比任何一台旧电脑改造的NAS都要省电。为了降低空载发热我额外把CPU调成了省电模式echo powersave /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor不过这个设置重启后会丢失需要配置成开机自启。海纳思系统里可以添加到/etc/rc.local或者干脆写一个systemd服务。对普通用户来说不做这一步问题也不大默认的interactive调度对日常使用的影响很小。最后补充一个我自己的使用习惯每次准备改HA配置或者刷机之前先把/opt/hass/config整个目录打包备份到电脑上。命令很简单tar -czf hass_backup.tar.gz -C /opt/hass config这个习惯救过我太多次了。智能家居方案是越玩越深的配置改来改去很容易越改越乱有备份在手什么时候想回退都是几分钟的事。旧机顶盒焕新这套方案不只是一个省钱的选择更是把手里闲置硬件重新利用起来、让智能家居真正本地化和可控化的一个可行路线。
返回列表