diff --git a/docs/flash.md b/docs/flash.md index 2affdc5..ba8905e 100644 --- a/docs/flash.md +++ b/docs/flash.md @@ -6,15 +6,14 @@ ### 准备条件 - 小爱音箱 - - 小爱音箱 Pro(LX06) - Xiaomi 智能音箱 Pro(OH2P) -- Windows 电脑 - - 用于连接小爱音箱刷机 - - 需要用 **x86_64** 架构的,不支持 Windows **ARM** + - 小爱音箱 Pro(LX06) - 数据线 - Type-C(适用于新款小爱音箱 Pro,**无需拆机**) - Micro USB(旧款小爱音箱 Pro 用这种,**需要拆机**) - - 注意:不能只是充电线,需要能连接到电脑上传输数据 + +> [!NOTE] +> 注意:数据线不能只是充电线,需要连接到电脑上能传输数据才行。 ### 连接电脑 @@ -27,7 +26,7 @@ ### 开始刷机 > [!CAUTION] -> 刷机有风险,操作需谨慎。刷机有可能会造成设备失去保修资格,变砖无法运行等,一切后果自负!🚨 +> 刷机有风险,操作需谨慎。刷机可能会造成设备失去保修资格,变砖无法运行等。请自行评估相关风险,一切后果自负!🚨 首先,下载或自行制作[补丁固件](../packages/client-patch/README.md),重命名为 `root_patched.squashfs`。 @@ -35,6 +34,9 @@ 把下载好的刷机工具文件夹解压到桌面,重命名为 `Amlogic_Flash_Tool_v6.0.0` +> [!TIP] +> 如果你是 macOS 系统,请到此处下载[刷机工具和使用教程](../packages/flash-tool/README.md)。 + ![](./images/driver.jpg) 然后运行 `AMLLogic driver installer.exe` 文件,按照提示安装 USB 驱动。 diff --git a/packages/flash-tool/README.md b/packages/flash-tool/README.md new file mode 100644 index 0000000..2dc029e --- /dev/null +++ b/packages/flash-tool/README.md @@ -0,0 +1,49 @@ +# Open-XiaoAI Flash Tool + +小爱音箱刷机工具(macOS 专用版) + +> [!NOTE] +> 本工具基于 [@khadas/utils](https://github.com/khadas/utils/tree/master/aml-flash-tool),macOS 二进制文件来自 [@numbqq](https://github.com/numbqq),特此鸣谢! + +> [!CAUTION] +> 刷机有风险,操作需谨慎。刷机可能会造成设备失去保修资格,变砖无法运行等。请自行评估相关风险,一切后果自负!🚨 + + +## 安装依赖 + +请先在 macOS 上使用 [Homebrew](https://brew.sh/zh-cn/) 安装 `libusb-0.1.4.dylib` 依赖。 + +```shell +brew install libusb-compat +``` + +## 使用方法 + +```shell +# 授予可运行权限 +chmod +x ./flash + +# 查看使用说明 +./flash help + +# 小爱音箱刷机工具 v1.0.0 by https://del.wang +# +# 使用方法: +# ./flash connect # 连接设备 +# ./flash delay <秒数> # 设置启动延时,如 5 秒 +# ./flash switch # 设置启动分区,如 boot0 +# ./flash system <分区> <固件路径> # 把固件刷到指定分区,如 system0 + +# 第 1 步:连接设备 +./flash connect + +# 第 2 步:设置启动延时(5 秒) +./flash delay 5 + +# 第 3 步:切换启动分区 +./flash switch boot0 + +# 第 4 步:刷写固件(注意替换固件文件的实际路径) +./flash system system0 root-patched.squashfs + +``` diff --git a/packages/flash-tool/flash b/packages/flash-tool/flash new file mode 100755 index 0000000..a6784f0 --- /dev/null +++ b/packages/flash-tool/flash @@ -0,0 +1,149 @@ +#!/bin/bash + + +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[0;33m' +CYAN='\033[0;36m' +RESET='\033[m' + +UPDATE_BIN="macos/update" + +# 检查运行环境 +if [ "$(uname -o)" != "Darwin" ]; then + echo "❌ 该脚本只支持 macOS 运行" + exit 1 +fi + +# 检查 update 工具是否存在 +if [ ! -f "$UPDATE_BIN" ]; then + echo "❌ 找不到刷机工具: $UPDATE_BIN" + exit 1 +fi + +# 运行 update 命令 +run_update() { + local cmd="$UPDATE_BIN 2>/dev/null" + local need_spaces=0 + + if [[ "$1" == "bulkcmd" ]]; then + need_spaces=1 + fi + + cmd+=" $1" + shift 1 + + for arg in "$@"; do + if [[ $need_spaces == 1 ]]; then + cmd+=" \" $arg\"" + else + cmd+=" $arg" + fi + done + + echo -e "${CYAN}执行: $cmd${RESET}" + local result=$(eval "$cmd") + echo -e "${YELLOW}$result${RESET}" + + if echo "$result" | grep -q "ERR"; then + echo -e "${RED}命令执行失败${RESET}" + return 1 + fi + + return 0 +} + +# 显示帮助信息 +show_help() { + echo "" + echo "小爱音箱刷机工具 v1.0.0 by https://del.wang" + echo "" + echo "使用方法:" + echo " ./flash connect # 连接设备" + echo " ./flash delay <秒数> # 设置启动延时,如 5 秒" + echo " ./flash switch # 设置启动分区,如 boot0" + echo " ./flash system <分区> <固件路径> # 把固件刷到指定分区,如 system0" +} + +# 连接设备 +cmd_connect() { + echo "🔌 请先拔掉设备电源,然后重新插上电源" + echo "💡 如果长时间未连接,请拔插电源后重试..." + while true; do + run_update identify 7 + if [ $? -eq 0 ]; then + echo -e "${GREEN}✅ 设备已连接${RESET}" + return 0 + fi + echo "⏳ 等待设备连接..." + sleep 1 + done +} + +# 设置启动分区 +cmd_switch() { + if [ -z "$1" ]; then + echo "❌ 请指定启动分区名称,如: ./flash switch boot0" + return 1 + fi + + echo "📋 设置启动分区为: $1" + run_update bulkcmd "setenv boot_part $1" + run_update bulkcmd "saveenv" + echo -e "${GREEN}✅ 设置成功${RESET}" +} + +# 设置启动延时 +cmd_delay() { + if [ -z "$1" ]; then + echo "❌ 请指定启动延时(秒),如: ./flash delay 15" + return 1 + fi + + echo "⏱️ 设置启动延时为: $1 秒" + run_update bulkcmd "setenv bootdelay $1" + run_update bulkcmd "saveenv" + echo -e "${GREEN}✅ 设置成功${RESET}" +} + +# 刷入分区 +cmd_system() { + if [ -z "$1" ] || [ -z "$2" ]; then + echo "❌ 请指定分区名称和文件,如: ./flash system system0 root.squashfs" + return 1 + fi + + if [ ! -f "$2" ]; then + echo "❌ 文件不存在: $2" + return 1 + fi + + echo "💾 正在刷入 $2 到 $1 分区..." + run_update partition "$1" "$2" + + if [ $? -eq 0 ]; then + echo -e "${GREEN}✅ 刷入成功${RESET}" + else + echo -e "${RED}❌ 刷入失败${RESET}" + return 1 + fi +} + +# 主命令处理 +case "$1" in + connect) + cmd_connect + ;; + switch) + cmd_switch "$2" + ;; + delay) + cmd_delay "$2" + ;; + system) + cmd_system "$2" "$3" + ;; + *) + show_help + ;; +esac diff --git a/packages/flash-tool/macos/aml_image_v2_packer b/packages/flash-tool/macos/aml_image_v2_packer new file mode 100755 index 0000000..1bcb02e Binary files /dev/null and b/packages/flash-tool/macos/aml_image_v2_packer differ diff --git a/packages/flash-tool/macos/update b/packages/flash-tool/macos/update new file mode 100755 index 0000000..3ac5850 Binary files /dev/null and b/packages/flash-tool/macos/update differ