Usar el acelerador USB AI ASUS UGen300 con reComputer RK3576

El ASUS UGen300 es un acelerador USB AI construido en torno al procesador Hailo-10H con 8 GB de memoria LPDDR4. Este tutorial muestra cómo conectarlo a un reComputer RK3576, instalar el driver USB de ASUS y HailoRT con versiones coincidentes, actualizar el firmware del dispositivo cuando sea necesario y verificar que HailoRT puede comunicarse con el acelerador.

Configuración probada

ElementoConfiguración probada
HostreComputer RK3576 Dev Kit
Sistema operativoArmbian-unofficial 26.05.0-trunk, Debian 12 (bookworm)
Kernel6.1.115-vendor-seeed-rk3576
Arquitectura del hostAArch64 (arm64)
AceleradorASUS UGen300 USB AI Accelerator, Hailo-10H, 8 GB LPDDR4
USB ID del dispositivo0b05:1d6f
Enlace USB negociado5000M en el puerto RK3576 probado
Driver USBhailort-usb-driver 5.3.0
RuntimeHailoRT 5.3.0
Firmware del dispositivo tras la actualización5.3.0 (release,app)

ASUS especifica una interfaz USB 3.1 Gen 2 Type-C con una tasa de enlace máxima de 10 Gbps. La conexión probada en el RK3576 negoció a 5 Gbps, según informó lsusb -t.

Conectar e inspeccionar el acelerador

Conecta el UGen300 directamente a un puerto host USB 3 con el cable incluido u otro cable USB Type-C de 10 Gbps.

Comprueba que el host puede ver el acelerador:

bash
lsusb -d 0b05:1d6f

Terminal que muestra el ASUS UGen300 detectado en el reComputer RK3576

Antes de que se cargue la imagen de Hailo, un dispositivo recién conectado puede aparecer como UGen300 USB Loader. Comprueba también la velocidad de enlace negociada:

bash
lsusb -t

Terminal que muestra la topología USB del UGen300 y la velocidad de enlace negociada

La rama del UGen300 reportó 5000M en el reComputer RK3576 probado. Una entrada 480M significa que la conexión retrocedió a USB 2.

Comprobar el software del acelerador existente

El manual de ASUS indica que los drivers PCIe y USB de HailoRT no se pueden instalar al mismo tiempo, y que los drivers de Hailo-8 y Hailo-10H no pueden coexistir. Inspecciona los paquetes instalados antes de continuar:

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

Elimina un driver Hailo PCIe o Hailo-8 existente antes de instalar el paquete USB del UGen300. No elimines una pila de acelerador no relacionada salvo que pretendas cambiar a otra.

Descargar y verificar el paquete de driver de ASUS

Descarga el paquete de driver USB ARM64 publicado en la página de soporte del ASUS UGen300:

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

Verifica el archivo antes de extraerlo. El checksum siguiente es el valor SHA-256 publicado por ASUS para la versión 5.3.0:

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

Extrae el archivo:

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

El archivo contiene el paquete ARM64 de HailoRT y su driver USB de espacio de usuario con versión coincidente. El paquete USB también contiene la imagen de Hailo-10H que se usa cuando el dispositivo arranca.

Instalar el driver USB y HailoRT

Instala ambos paquetes con versiones coincidentes a la vez:

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

El driver USB instala una regla udev para 0b05:1d6f. Cuando se detecta un UGen300 en modo Loader, la regla inicia el cargador de imagen USB de Hailo y el dispositivo se reenumera.

Confirma las versiones instaladas:

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

Terminal que muestra las versiones instaladas de HailoRT y del driver USB del UGen300

Terminal que muestra la versión de la CLI de HailoRT

Ajustar el firmware del dispositivo a HailoRT

Escanea el dispositivo USB y consulta su firmware:

bash
hailortcli scan
hailortcli fw-control identify

Si identify informa que el firmware es incompatible y pide explícitamente hailo_usb_loader fw-update, actualiza la flash del UGen300 con la imagen suministrada por el driver USB instalado:

bash
sudo hailo_usb_loader fw-update

La actualización tardó aproximadamente dos minutos en el dispositivo probado. Mantén el RK3576 alimentado, deja el cable conectado y espera a que la herramienta informe de que la actualización se completó con éxito.

El UGen300 se desconecta y se reenumera durante este proceso. Si no vuelve después de que el comando termine, desconéctalo, reconéctalo directamente al puerto host USB y espera a que el cargador de imagen de udev termine.

Verificar el dispositivo en ejecución

Inspecciona el estado USB final y la velocidad de enlace:

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

Tras la actualización y carga de imagen exitosas, la unidad probada aparecía como UGen300 USB AI Accelerator (Hailo-10H) en lugar de UGen300 USB Loader.

Verifica la comunicación con HailoRT:

bash
hailortcli scan
hailortcli fw-control identify

Terminal que muestra el resultado del escaneo del UGen300, la versión del firmware y la arquitectura Hailo-10H

En el sistema probado, la identificación final informó del firmware de HailoRT 5.3.0 (release,app) y de la arquitectura del dispositivo HAILO10H.

Ejecutar un modelo HEF

Descarga el HEF de YOLOv8n compilado para Hailo-10H desde el Hailo Model Zoo:

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

Confirma que el HEF descargado es compatible con Hailo-10H y luego ejecútalo durante cinco segundos:

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

El analizador debería informar HEF Compatible for: HAILO15H, HAILO10H. Un comando run2 completado imprime los FPS medidos y confirma que el modelo se ejecutó en el acelerador. HailoRT 5.3.0 no es compatible con el antiguo comando hailortcli run en este tipo de dispositivo.

Solución de problemas

  • lsusb no muestra 0b05:1d6f: reconecta el acelerador directamente al host, comprueba el cable y el puerto, e inspecciona los eventos USB recientes con sudo dmesg | tail -n 50.
  • El dispositivo sigue como UGen300 USB Loader: inspecciona los mensajes del cargador con journalctl -t hailo-usb --no-pager. Si HailoRT informa de un desajuste de firmware, ejecuta el comando de actualización de firmware anterior.
  • hailortcli scan encuentra la ruta USB pero identify informa firmware incompatible: mantén el driver y HailoRT en la misma versión y realiza la actualización de firmware documentada por ASUS.
  • Aparece 480M en lsusb -t: el dispositivo negoció a velocidad USB 2. Usa un puerto USB 3 y un cable con la clasificación para la velocidad de enlace requerida.
  • Aparece HAILO_LIBUSB_FAILURE o HAILO_COMMUNICATION_CLOSED durante run2: el acelerador se desconectó bajo carga. Reconéctalo directamente a un puerto host USB 3, comprueba el cable USB-C y la entrega de energía, y repite hailortcli fw-control identify antes de reintentar.
  • Hay una pila Hailo PCIe o Hailo-8 instalada previamente: elimina el driver Hailo en conflicto antes de instalar el driver USB del UGen300.

Eliminar el software del UGen300

Elimina los paquetes del driver USB y de HailoRT con:

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

Referencias