在 reComputer RK3576 上使用 ASUS UGen300 USB AI 加速器

ASUS UGen300 是一款基于 Hailo-10H 处理器、配备 8 GB LPDDR4 内存的 USB AI 加速器。本教程介绍如何将其连接到 reComputer RK3576,安装版本匹配的 ASUS USB 驱动与 HailoRT,在需要时更新设备固件,并验证 HailoRT 能与加速器通信。

实测配置

项目实测配置
主机reComputer RK3576 Dev Kit
操作系统Armbian-unofficial 26.05.0-trunk,Debian 12(bookworm)
内核6.1.115-vendor-seeed-rk3576
主机架构AArch64(arm64
加速器ASUS UGen300 USB AI Accelerator,Hailo-10H,8 GB LPDDR4
USB 设备 ID0b05:1d6f
协商 USB 链路实测 RK3576 端口为 5000M
USB 驱动hailort-usb-driver 5.3.0
运行时HailoRT 5.3.0
更新后的设备固件5.3.0 (release,app)

ASUS 规格标注为 USB 3.1 Gen 2 Type-C 接口,最高链路速率 10 Gbps。实测 RK3576 连接协商到 5 Gbps,由 lsusb -t 报告。

连接并检查加速器

使用附带线缆或其他 USB 10 Gbps Type-C 线缆,将 UGen300 直接连到 USB 3 主机端口。

确认主机能看到加速器:

bash
lsusb -d 0b05:1d6f

终端显示 ASUS UGen300 已在 reComputer RK3576 上被检测到

在 Hailo 镜像加载之前,新连接的设备可能显示为 UGen300 USB Loader。同时检查协商的链路速度:

bash
lsusb -t

终端显示 UGen300 USB 拓扑与协商链路速度

在实测的 reComputer RK3576 上,UGen300 分支报告为 5000M。出现 480M 表示连接回退到了 USB 2。

检查已安装的加速器软件

ASUS 手册指出,HailoRT PCIe 驱动与 USB 驱动不能同时安装,Hailo-8 与 Hailo-10H 驱动也不能共存。继续之前先检查已安装的软件包:

bash
dpkg -l | grep -Ei 'hailo|ugen'

安装 UGen300 USB 软件包之前,请先移除已存在的 Hailo PCIe 或 Hailo-8 驱动。除非你确实要切换方案,否则不要移除无关的加速器软件栈。

下载并校验 ASUS 驱动包

从 ASUS UGen300 支持页面下载发布的 ARM64 USB 驱动包:

bash
mkdir -p ~/ugen300
cd ~/ugen300

curl -fL -o UGen300_USB_5.3.0_driver_Linux_arm64.zip \
  https://dlcdnets.asus.com/pub/ASUS/AI_ACCELERATION_DEVICE/Driver/UGen300_USB_5.3.0_driver_Linux_arm64.zip

解压前先校验压缩包。下面的校验和是 ASUS 为 5.3.0 版本发布的 SHA-256 值:

bash
echo '6a98b46d8f88a7911fea142a8b3f4a69715f5166cc112e1352eba93f8a2bcbc4  UGen300_USB_5.3.0_driver_Linux_arm64.zip' \
  | sha256sum --check

解压压缩包:

bash
unzip UGen300_USB_5.3.0_driver_Linux_arm64.zip
cd UGen300_USB_5.3.0_driver_Linux_arm64

压缩包内含 ARM64 HailoRT 软件包及其版本匹配的用户态 USB 驱动。USB 软件包还包含设备启动时使用的 Hailo-10H 镜像。

安装 USB 驱动与 HailoRT

将两个版本匹配的软件包一起安装:

bash
sudo apt install ./hailort_5.3.0_arm64.deb \
  ./hailort-usb-driver_5.3.0_arm64.deb

USB 驱动会为 0b05:1d6f 安装一条 udev 规则。检测到处于 Loader 模式的 UGen300 时,该规则会启动 Hailo USB 镜像加载器,设备随之重新枚举。

确认已安装的版本:

bash
dpkg-query -W hailort hailort-usb-driver
hailortcli --version

终端显示已安装的 HailoRT 与 UGen300 USB 驱动版本

终端显示 HailoRT CLI 版本

将设备固件与 HailoRT 匹配

扫描 USB 设备并查询其固件:

bash
hailortcli scan
hailortcli fw-control identify

如果 identify 报告固件不兼容并明确要求执行 hailo_usb_loader fw-update,请使用已安装 USB 驱动附带的镜像更新 UGen300 闪存:

bash
sudo hailo_usb_loader fw-update

在实测设备上,更新耗时约两分钟。保持 RK3576 供电、线缆连接,等待工具报告更新成功完成。

在此过程中,UGen300 会断开并重新枚举。如果命令结束后设备没有恢复,请拔下它,重新直连到 USB 主机端口,并等待 udev 镜像加载器完成。

验证运行中的设备

检查最终 USB 状态与链路速度:

bash
lsusb -d 0b05:1d6f
lsusb -t

更新与镜像加载成功后,实测设备显示为 UGen300 USB AI Accelerator (Hailo-10H),而不再是 UGen300 USB Loader

验证 HailoRT 通信:

bash
hailortcli scan
hailortcli fw-control identify

终端显示 UGen300 扫描结果、固件版本与 Hailo-10H 架构

在实测系统上,最终识别结果报告 HailoRT 固件为 5.3.0 (release,app),设备架构为 HAILO10H

运行 HEF 模型

从 Hailo Model Zoo 下载为 Hailo-10H 编译的 YOLOv8n HEF 模型:

bash
mkdir -p ~/ugen300/models
cd ~/ugen300/models

curl -fL -o yolov8n.hef \
  https://hailo-model-zoo.s3.amazonaws.com/ModelZoo/Compiled/v5.3.0/hailo10h/yolov8n.hef

确认下载的 HEF 与 Hailo-10H 兼容,然后运行五秒:

bash
hailortcli parse-hef yolov8n.hef
hailortcli run2 -t 5 set-net yolov8n.hef

解析器应报告 HEF Compatible for: HAILO15H, HAILO10Hrun2 命令完成时会打印实测 FPS,确认模型已在加速器上执行。HailoRT 5.3.0 在此设备类型上不支持旧的 hailortcli run 命令。

故障排查

  • lsusb 未显示 0b05:1d6f:将加速器重新直连主机,检查线缆和端口,然后用 sudo dmesg | tail -n 50 查看近期 USB 事件。
  • 设备一直是 UGen300 USB Loader:用 journalctl -t hailo-usb --no-pager 查看加载器消息。如果 HailoRT 报告固件不匹配,执行上面的固件更新命令。
  • hailortcli scan 能找到 USB 路径但 identify 报告固件不兼容:保持驱动与 HailoRT 同版本,然后执行 ASUS 文档中的固件更新。
  • lsusb -t 出现 480M:设备协商到了 USB 2 速度。使用 USB 3 端口和满足所需链路速率的线缆。
  • run2 期间出现 HAILO_LIBUSB_FAILUREHAILO_COMMUNICATION_CLOSED:加速器在高负载下断开了。将其重新直连到 USB 3 主机端口,检查 USB-C 线缆与供电,重试前先执行 hailortcli fw-control identify
  • 存在之前安装的 Hailo PCIe 或 Hailo-8 软件栈:安装 UGen300 USB 驱动前先移除冲突的 Hailo 驱动。

卸载 UGen300 软件

移除 USB 驱动与 HailoRT 软件包:

bash
sudo dpkg --purge hailort-usb-driver hailort
sudo udevadm control --reload-rules

参考资料