1. 为什么偏偏是魔百盒M401A1.1 从吃灰盒子到家庭服务器家里有运营商宽带的朋友大概率都见过这种场景装宽带时送了一个电视盒子用了一两年之后运营商又打电话说可以免费升级于是旧盒子就被拔下来扔进抽屉再也没拿出来过。魔百盒M401A就是这类设备里非常典型的一款——晶晨S905L3A/S905L3A-B主控2GB内存8GB或16GB eMMC存储带千兆网口部分批次是百兆这个后面会专门讲怎么分辨支持双频WiFi和蓝牙。这个配置放在电视盒子领域属于入门偏上但放在“常年通电、低功耗、跑轻量服务”的场景里它其实相当能打。我手头这台M401A是2021年前后办的宽带套餐里配的型号印在底部标签上S905L3A-B2G8G版本。闲置了两年多直到我开始认真折腾智能家居才发现这东西的价值功耗低实测待机2W出头满载不超过5W、被动散热无风扇放卧室也不吵、原生带网口比WiFi稳定太多、价格几乎为零二手市场也就三四十块。用它来跑Home Assistant比买树莓派4B现在价格依然不便宜或者N100小主机动辄六七百划算得多。1.2 为什么选Armbian而不是安卓M401A出厂是安卓系统理论上也能装安卓版的Home Assistant但我不推荐。原因有三点第一安卓系统后台进程多内存占用高2GB内存跑完系统本身就没剩多少了第二安卓的电源管理策略是为“遥控器开关机”设计的长时间运行容易因为内存回收把HA进程杀掉第三Armbian是完整的Debian/Ubuntu环境Docker、Python、各种命令行工具都能直接用Home Assistant Supervised的官方安装脚本就是为Debian系设计的在Armbian上跑最顺。Armbian对S905L3A系列的支持已经比较成熟了社区里有专门针对M401A的dtb文件网口、WiFi、蓝牙、USB都能正常驱动。刷上Armbian之后这台盒子就变成了一台完整的Linux小主机你想跑什么就跑什么。1.3 Home Assistant Supervised到底值不值得装Home Assistant有四种安装方式OS、Supervised、Container、Core。很多人一上来就推荐HAOS说“官方支持、一键刷机、最省心”。这话没错但HAOS对硬件有硬性要求——至少2GB内存和32GB存储而且它把整个系统都接管了你没法在同一个系统里跑其他服务。M401A的8GB eMMC装HAOS会很紧张系统更新几次就满了。Supervised模式的好处在于它跑在你自己装的Debian/Armbian系统上HA核心、Supervisor、各种Add-on都能用同时你还能在同一个系统里跑其他Docker容器比如Mosquitto、Node-RED、zigbee2mqtt。代价是安装过程比HAOS麻烦一些需要手动装Docker、装os-agent、跑官方脚本而且系统更新时要注意别把Supervised的环境搞坏。但我觉得这个代价是值得的尤其是当你只有一台设备、想让它物尽其用的时候。注意Home Assistant官方对Supervised的支持态度是“支持但不推荐给新手”因为Supervised依赖宿主系统的Docker和NetworkManager配置系统层面出问题会直接影响HA。如果你完全不想碰命令行HAOS是更稳妥的选择如果你愿意花一个下午折腾Supervised能给你更大的自由度。2. 刷机前的准备工作2.1 确认你的M401A具体型号和硬件版本这一步非常关键因为M401A有好几个批次主控和网口配置不一样。我见过的情况包括S905L3A无-B后缀、S905L3A-B、S905L3B网口有千兆的也有百兆的WiFi芯片有RTL8822CS也有其他型号。刷错固件轻则网口不工作重则变砖。确认方法很简单把盒子拆开看主板上的丝印。主控芯片上会印着“S905L3A”或“S905L3A-B”网口变压器旁边如果有“G”字样通常是千兆没有就是百兆。WiFi芯片在主板背面或者正面角落常见的是RTL8822CS支持双频蓝牙。记下这些信息后面选dtb和固件的时候要用。另外M401A的eMMC容量有8G和16G两个版本8G版本装完Armbian和Docker之后剩余空间会比较紧张建议外接一个U盘或者移动硬盘来存Docker数据和HA的配置备份。2.2 需要的工具和软件清单我把整个流程需要的东西列一下你可以提前准备好USB转TTL串口线CH340G或CP2102芯片的都可以十几块钱用于查看启动日志和进入U-Boot刷机过程中如果出问题串口是唯一的救命稻草。双公头USB线用于线刷救砖平时不一定用得上但建议备一根。8GB以上U盘用于制作Armbian启动盘建议用USB 2.0的3.0的U盘在部分盒子上识别有问题。网线连接盒子和路由器刷机后通过SSH访问。电脑Windows或Linux都行Windows下用balenaEtcher写盘Linux下用dd命令。晶晨刷机工具Amlogic USB Burning Tool只在需要线刷救砖时使用版本建议用2.2.0或2.1.6。Armbian镜像推荐使用社区维护的armbianfors905l3a分支具体下载地址在Armbian论坛的“Amlogic”板块里找搜“M401A”或“S905L3A”就能找到对应的镜像和dtb。dtb文件M401A对应的dtb通常是meson-g12a-s905l3a-m401a.dtb或类似命名具体以你下载的镜像包里附带的为准。2.3 制作Armbian启动U盘下载好Armbian镜像通常是.img.xz格式之后用balenaEtcher写入U盘。写完之后U盘会被分成两个分区一个是FAT32的boot分区一个是ext4的rootfs分区。在Windows下你只能看到boot分区这是正常的。接下来要做两件事第一把下载好的dtb文件复制到boot分区的dtb目录下覆盖或新增第二编辑boot分区根目录下的uEnv.txt或armbianEnv.txt不同版本文件名不一样把fdtfile指向你刚才放进去的dtb文件。比如fdtfileamlogic/meson-g12a-s905l3a-m401a.dtb有些镜像版本会自动识别但M401A不一定在自动识别列表里手动指定最保险。实操心得如果你不确定dtb文件名可以在boot分区的dtb/amlogic目录下找找有没有包含“m401”或“s905l3a”的文件。如果没有可以去Armbian论坛的对应帖子下载或者从其他S905L3A设备的镜像里提取。3. 从安卓到Armbian的完整刷机流程3.1 进入U-Boot并设置从U盘启动M401A默认从eMMC启动安卓要让它从U盘启动Armbian需要进入U-Boot命令行。方法有两种一种是按住复位键AV孔里面那个按钮再通电另一种是通过TTL串口在启动时按回车打断自动启动。我推荐用TTL串口因为你能看到完整的启动日志出问题的时候知道卡在哪一步。接线方式盒子主板上有三个焊盘分别是GND、TX、RX用杜邦线连接到USB转TTL模块的对应引脚GND接GNDTX接RXRX接TX。然后在电脑上打开串口终端Windows下用PuTTY或MobaXtermLinux下用minicom或screen波特率115200。通电后串口会输出大量启动日志在出现“Hit any key to stop autoboot”的时候快速按回车就能进入U-Boot命令行。然后输入setenv bootfromusb 1 usb start fatload usb 0:1 0x01000000 uImage bootm 0x01000000如果一切正常系统会从U盘启动Armbian。第一次启动会比较慢因为要初始化各种服务耐心等两三分钟。3.2 首次启动后的初始化配置Armbian首次启动会要求你设置root密码、创建普通用户、选择时区和语言。这些按提示操作就行。有一点要注意不要跳过创建普通用户这一步Home Assistant Supervised的安装脚本要求有一个非root用户并且该用户要有sudo权限。启动完成后用ip addr查看网口是否获取到了IP地址。如果网口没起来大概率是dtb不对需要换一个dtb再试。如果WiFi能用但网口不行也可以先用WiFi顶着但长期运行还是建议用网口。确认网络正常后先更新系统sudo apt update sudo apt upgrade -y然后安装一些基础工具sudo apt install -y curl wget git vim htop net-tools3.3 把系统写入eMMCU盘启动只是临时的每次重启都要插着U盘太麻烦。Armbian提供了一个armbian-install脚本可以把当前系统写入eMMC。运行sudo armbian-install脚本会问你几个问题选择要安装的设备选eMMC、是否格式化、是否保留U盘启动等。按提示操作写入过程大概需要五到十分钟。写完之后关机拔掉U盘再通电系统就会从eMMC启动了。注意写入eMMC之前建议先用dd命令备份一下原安卓系统的boot分区万一以后想刷回安卓还能用。备份命令sudo dd if/dev/mmcblk0boot0 of~/boot0_backup.img bs1M。不过说实话刷了Armbian之后基本不会想回去了。4. Home Assistant Supervised安装实操4.1 安装Docker和必要依赖Supervised模式依赖Docker和NetworkManager。Armbian默认可能没装NetworkManager需要手动装sudo apt install -y network-manager sudo systemctl enable NetworkManager sudo systemctl start NetworkManager然后安装Docker。官方推荐用Docker的官方脚本安装但国内网络环境可能不太顺畅可以用阿里云的镜像源curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun装完之后把当前用户加入docker组这样不用sudo也能跑docker命令sudo usermod -aG docker $USER然后退出重新登录或者执行newgrp docker让组权限生效。4.2 安装os-agentos-agent是Home Assistant Supervisor用来和宿主系统通信的组件必须安装。去Home Assistant的GitHub releases页面下载对应架构的os-agent包。M401A是aarch64架构下载os-agent_linux_aarch64.debwget https://github.com/home-assistant/os-agent/releases/download/1.6.0/os-agent_1.6.0_linux_aarch64.deb sudo dpkg -i os-agent_1.6.0_linux_aarch64.deb安装完成后验证一下gdbus introspect --system --dest io.hass.os --object-path /io/hass/os如果能看到一堆接口信息说明os-agent正常工作。4.3 运行官方安装脚本Home Assistant提供了一个安装脚本会自动检测系统环境、安装Supervisor、拉取HA核心镜像。脚本地址在GitHub上直接运行wget https://github.com/home-assistant/supervised-installer/releases/latest/download/homeassistant-supervised.deb sudo dpkg -i homeassistant-supervised.deb安装过程中会问你设备类型选qemuarm-64因为M401A是aarch64架构。脚本会自动拉取Docker镜像这个过程取决于网络速度可能需要十几分钟到半小时。安装完成后Supervisor会自动启动。你可以用以下命令查看状态sudo systemctl status hassio-supervisor如果显示active (running)就说明安装成功了。然后在浏览器里访问http://盒子的IP:8123就能看到Home Assistant的初始化界面。4.4 首次配置和基础设置第一次访问HA会要求你创建管理员账号、设置家庭名称和位置。这些按提示操作就行。进入HA之后建议先做几件事第一在“设置 系统 存储”里检查一下可用空间。8G eMMC装完Supervised之后可能只剩2-3G如果空间紧张建议把Docker的数据目录迁移到外接U盘或移动硬盘。第二在“设置 加载项”里安装常用的Add-on比如Mosquitto brokerMQTT、File editor文件编辑、Terminal SSH终端。这些Add-on在Supervised模式下都能正常使用。第三配置自动备份。HA的备份功能可以把配置、Add-on数据、数据库打包成一个tar文件建议定期备份到外接存储或网络位置。实操心得Supervised模式下HA的配置目录在/usr/share/hassio/homeassistantDocker的数据在/usr/share/hassio下。如果你想迁移Docker数据目录可以修改/etc/docker/daemon.json把>sudo homeassistant-supervised-installer --check根据输出提示补齐缺失的依赖。另外Armbian的某些版本可能被脚本识别为“不支持的系统”这时候可以修改脚本里的检测逻辑或者手动设置/etc/os-release里的VERSION_CODENAME为bookworm或bullseye。5.3 内存不足导致HA频繁重启2GB内存跑Supervised确实有点紧张尤其是你装了几个Add-on之后。我实测下来HA核心SupervisorMosquittozigbee2mqtt内存占用大概在1.2-1.5G之间如果再加Node-RED或者ESPHome就容易触发OOM内存不足导致进程被杀。解决办法有几个第一关掉不用的Add-on第二在HA的配置里限制数据库记录条数recorder组件的purge_keep_days设为7天以内第三加一个swap分区。Armbian默认可能没有swap可以手动创建一个sudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile echo /swapfile none swap sw 0 0 | sudo tee -a /etc/fstabswap放在eMMC上会增加写入量但总比OOM强。如果你外接了U盘或移动硬盘把swap放在外接存储上更好。5.4 系统更新后Supervised失效Armbian的系统更新apt upgrade有时会升级内核或Docker导致Supervised的某些组件不兼容。我踩过的坑是某次内核升级后os-agent的gdbus接口变了Supervisor启动时报“Unable to connect to os-agent”。解决办法是重新安装os-agent或者回滚内核版本。为了避免这个问题建议在/etc/apt/apt.conf.d/下创建一个配置文件把关键包hold住Package: docker-ce linux-image-* linux-dtb-* Pin: version * Pin-Priority: -1这样apt upgrade就不会动这些包了。需要升级的时候再手动解除hold。5.5 常见问题速查表问题现象可能原因解决方法网口不亮/无法获取IPdtb不对或MAC未设置换dtbU-Boot里手动设MAC系统启动卡在U-BootU盘识别失败换USB 2.0 U盘重新写盘Supervised安装报错依赖缺失或系统不识别装NetworkManager、os-agent改os-releaseHA频繁重启内存不足关Add-on、限制recorder、加swap系统更新后HA挂了内核/Docker版本冲突重装os-agenthold关键包eMMC空间不足8G版本容量小迁移Docker数据到外接存储WiFi不能用驱动缺失换dtb或外接USB WiFi网卡蓝牙不能用固件缺失安装bluez-firmware和对应固件6. 长期运行的经验和优化建议6.1 散热和供电M401A的被动散热在冬天没问题夏天室温超过30度的时候主控温度会到60度以上。虽然S905L3A的耐温上限是85度但长期高温会加速eMMC老化。我的做法是在盒子底部贴几个橡胶脚垫把它垫高一点增加空气流通。如果温度还是高可以加一个小USB风扇对着吹或者换一个金属外壳。供电方面M401A原装电源是5V/2A带一个盒子绰绰有余。但如果你外接了移动硬盘建议换5V/3A的电源否则硬盘启动时可能因为电流不足而掉盘。6.2 数据备份策略HA的配置和数据库都在eMMC上eMMC的寿命有限而且一旦损坏数据很难恢复。我的备份策略是每周自动备份到外接U盘每月手动备份一份到NAS。HA自带的备份功能可以设置自动备份在“设置 系统 备份”里配置。另外Docker的卷数据比如zigbee2mqtt的数据库、Mosquitto的持久化消息也要备份。这些数据在/usr/share/hassio下可以用rsync定期同步到外接存储。6.3 远程访问方案HA默认只能在局域网访问如果你想在外面也能控制家里的设备有几种方案。最简单的是用HA CloudNabu Casa每月几美元配置最简单。如果不想花钱可以用DuckDNSLets Encrypt做HTTPS反向代理或者用ZeroTier/Tailscale组建虚拟局域网。这几种方案各有优劣DuckDNS需要公网IPZeroTier/Tailscale不需要但需要额外装客户端。注意无论用哪种远程访问方案都建议开启HA的双因素认证2FA并且不要把HA的8123端口直接暴露在公网上。我见过太多因为端口暴露被扫到、然后被暴力破解的案例。6.4 后续扩展方向M401A跑HA只是起点这台小盒子还能做很多事。比如装AdGuard Home做全网广告过滤装Nginx做反向代理装Node-RED做复杂的自动化流程装ESPHome编译固件甚至装一个轻量级的NAS比如OpenMediaVault做文件共享。只要内存和存储够用它就是一个全能的小型家庭服务器。我目前的配置是HA Supervised Mosquitto zigbee2mqtt Node-RED AdGuard Home内存占用稳定在1.6G左右加了2G swap之后没有出现过OOM。eMMC只用来跑系统Docker数据和HA配置都放在外接的64G U盘上读写速度虽然不如eMMC但胜在容量大、可更换。最后分享一个小技巧如果你觉得M401A的8G eMMC实在不够用可以把整个系统迁移到外接SSD上。方法是用armbian-install把系统写到SSD然后在U-Boot里设置从USB启动。SSD的读写速度和寿命都比eMMC好得多而且容量随便选。我试过用一块128G的SATA SSD加USB转接盒系统跑起来比eMMC还流畅。
企业数字化 ERP 产品动态
相关推荐
【python】主题:Python 虚拟环境与包管理工具的使用顺序 主题:Python 虚拟环境与包管理工具的使用顺序
记录给对venv,pip,uv总是混不清楚的自己
问题一:venv 虚拟环境应该在什么阶段创建?
提问:创建 venv 虚拟环境一般是在 pip 前还是 pip 后?安装依赖… · 2026/9/24 11:46:48
AI时代芯片选型指南:主频、NPU、TOPs与SoC实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 11:46:48
MQTT协议与服务器搭建实战:从实验翻车到生产部署的完整指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 11:46:48
Office 2019 无法复制粘贴下拉单元格?试试更新 Office Office 2019 无法复制粘贴下拉单元格?试试更新 Office 大家好,我是杨利杰 YJlio。
在 Office 2019 Build 16.0.10417.20208 环境中,遇到 Excel 下拉单元格无法正常复制、粘贴的情况时,可以先尝试更新 Office。下面整理了三种更新… · 2026/9/24 13:38:41
PHP-Parser 0.9 升级 1.0 迁移指南:命名空间化、节点类型重命名与破坏性变更解析 示例工程数据库教程后端 【免费下载链接】sql-server-samples Azure Data SQL Samples - Official Microsoft GitHub Repository containing code samples for SQL Server, Azure SQL, Azure Synapse, and Azure SQL Edge 项目地址: https://gitcode.com/gh_mirrors… · 2026/9/24 13:38:35
Sunshine 游戏串流从零到完整上手:20 分钟搭好自托管串流主机 Sunshine 游戏串流从零到完整上手:20 分钟搭好自托管串流主机 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
Sunshine 是一款免费开源的自托管游戏串流服务器… · 2026/9/24 13:38:35
Hive 中的 Colony 改进机制:Reflexion、记忆、技能与 Playbook 系统化 人工智能AI Agent多智能体MCP 服务工具调用浏览器控制 【免费下载链接】hive Multi-Agent Harness for Production AI 项目地址: https://gitcode.com/gh_mirrors/hive48/hive 点击查看 免费下载 导读:Hive 的 Colony(蜂群)不是一… · 2026/9/24 13:38:16
HyperDX 反向代理子路径部署指南:Nginx 与 Traefik 配置深度解析 可观测性云原生运维 【免费下载链接】hyperdx Resolve production issues, fast. An open source observability platform unifying session replays, logs, metrics, traces and errors powered by ClickHouse and OpenTelemetry. 项目地址: https://gitcode.com/g… · 2026/9/24 13:38:16
PRQL Aggregate 变换详解:语义、用法与 SQL 编译原理 PRQL Aggregate 变换详解:语义、用法与 SQL 编译原理 【免费下载链接】prql PRQL is a modern language for transforming data — a simple, powerful, pipelined SQL replacement 项目地址: https://gitcode.com/gh_mirrors/pr/prql
aggregate 是 PRQL 中负… · 2026/9/24 13:38:16
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程 简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13
1D-CNN时间序列建模实战:从Conv1d原理到工业落地 简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26
柔软的L:汉语语流中被忽视的舌肌张力控制 1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44