feat: 开放小爱音箱 Pro 刷机教程

This commit is contained in:
Del Wang
2025-04-13 18:57:41 +08:00
parent aebf94d5cd
commit a863da3067
10 changed files with 119 additions and 38 deletions
+9 -13
View File
@@ -26,33 +26,29 @@
👉 [小爱音箱接入小智 AI 演示视频](https://www.bilibili.com/video/BV1NBXWYSEvX)
[![](./assets/images/xiaozhi.jpg)](https://www.bilibili.com/video/BV1NBXWYSEvX)
[![](./docs/screenshots/xiaozhi.jpg)](https://www.bilibili.com/video/BV1NBXWYSEvX)
👉 [小爱音箱接入 MiGPT 演示视频](https://www.bilibili.com/video/BV1N1421y7qn)
[![](./assets/images/migpt.jpg)](https://www.bilibili.com/video/BV1N1421y7qn)
[![](./docs/screenshots/migpt.jpg)](https://www.bilibili.com/video/BV1N1421y7qn)
## 刷机教程
## 快速开始
> [!CAUTION]
> 刷机有风险,操作需谨慎。
整理中,敬请期待 :)
## 使用说明
> [!IMPORTANT]
> 本教程仅适用于 **小爱音箱 ProLX06** 和 **Xiaomi 智能音箱 ProOH2P** 这两款机型,**其他型号**的小爱音箱请勿直接使用!🚨
本项目由 Client 端 + Server 端两部分组成,你可以按照以下顺序运行该项目:
1. 按照刷机教程更新小爱音箱固件,开启 SSH 连接到小爱音箱(整理教程中……
2. 在你的电脑上编译好 Rust 补丁程序(Client 端,然后复制到小爱音箱上运行 👉 [教程](packages/client-rust/README.md)
1. 刷机更新小爱音箱补丁固件,开启 SSH 连接到小爱音箱 👉 [教程](docs/flash.md)
2. 在你的电脑上编译好 Client 端补丁程序,然后复制到小爱音箱上运行 👉 [教程](packages/client-rust/README.md)
3. 在你的电脑上运行 Server 端演示程序,体验小爱音箱的全新能力 ✨
- Python Server 演示 👉 [小爱音箱接入小智 AI](packages/server-python/README.md)
- Node.js Server 演示 👉 [小爱音箱接入 MiGPT-Next](packages/server-node/README.md)
以上皆为抛砖引玉,你也可以自己亲手编写想要的功能,一切由你定义!
以上皆为抛砖引玉,你也可以亲手编写自己想要的功能,一切由你定义!
> [!TIP]
> 技术的意义在于分享与共创。如果你打算或正在用本项目做些有趣的事情,
> 技术的意义在于分享与共创。如果你打算或正在使用本项目做些有趣的事情,
> 欢迎提交 PR 或 issue 分享你的项目和创意。✨
## 免责声明
+100
View File
@@ -0,0 +1,100 @@
# 小爱音箱 Pro 刷机教程
> [!IMPORTANT]
> 本教程仅适用于 **小爱音箱 ProLX06** 和 **Xiaomi 智能音箱 ProOH2P** 这两款机型,**其他型号**的小爱音箱请勿直接使用!🚨
### 准备条件
- 小爱音箱
- 小爱音箱 ProLX06
- Xiaomi 智能音箱 ProOH2P
- Windows 电脑
- 用于连接小爱音箱刷机
- 需要用 **x86_64** 架构的,不支持 Windows **ARM**
- 数据线
- Type-C(适用于新款小爱音箱 Pro,**无需拆机**)
- Micro USB(旧款小爱音箱 Pro 用这种,**需要拆机**)
- 注意:不能只是充电线,需要能连接到电脑上传输数据
> [!TIP]
> 如果你用的是 Apple Silicon 的 macOS 电脑,也可以使用 [UTM](https://github.com/utmapp/UTM) 虚拟化运行 x86_64 的 Windows。不过这种方式运行速度极为缓慢(尤其是首次安装运行),建议还是找台 Windows 的主机来刷机。
### 连接电脑
新款的 Xiaomi 智能音箱 Pro 可以直接使用 Type-C 数据线通过音响底部的 Type-C 接口连接到电脑。
旧款小爱音箱 Pro 需要先把音箱外壳拆下来([参考步骤](https://www.52audio.com/archives/38303.html)),然后在主板左上角找到 Mico USB 的调试接口,使用 Mico USB 数据线连接到电脑。
![](./screenshots/mico-usb.jpg)
### 开始刷机
> [!CAUTION]
> 刷机有风险,操作需谨慎。刷机有可能会造成设备失去保修资格,变砖无法运行等,一切后果自负!🚨
首先,下载或自行制作[补丁固件](../packages/client-patch/README.md),重命名为 `root_patched.squashfs`
然后,下载刷机工具:https://androidmtk.com/download-amlogic-flash-tool
把下载好的刷机工具文件夹解压到桌面,重命名为 `Amlogic_Flash_Tool_v6.0.0`
![](./screenshots/driver.jpg)
然后运行 `AMLLogic driver installer.exe` 文件,按照提示安装 USB 驱动。
![](./screenshots/bash.jpg)
安装好驱动后,打开 `/bin` 目录,然后在空白处右键选择使用 [Git Bash](https://git-scm.com/downloads) 打开当前目录。
> [!NOTE]
> 请确认你已经将小爱音箱用数据线连接到了 Windows 电脑,并且安装好了驱动程序。
然后,请按照说明在打开的终端里依次执行以下命令:
```shell
# 🚗 第 1 步:拔掉小爱音箱的电源线,重新插上电源后,立即在终端执行以下命令
./update.exe identify
# 如果显示类似下面的内容,说明小爱音箱已经成功连接到了电脑,可以继续进行下一步
# This firmware version is 0-7-0-16-0-0-0-0
# 否则继续快速重试几次该命令,或者重新拔掉电源上电后重试,直至显示出来版本号。
# ⏰ 第 2 步:设置启动分区和等待时长
# 设置 uboot 启动等待 15s
./update.exe bulkcmd "setenv bootdelay 15"
# 设置 boot0 作为启动分区
./update.exe bulkcmd "setenv boot_part boot0"
# 保存环境变量,使生效
./update.exe bulkcmd "saveenv"
# ⚡️ 第 3 步:刷入 system0
./update.exe partition system0 root_patched.squashfs
# 注意:需要把 root_patched.squashfs 替换成你下载的补丁固件实际路径
```
### SSH 连接到小爱音箱
刷机成功后,补丁固件默认开启 SSH 功能,默认密码 `open-xiaoai`
```shell
ssh -o HostKeyAlgorithms=+ssh-rsa root@你的小爱音箱局域网IP地址
# 比如:ssh -o HostKeyAlgorithms=+ssh-rsa root@192.168.31.227
```
### 更新系统
小爱音箱有 2 套系统,上面我们只是将 `system0` 刷成了打补丁后的系统。
如果之后你想要更新系统,或者换回原来的系统,将启动分支设置成 `boot1` 重启即可。
>
```shell
# 连接到 SSH 后执行
fw_env -s boot_part boot1
# 或者使用和上面刷机相同的方式
./update.exe bulkcmd "setenv boot_part boot1"
./update.exe bulkcmd "saveenv"
```
Binary file not shown.

After

Width:  |  Height:  |  Size: 352 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 342 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Before

Width:  |  Height:  |  Size: 627 KiB

After

Width:  |  Height:  |  Size: 627 KiB

Before

Width:  |  Height:  |  Size: 130 KiB

After

Width:  |  Height:  |  Size: 130 KiB

+1 -14
View File
@@ -9,19 +9,6 @@
- 禁用系统自动更新(系统更新后需要重新刷机打补丁)
- 添加开机启动脚本 `/data/init.sh`(方便执行一些初始化脚本)
## 准备条件
> [!IMPORTANT]
> 本教程仅适用于 **小爱音箱 ProLX06** 和 **Xiaomi 智能音箱 ProOH2P** 这两款机型,**其他型号**的小爱音箱请勿直接使用!🚨
- 小爱音箱 ProLX06、OH2P
- Windows 电脑(需为 x86_64 架构,用于刷机)
- 数据线(不能只是充电线,需要连接到电脑传输数据)
- Type-C(适用于新款小爱音箱 Pro,无需拆机)
- Micro USB(旧款小爱音箱 Pro 用这种,需要拆机)
## 下载固件
你可以直接在 [Github Releases](https://github.com/idootop/open-xiaoai/releases) 页面下载打包好的固件:
@@ -79,7 +66,7 @@ SSH_PASSWORD=open-xiaoai
- Dockerhttps://www.docker.com/get-started/
> [!NOTE]
> Windows 系统推荐使用 Git Bash 终端运行。
> Windows 系统推荐使用 [Git Bash](https://git-scm.com/downloads) 终端运行。
>
> CMD 和 PowerShell 终端需要调整下面命令中文件(夹)的实际路径。
+3 -8
View File
@@ -13,7 +13,7 @@
## 编译运行
> [!IMPORTANT]
> 本项目仅作为挖掘小爱音箱潜力的一个演示,并未提供任何预构建产物,仅适合有动手能力的人自行编译运行。你可以按需修改源代码,增删自己想要的功能。
> 本项目只是一个简单的演示程序,抛砖引玉,并未提供任何预构建产物,仅适合有动手能力的人自行编译运行。你可以按需修改源代码,增删自己想要的功能。
首先,你需要在电脑上安装 `Rust` 开发环境 👉 [传送门](https://www.rust-lang.org/)
@@ -28,7 +28,7 @@ cross build --release --target armv7-unknown-linux-gnueabihf
```
> [!NOTE]
> 以下操作需要先将小爱音箱刷机, 然后 SSH 连接到小爱音箱。
> 以下操作需要先将小爱音箱刷机, 然后 SSH 连接到小爱音箱。👉 [教程](../../docs/flash.md)
编译成功后,将构建好的补丁程序 `client` 复制到小爱音箱上
@@ -63,18 +63,13 @@ curl -# -o /data/client https://你的client文件下载链接
chmod +x /data/client
# 运行
/data/client ws://你的 server 端地址
/data/client ws://你的 server 端地址(默认使用 4399 端口)
# 比如:/data/client ws://192.168.31.227:4399
```
## 注意事项
> [!TIP]
> 旧版小爱音箱 Pro 的可用 RAM 和 ROM 均为 10MB 左右
>
> 新版 Xiaomi 智能音箱 Pro 约为 100MB(升级为旧版的 10 倍!)
当前 Client 端使用 Rust 编写,只负责转发和被动响应 Server 端的调用,不实现具体的业务逻辑。
一方面,小爱音箱的内存算力和存储空间极为有限,语音识别之类的任务并不适合放在 Client 端侧运行。
+6 -3
View File
@@ -25,8 +25,6 @@ pnpm install
pnpm dev
```
## 注意事项
首次运行你需要先配置自己的大模型服务,才能正常获取 AI 回复。
> [!NOTE]
@@ -57,7 +55,12 @@ async function main() {
main();
```
默认 Rust Server 在启动时,并没有开启小爱音箱的录音能力。如果你需要在 Node.js 端正常接收音频输入流,或者播放音频输出流,请将 `src/server.rs` 文件中被注释掉的 `start_recording``start_play` 代码加回来,然后重新编译运行。
## 注意事项
1. 默认 Server 服务端口为 `4399`(比如 ws://192.168.31.227:4399),运行前请确保该端口未被其他程序占用。
2. 默认 Rust Server 在启动时,并没有开启小爱音箱的录音能力。
如果你需要在 Node.js 端正常接收音频输入流,或者播放音频输出流,请将 `src/server.rs` 文件中被注释掉的 `start_recording``start_play` 代码加回来,然后重新编译运行。
> [!NOTE]
> 本项目只是一个简单的演示程序,抛砖引玉。如果你需要更多的功能,比如唤醒词识别、语音转文字、连续对话等(甚至是对接 OpenAI 的 [Realtime API](https://platform.openai.com/docs/guides/realtime)),可参考本项目代码,自行实现想要的功能。