小爱音箱自定义固件刷机指南:xiaoai-patch 四步把闲置音箱改造成开源媒体终端
【免费下载链接】xiaoai-patchPatching for XiaoAi Speakers (小爱音箱), add custom binaries and open source software. Tested on LX06, LX01, LX05, L09A项目地址: https://gitcode.com/GitHub_Trending/xia/xiaoai-patch
小爱音箱自定义固件项目 xiaoai-patch 用一套脚本和补丁,把音箱里只读的专有系统替换成完全开源的 rootfs:硬件能力保留,闭源应用被换掉。刷完之后,原本只能听歌、喊"小爱同学"的音箱,能接入 MPD、AirPlay、Snapcast 这类开源播放协议,也能用 Porcupine 唤醒词加 Whisper 语音识别接进 Home Assistant,变成局域网里真正可二次开发的语音终端。整个过程只涉及三个动作——提取、打补丁、重新打包,再加一次分区写入。
这套固件到底改了什么
音箱的 rootfs 是只读压缩格式,改不动单个文件,所以 xiaoai-patch 的思路是整块重做:把原厂 rootfs 解包出来,替换其中的专有软件、塞进一批开源包,再重新打包成新的 squashfs 镜像写回去。补丁和脚本都可以调,因此既可以彻底移除小米原生软件,也可以保留原有小爱功能、只在旁边加装新程序。
最终能力来自几组开源组件的组合:
- 多媒体中心:MPD 做核心播放器,搭配 Snapcast 实现多房间同步,Shairport-Sync 接 AirPlay,Upmpdcli / Squeezelite 接 DLNA 与 LMS,一个音箱兼容多种推送协议。
- 语音助手:Porcupine 负责本地唤醒词检测,语音送进 Home Assistant 的 Whisper 做识别,再把意图送回系统播报。
- 全屋联动:作为 Home Assistant 的语音入口,控制家中设备。
支持哪些小爱音箱型号,怎么判断加密分区
已测试并兼容的型号及对应目标固件版本:
| 型号 | 说明 | 目标版本 |
|---|---|---|
| LX06 | 黑色 Pro 版,带红外 | 1.74.10 |
| L06A | 白色标准版,无红外 | 1.74.10 |
| LX01 | 小米 AI 音箱 Mini | 1.32.6 |
| L09A | 小爱音箱 Art(白) | 1.76.4 |
| L09B | Art 电池版(黑,未完全测试) | 1.69.54 |
| LX05 | Play 版,分区加密但可支持 | — |
加密分区要单独确认。LX05、L15A 这类机型在 rootfs 里附带一个 DER 证书来校验系统,未签名的 squashfs 可能被拒绝加载,官方不建议盲目刷写。判断方法是解包后跑binwalk,看输出里有没有Certificate in DER format这一行——有就说明带证书校验,风险更高。
刷机前备份与 Uboot 救砖准备
写任何分区之前,先做好这两件事,出问题时才有退路:
- 备份原始分区。通过 USB 刷机工具把 bootloader、boot0/boot1、system0/system1、data 等分区逐个 dump 到本地文件,核对文件大小。
- 确保能进 Uboot。检查环境分区里
bootdelay=3(或更大)。若为bootdelay=0,Uboot 会直接续跑正常启动,你按任意键也停不下来。多数机型用fw_setenv或fw_env修改,数据存于第一分区。确认串口能看到Hit any key to stop autoboot提示后,再动手写镜像。
有条件的话,提前在板子上焊好 TTL 串口线——这是最后的恢复通道。
小爱音箱自定义固件编译四步:extract / patch / build
编译环境要求Linux amd64(Apple Silicon、Windows 均未测试),并安装squashfs-tools、make、rsync、shasum、Docker;S12 机型另需mtd-utils。WSL 用户记得开启大小写敏感。注意:包编译过程会向系统打补丁,务必在 Docker 里跑,别直接在宿主机执行。
先编辑 packages.sh 勾选要装的包,然后构建并进入容器:
docker build -t xiaoai-patch packages docker run -it -v $PWD:/xiaoai xiaoai-patch容器内拿到从音箱 dump 出来的 rootfs 镜像(文件名如image-mtd4)后,一条命令跑完提取、打补丁、重新打包:
sudo make clean all FILE=image-mtd4 MODEL=lx06包编译耗时通常超过一小时,属正常现象。完成后用file对比新旧镜像格式,确认无误再往下刷。
用 update 工具把新固件写进双系统分区
以 LX06 为例,刷写走 micro USB 口,无需焊接(但强烈建议焊 TTL 以备救砖):
- 进刷机态:开机约 2 秒内反复运行
update identify,直到终端打印出固件版本,正常启动即被截停。 - 改 Uboot 延迟:
update bulkcmd "setenv bootdelay 15"再saveenv,为后续恢复留窗口。 - 备份:用
update mread store ...把各分区读到本地。 - 写分区:
update partition system0 root.squashfs与system1,A/B 两块都写。
建议优先刷入当前不在用的那块 rootfs,开机切过去测试。一个常见坑:较新的 LX06 用了 Foresee/ESMTFSNS8A001GNAND,老内核不识别,刷boot.img后可能死循环重启。处理办法是把自己备份的mtd2.img(boot0)刷回去,而不是用发行版里那份内核。
刷机后的日常使用:Web 面板、SSH 与语音助手接入
- 管理入口:浏览器访问音箱 IP 的 80 端口,即 Web 管理页;也可
ssh登录,补丁会把默认密码改成root。 - 连 Wi-Fi:连按播放键 5 次,用手机的 improv-wifi 配网;或在终端执行
/bin/wifi_connect $SSID $PASSWORD。 - 蓝牙配对:连按播放键 3 次,进入约 45 秒的配对模式;或执行
/bin/bluetooth_pair。 - 米家 APP:默认补丁会移除全部小米原生软件,改由 SSH / Web / Home Assistant 管理,米家 APP 不再适用。
- 语音助手:把音箱接进 Home Assistant 后,Porcupine 听到唤醒词 → 录音送 HA 的 Whisper 识别 → 文本转意图 → 播报。需要配置
/data/listener(HA 地址、Token、STT 提供方、语言、唤醒词)与/data/tts.conf。若一直报错,先核对系统时间(时间不对会导致 TLS 连接失败),可执行ntpd -q -p pool.ntp.org同步,转录日志在/tmp/stt.log。
刷坏了怎么办:TTL 串口进入 Uboot 恢复
只要步骤没走偏、没把镜像写错分区,失败启动都能通过 Uboot 安全回退:用 TTL 串口接上板子,进 Uboot 菜单,把启动分区指回那块完好的 rootfs 即可。前提是前面已确认 Uboot 可进入(bootdelay生效)。这也是刷机前焊 TTL、先备份、后动手的意义所在。
进一步学习:仓库文档与补丁入口
- 常见问题(Wi-Fi、蓝牙、改蓝牙名、语音助手排错、改 root 密码):docs/faq.md
- 语音助手完整配置与排错:docs/voice-assistant.md
- LX06 分区、红外、按键、Uboot 环境等硬件细节:research/lx06/info.md
- 按型号归类的补丁目录:patches/,编译脚本:scripts/,Home Assistant 组件:custom_components/xiaoai_assist/
需要源码时:git clone https://gitcode.com/GitHub_Trending/xia/xiaoai-patch。
本项目仅供学习研究,刷机导致保修失效、分区损坏等风险需自行评估,操作前务必备份原分区并确认能进 Uboot。
【免费下载链接】xiaoai-patchPatching for XiaoAi Speakers (小爱音箱), add custom binaries and open source software. Tested on LX06, LX01, LX05, L09A项目地址: https://gitcode.com/GitHub_Trending/xia/xiaoai-patch
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考