feat: 添加 macOS 专用小爱音箱刷机工具
This commit is contained in:
+8
-6
@@ -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)。
|
||||
|
||||

|
||||
|
||||
然后运行 `AMLLogic driver installer.exe` 文件,按照提示安装 USB 驱动。
|
||||
|
||||
@@ -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
|
||||
|
||||
```
|
||||
Executable
+149
@@ -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
|
||||
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
Reference in New Issue
Block a user