diff --git a/README.md b/README.md index 941a46e..a154ac8 100644 --- a/README.md +++ b/README.md @@ -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] +> 本教程仅适用于 **小爱音箱 Pro(LX06)** 和 **Xiaomi 智能音箱 Pro(OH2P)** 这两款机型,**其他型号**的小爱音箱请勿直接使用!🚨 本项目由 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 分享你的项目和创意。✨ ## 免责声明 diff --git a/docs/flash.md b/docs/flash.md new file mode 100644 index 0000000..57db425 --- /dev/null +++ b/docs/flash.md @@ -0,0 +1,100 @@ +# 小爱音箱 Pro 刷机教程 + +> [!IMPORTANT] +> 本教程仅适用于 **小爱音箱 Pro(LX06)** 和 **Xiaomi 智能音箱 Pro(OH2P)** 这两款机型,**其他型号**的小爱音箱请勿直接使用!🚨 + +### 准备条件 + +- 小爱音箱 + - 小爱音箱 Pro(LX06) + - Xiaomi 智能音箱 Pro(OH2P) +- 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" +``` \ No newline at end of file diff --git a/docs/screenshots/bash.jpg b/docs/screenshots/bash.jpg new file mode 100644 index 0000000..5958564 Binary files /dev/null and b/docs/screenshots/bash.jpg differ diff --git a/docs/screenshots/driver.jpg b/docs/screenshots/driver.jpg new file mode 100644 index 0000000..3651d10 Binary files /dev/null and b/docs/screenshots/driver.jpg differ diff --git a/docs/screenshots/mico-usb.jpg b/docs/screenshots/mico-usb.jpg new file mode 100644 index 0000000..75e4b98 Binary files /dev/null and b/docs/screenshots/mico-usb.jpg differ diff --git a/assets/images/migpt.jpg b/docs/screenshots/migpt.jpg similarity index 100% rename from assets/images/migpt.jpg rename to docs/screenshots/migpt.jpg diff --git a/assets/images/xiaozhi.jpg b/docs/screenshots/xiaozhi.jpg similarity index 100% rename from assets/images/xiaozhi.jpg rename to docs/screenshots/xiaozhi.jpg diff --git a/packages/client-patch/README.md b/packages/client-patch/README.md index d0e662d..ff4e9ba 100644 --- a/packages/client-patch/README.md +++ b/packages/client-patch/README.md @@ -9,19 +9,6 @@ - 禁用系统自动更新(系统更新后需要重新刷机打补丁) - 添加开机启动脚本 `/data/init.sh`(方便执行一些初始化脚本) -## 准备条件 - -> [!IMPORTANT] -> 本教程仅适用于 **小爱音箱 Pro(LX06)** 和 **Xiaomi 智能音箱 Pro(OH2P)** 这两款机型,**其他型号**的小爱音箱请勿直接使用!🚨 - - -- 小爱音箱 Pro(LX06、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 - Docker:https://www.docker.com/get-started/ > [!NOTE] -> Windows 系统推荐使用 Git Bash 终端运行。 +> Windows 系统推荐使用 [Git Bash](https://git-scm.com/downloads) 终端运行。 > > CMD 和 PowerShell 终端需要调整下面命令中文件(夹)的实际路径。 diff --git a/packages/client-rust/README.md b/packages/client-rust/README.md index 99275a2..bc8f2a1 100644 --- a/packages/client-rust/README.md +++ b/packages/client-rust/README.md @@ -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 端侧运行。 diff --git a/packages/server-node/README.md b/packages/server-node/README.md index 9820f82..b2dc639 100644 --- a/packages/server-node/README.md +++ b/packages/server-node/README.md @@ -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)),可参考本项目代码,自行实现想要的功能。