斐讯N1盒子安装Home Assistant Core全教程:从Armbian到EMQX的智能家居中枢
2026/9/13 13:30:21 网站建设 项目流程

手里的斐讯N1盒子吃灰很久了吧?这盒子当年因为便宜大碗,被大家玩出了花:软路由、游戏机、电视盒子、下载机……但很少有人认真把它当成一个智能家居中枢来用。我在折腾了一圈之后发现,N1盒子安装官方Home Assistant其实是性价比极高的方案——Amlogic S905D四核处理器、2GB内存、8GB eMMC存储,千兆网口,二手几十块钱就能拿下。这个配置跑一个纯净的Home Assistant完全是绰绰有余,而且功耗只有几瓦,放在弱电箱里一年电费可能都不到一杯奶茶钱。这篇文章就把我自己的完整折腾过程写出来:从选型思路、刷Armbian、安装官方HA(也就是HA Core),再到接入EMQX MQTT、排坑和恢复出厂系统,一步不落,保证你看完就能动手复现。

我特别要说明一下,这里的“官方Home Assistant”不是HAOS那种整套系统镜像,也不是Docker容器版,而是从PyPI上安装的官方Python发行包。这套方案最大的优势是干净、轻量、可控,没有Supervisor那堆系统服务吃内存,对N1这种2GB内存的小盒子非常友好。代价是没有Add-ons商店,很多“一键安装”的插件得自己手动跑。但相信我,对于一个长期稳定运行的家居中枢来说,少就是多。

1. 项目背景与方案选型

1.1 N1盒子凭什么还能当智能家居核心

先说说N1盒子本身的底子。它用的是晶晨Amlogic S905D这颗SoC,四核Cortex-A53,主频最高1.5GHz,带2GB DDR4内存和8GB eMMC存储,接口方面有一个千兆网口、两个USB 2.0、一个HDMI输出,还自带2.4G/5G双频WiFi和蓝牙4.1。单论纸面性能,它和树莓派3B+差不多一个水平,但二手价格只有树莓派的三分之一甚至更低,而且千兆网口是实打实的,跑HA这种偏网络I/O的服务完全够了。

更关键的是,这颗S905D芯片在Linux社区里的适配非常成熟。Armbian官方和社区都有专门为N1编译的内核和镜像,设备树文件meson-gxl-s905d-phicomm-n1.dtb也早已合入主线,意味着你可以非常顺滑地把N1刷成一台纯Linux机器。再加上N1本身就是电视盒子,散热设计比很多裸板开发板要规范,长期开机运行不容易过热降频,这是当智能家居中枢很重要的隐性条件。

智能家居中枢这个角色,其实不需要多么炸裂的性能,真正重要的是三件事:稳定的网络连接、持续低功耗运行、以及足够的扩展端口。N1的千兆网口保证了HA与局域网内设备通信的带宽和延迟,USB口可以插Zigbee协调器或者蓝牙适配器,2GB内存跑一个HA Core加一个MQTT broker是够用的。所以从这个角度来看,N1盒子作为HA的物理载体,非常合适。

1.2 官方安装、Docker与HAOS,为什么我推荐官方安装

在N1上跑Home Assistant,主流的路线其实有三条:HAOS整机系统、Docker容器版、官方Python源码安装版。我把这三条路线的利弊先摊开来看,你再决定自己适合哪条。

HAOS是Home Assistant官方推荐的整套系统,自带Supervisor管理器和Add-ons商店,用起来最省心——什么Node-RED、ESPHome、Zigbee2MQTT都可以在界面里一键安装。但HAOS实质上是一套基于Linux的容器编排系统,Supervisor会启动一堆后台容器,对内存和存储的要求明显更高。N1的8GB eMMC装了HAOS之后,系统分区和Docker镜像一挤,剩余空间会非常紧张,真的跑起来会经常遇到磁盘满的尴尬。我个人觉得HAOS更适合树莓派4这种存储和内存都更宽裕的设备。

Docker容器版是另一个常见选择,好处是部署快、回滚方便,网上现成的docker-compose文件一抓一大把。但Docker跑HA意味着你的宿主机本身要先有一个完整的Linux系统,然后HA还跑在一层容器运行时之上,资源开销和存储占用都会翻倍。N1的2GB内存如果既要跑Armbian又要跑Docker daemon再跑HA容器,再加上MQTT、其他服务,内存很容易吃紧,频繁OOM是很折磨人的。

官方Python源码安装,也就是我在这篇博文里要写的方法,官方术语叫Home Assistant Core。它其实就是一个Python虚拟环境里运行的核心程序,不依赖Docker,不需要Supervisor,连数据库、日志、配置文件都是直接用宿主机上的。启动之后就是一个叫hass的Python进程,清净得很。实测下来,HA Core在N1上稳定运行的内存占用大概在700MB到900MB左右,远低于上面两种方案。缺点是没Add-ons商店,扩展都得自己装、自己配。但对于想要长期稳定跑核心功能的人来说,这个代价非常值。

2. 环境准备,给N1刷好Armbian

2.1 固件选择与镜像下载

要在N1上装官方HA,首先要有一个能跑Python的Linux环境。圈子里的主流选择是Armbian。这里我强烈建议你选择较新的Armbian镜像,不要再去翻五六年前的“N1神固件”。原因很简单:老版本Armbian的内核和软件源早已停止维护,Python版本停留在3.7甚至3.6,而新版Home Assistant至少需要Python 3.11以上,装一个过时的系统会给自己挖很多坑。

下载镜像的时候,可以找针对Amlogic S905系列盒子编译的Armbian社区镜像,推荐用ophub在GitHub上维护的armbian-s9xxx项目。这个项目的镜像对N1支持得非常好,内核长期更新,默认就带python3.11或者3.12,省去了自己编译Python的漫长等待。文件名里一般会标出对应的设备型号,选N1对应的版本下载即可。下载完是.img.gz格式的压缩镜像,需要解压后再写盘。

顺便提醒一句,下载固件尽量从开发者项目的官方发布页面或可信社区获取,不要随手在论坛里找来源不明的二次打包镜像,这类镜像里塞后门脚本的案例在智能家居圈子里不是没有。安全第一,这个习惯我从玩路由器刷机的时候就开始养成了。

2.2 U盘启动Armbian的完整步骤

镜像准备好之后,你需要一个至少8GB的U盘,用balenaEtcher或者Rufus把镜像写入U盘。写盘的时候Windows会提示U盘分区无法识别,这是在写入Linux分区,属于正常现象,不用管它,也别手贱去格式化。

接下来是让N1从U盘启动。如果你的N1还是原厂Android电视盒子系统,最简便的方式是通过ADB命令让机器重启进入U盘系统。先在N1的设置里打开“网络ADB调试”之类的选项,然后在一台电脑上下载ADB工具,确保电脑和N1在同一个局域网里,依次执行:

adb connect 192.168.x.x adb shell reboot update

如果ADB连接正常,盒子会重启并自动从U盘引导Armbian。有些盒子的系统版本没有开放ADB,那就要进入恢复模式或者用遥控器组合键强制从U盘启动,具体路径根据原系统版本略有不同。第一次启动可能会等几分钟,Armbian会自动扩容文件系统并初始化服务。

启动完成后,在路由器后台或者用局域网扫描工具找到N1的IP,通过SSH工具连接,默认账号是root,密码是1234。登录之后系统会强制要求你修改root密码,并且询问是否创建普通用户,这一步建议创建一个,比如homeassistant,后面专门用它跑HA服务,避免所有东西都堆在root下。

2.3 写入eMMC并做基础优化

如果每次开机都要插着U盘,不仅占着USB口,U盘质量参差不齐也可能造成系统不稳定。所以跑通U盘里的Armbian之后,我建议直接把系统写入eMMC。写入脚本根据你下载的镜像不同会有差异,最常用的是执行:

./install-aml.sh

或者在某些Armbian版本里是armbian-install。运行脚本之前先把U盘里需要保留的数据备份,因为脚本会格式化eMMC。等待写入完成,拔掉U盘,重启,就能从eMMC里的Armbian启动了。到这里,N1已经是一台真正意义上的Linux服务器了。

接下来做三个基础优化。第一,设置时区,国内用户执行timedatectl set-timezone Asia/Shanghai,这个非常关键,后面HA安装会遇到时间不对导致的HTTPS验证失败问题。第二,给系统配一个固定的局域网IP,千万别用DHCP动态分配,因为HA的IP一旦变化,你手机App、设备接入都要跟着改,特别麻烦。第三,添加swap交换分区,N1只有2GB内存,跑起HA之后内存会紧巴巴的,我建议做2GB的swap文件:

fallocate -l 2G /swapfile chmod 600 /swapfile mkswap /swapfile swapon /swapfile echo '/swapfile none swap sw 0 0' >> /etc/fstab

这里多说一句,N1用的eMMC存储寿命其实有限,频繁写入会损耗闪存。所以swap文件别顺手放到eMMC上长期高强度用,它只是内存不够时的兜底手段,真正内存不够还得靠精简服务来解决。

3. 官方Home Assistant的安装全流程

3.1 安装前必须准备好的Python环境

新版Home Assistant对Python版本的要求非常高。以2024年的版本为例,官方要求Python 3.11以上,部分新版本甚至开始建议Python 3.12。好在较新的Armbian镜像默认Python就是3.11或3.12,所以先看看系统当前Python版本:

python3 --version

如果是3.11或更高版本,那可以直接往下走。如果只有3.7、3.8这种老版本,我建议你直接换镜像源升级Python,而不是老想着用旧版HA去兼容系统,因为旧版HA的依赖库迟早会和系统库冲突。编译Python的过程比较耗时,N1四核全开也要一两个小时,但一次配置好,后面长期受益。

然后安装HA运行所需的系统依赖包:

apt update apt install -y build-essential libssl-dev libffi-dev libreadline-dev zlib1g-dev libjpeg-dev libturbojpeg0-dev python3-venv python3-dev

有些媒体类的HA集成(比如摄像头、语音)还需要FFmpeg,如果以后有需要可以顺手装:apt install -y ffmpeg。这些依赖里面libssl-dev和libffi-dev特别重要,缺了它们,HA安装过程中经常会出现cryptography包编译失败的报错。

我建议所有比较耗时的安装操作都用tmux或者screen挂起来跑,不然SSH连接一断,安装过程就终止了。这个坑我踩过不止一次,最后长记性了,凡是预计超过五分钟的命令一律先开tmux。

3.2 创建虚拟环境并安装Home Assistant

现在正式安装。先用之前创建的普通用户操作,如果你已经登录为root,先切换到homeassistant用户:

su - homeassistant

然后在用户目录下创建Python虚拟环境并激活:

python3 -m venv homeassistant source homeassistant/bin/activate

激活之后,命令行提示符前面会多出(homeassistant)字样。接着先升级pip,再安装HA主包。国内网络环境建议把pip源换成清华或阿里云镜像,不然安装过程中会卡在天数般的下载上:

pip install --upgrade pip wheel pip install -i https://pypi.tuna.tsinghua.edu.cn/simple homeassistant

安装过程会拉取大量依赖包,比如aiohttp、yarl、cryptography等等,整个时长看网络情况,可能在10到30分钟之间。如果中途报错,多半是缺少系统依赖或者网络问题,修复后重新执行安装命令即可,pip有缓存,不用全部重来。

装完之后,手动启动一次HA,确认能不能跑起来:

hass -c /home/homeassistant/ha-config

注意这个-c参数指定的是HA的配置目录,我习惯放在/home/homeassistant/ha-config,你也可以按自己习惯指定。正常第一次启动会经历一段漫长的初始化,日志会不断打印加载组件的记录,CPU占用可能冲到70%以上。不用慌,这是HA在初次建库和生成配置文件,等几分钟到十几分钟,看到日志输出开始监听8123端口,就说明起来了。

这时在浏览器输入http://N1的IP:8123,就能打开HA的Web界面,创建第一个管理员账号。整个界面和官方Demo完全一样,配置向导走一遍,一个基础的智能家居中枢就算立住了。

3.3 配置systemd服务实现开机自启

手动启动只是验证,真正的生产级运行需要注册成systemd服务,让HA在开机时自动拉起,并且崩溃后自动恢复。先停掉手动启动的hass进程,然后创建一个服务文件:

sudo nano /etc/systemd/system/homeassistant.service

写入以下内容:

[Unit] Description=Home Assistant After=network-online.target Wants=network-online.target [Service] Type=simple User=homeassistant ExecStart=/home/homeassistant/homeassistant/bin/hass -c "/home/homeassistant/ha-config" Restart=on-failure RestartSec=5s [Install] WantedBy=multi-user.target

这里有一个细节值得注意:ExecStart里的路径,前半部分是虚拟环境里hass可执行文件的实际路径,后半部分是HA配置目录。如果之前虚拟环境的路径或者配置目录名不一样,一定要改成自己机器上的实际路径。然后执行:

sudo systemctl daemon-reload sudo systemctl enable homeassistant sudo systemctl start homeassistant

systemctl status homeassistant查看服务状态,看到active (running)就说明服务跑起来了。之后开机会自动启动,HA连接状态也会变得非常稳。

4. MQTT扩展与设备接入实践

4.1 在N1上部署EMQX,构建本地MQTT中枢

智能家居的大多数传感器、开关、DIY设备,走的最主流的协议就是MQTT。而在N1上跑MQTT broker,圈子里问得最多的就是“N1盒子EMQX行不行”。我用下来可以很明确地告诉你,EMQX虽然是一个轻量级的高性能MQTT服务器,但它的资源占用比传统的mosquitto要大一些,在N1这种2GB内存的盒子上只要合理配置,是完全可以跑的。如果你需要Web可视化管理界面和消息监控面板,那EMQX比mosquitto好用不止一个级别。

在Debian系Armbian上安装EMQX很简单,官方提供了一键安装脚本:

curl -s https://assets.emqx.com/scripts/install-emqx-deb.sh | sudo bash sudo apt-get install emqx sudo systemctl enable --now emqx

想验证是否生效,可以检查监听端口:

ss -lntp | grep -E '1883|18083'

安装完成后,EMQX默认会开放几个关键端口:1883是标准的MQTT端口,设备接入用;8083和8084是WebSocket端口,Web端或某些浏览器设备会用;18083是Dashboard管理界面端口。在浏览器打开http://N1的IP:18083,默认账号是admin,密码是public,首次登录后建议马上修改默认密码。

在EMQX Dashboard里创建一个专门的MQTT用户和密码,然后在HA的“设备与服务”里搜索“MQTT”,填入N1的IP、1883端口,以及刚创建的用户名密码,保存后HA和MQTT broker就算打通了。之后ESPHome、Tasmota这些设备,只要在固件里把MQTT服务器指向N1,就能被HA自动发现和管理。我自己是把EMQX和HA都跑在N1上,整机内存占用大约在1.2GB到1.5GB之间,还留了近1GB余量,日常运行很稳。

4.2 官方安装版如何做设备接入和长期维护

因为我们是HA Core手动安装路线,没有Supervisor和Add-ons商店,所以一开始有人会担心是不是很多东西玩不了。其实恰恰相反,HA Core本身已经集成了大量的协议集成和自动化能力,只要设备支持通过MQTT、HTTP、局域网发现这些标准协议接入,HA Core都能用。真正缺少的只是一些需要后台容器支撑的Add-ons,比如ESPHome的编译服务、Node-RED的流程服务。

如果你确实需要跑这些额外服务,我的建议是不要在N1上硬塞Docker套娃,而是把这类重任务放到局域网里性能更强的机器上。N1就老老实实承担HA核心和MQTT消息中枢的职责,这样职责清晰,稳定性也高。HA官方支持的用蓝牙、Zigbee、Z-Wave这类协议时,外接一个USB协调器插到N1的USB口上,HA Core里也有对应的集成直接支持。

长期维护方面,最重要的就是备份。HA的配置、自动化、界面布局,全部保存在配置目录里。我每天早上用cron把配置目录打包传到局域网的另一台机器上:

tar -czf /mnt/nfs-backup/ha-config-$(date +%F).tar.gz /home/homeassistant/ha-config

配置目录备份好,即使系统彻底挂了,重装完HA之后把配置目录解压回去,所有设备、自动化、仪表盘就全部恢复原样。这个习惯救过我太多次了,强烈建议每个人拿到新HA的第一天就做好定时备份。

5. 常见问题与恢复实操

5.1 时间不对导致HA启动异常

这是N1上跑HA最容易踩的坑。N1这种廉价盒子没有板载的RTC电池,断电重启之后系统时间会回到2019年甚至更早。时间不对,首先毁掉的是HTTPS证书校验,HA启动过程中需要访问外网拉取组件信息或者做域名校验,SSL一报错就卡住。其次,很多MQTT消息带时间戳,设备记录的消息顺序会堆成一团糟。

解决办法很简单,系统装好后第一件事就是同步时间:

timedatectl set-timezone Asia/Shanghai apt install -y ntpdate ntpdate ntp.aliyun.com

如果设备长期不断电,NTP会自动校准,问题不大。怕的是突然断电再开机,时间立刻错乱。所以有条件的话,在路由器的DHCP设置里把NTP服务器地址也改成公共NTP服务器,从网络层面兜底。

5.2 8GB eMMC空间告急怎么办

N1的8GB eMMC装完Armbian和HA之后,可用空间大概还剩4GB左右。日常跑是够用的,但如果日志文件不断膨胀,或者你往HA里疯狂安装扩展组件和前端资源包,空间就会很快见底。我的建议是定期清理systemd日志:

journalctl --vacuum-size=100M

把日志大小限制在100MB。然后养成定期查看磁盘占用习惯:df -h。如果什么清理工作都做完了空间还是不够,那就说明这台N1真的不适合承载更多数据了,媒体文件、历史数据库这类大文件可以挂载到NAS或者U盘上,给系统留出余量。

5.3 恢复出厂设置与救砖实操

很多人搜“斐讯N1盒子恢复出厂设置”,其实有两种完全不同的诉求。一种只是想把手里的Armbian恢复成HA最初配置的状态,这种最简单——清空配置目录或者重新刷Armbian镜像即可,重启后HA会重新生成全新配置。但配置目录一旦清空,之前添加的设备、自动化就都没了,所以动手前一定先备份。

另一种诉求是彻底刷回原厂的Android电视盒子系统。做法是准备一个原厂安卓固件,在电脑上安装Amlogic的USB_Burning_Tool刷机工具,用一根双公头USB线连接电脑和N1的USB口,然后短接主板上的刷机触点让盒子进入线刷模式。不同批次的N1触点位置略有差异,操作前要根据型号找一下对应的短接点示意图。这个操作不算特别复杂,但要注意短接过程中别碰到其他元件,通电后软件能识别到设备,加载固件点击开始即可。刷完之后盒子就会恢复成最原始的系统界面。

我个人的建议是:除非要把N1弃用或者出售,否则根本没必要刷回原厂系统,Armbian加HA Core的这套组合才是这台盒子最大的价值。

5.4 安装部署阶段经典报错速查表

我把折腾过程中遇到的和周围朋友问得最多的问题整理成一张速查表,方便你遇到时直接对照。

现象原因处理方法
pip安装报externally-managed-environment新版系统Python限制外部安装包在虚拟环境内安装,不要用系统Python直接pip install
hass: command not found虚拟环境未激活执行source ~/homeassistant/bin/activate再运行
HA首次启动日志乱报,页面打不开配置目录还没初始化完成首次启动需要几分钟,看CPU和日志,耐心等待
重启后HA起不来且时间停在2019年无RTC电池,时间未同步执行ntpdate手动同步,设置时区
系统频繁OOM,进程被杀2GB内存不足添加swap,精简无用服务,别跑Docker套娃
MQTT设备连不上1883端口EMQX未启动或防火墙拦截systemctl status emqx,检查8083端口是否监听
8123端口被占用之前手动启动的hass没停掉找到并kill旧进程,再启动systemd服务

6. 一些收尾经验

这台N1盒子我在家里稳定跑了一年多,期间HA升级过好几个版本,配置目录从几十MB涨到几百MB,MQTT消息每天几千条,整体依旧稳如老狗。我最大的体会是:在N1这种老盒子上玩智能家居,思路一定要克制。别想着什么插件都往上装,什么服务都在它身上跑,它的价值在于“稳定”而不是“全能”。把HA Core和EMQX这两个核心服务管好,再配合定期的配置备份,N1就能成为一个非常可靠的家居自动化底座。

最后再分享一个小技巧:HA的在web界面升级时,如果页面提示无法在线升级,不用紧张。只要在SSH里执行pip install --upgrade homeassistant再重启服务,效果是一样的。版本升级前记得先备份配置目录,升级后如果发现哪个集成不兼容,随时能回滚。折腾得多了你就会发现,这套官方安装路线虽然少了些一键便利,但每一步都能看到底层逻辑,出了问题也知道去哪儿排查——这才是自己搭建智能家居真正有意思的地方。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询