feat: 添加 macOS 专用小爱音箱刷机工具

This commit is contained in:
Del Wang
2025-04-14 23:39:18 +08:00
parent b7716e8654
commit 29f4f77c7a
5 changed files with 206 additions and 6 deletions
+8 -6
View File
@@ -6,15 +6,14 @@
### 准备条件
- 小爱音箱
- 小爱音箱 ProLX06
- Xiaomi 智能音箱 ProOH2P
- Windows 电脑
- 用于连接小爱音箱刷机
- 需要用 **x86_64** 架构的,不支持 Windows **ARM**
- 小爱音箱 ProLX06
- 数据线
- 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 驱动。
+49
View File
@@ -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 <boot分区> # 设置启动分区,如 boot0
# ./flash system <分区> <固件路径> # 把固件刷到指定分区,如 system0
# 第 1 步:连接设备
./flash connect
# 第 2 步:设置启动延时(5 秒)
./flash delay 5
# 第 3 步:切换启动分区
./flash switch boot0
# 第 4 步:刷写固件(注意替换固件文件的实际路径)
./flash system system0 root-patched.squashfs
```
+149
View File
@@ -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 <boot分区> # 设置启动分区,如 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
Binary file not shown.
BIN
View File
Binary file not shown.