Usar un acelerador Hailo-8 M.2 con reComputer RK3576

Este tutorial explica cómo instalar el controlador PCIe de Hailo-8 y HailoRT en un reComputer RK3576, comprobar que el acelerador está listo y ejecutar en él un HEF de Hailo Model Zoo. El módulo probado es el Seeed Studio Hailo-8 M.2 Key M 2280, no un Hailo-8L.

Configuración del sistema

ElementoConfiguración probada
Equipo anfitriónreComputer RK3576 Dev Kit
Sistema operativoArmbian-unofficial 26.05.0-trunk, Debian 12 (bookworm), ARM64
Núcleo6.1.115-vendor-seeed-rk3576
AceleradorMódulo Seeed Studio Hailo-8 M.2 Key M 2280
Dispositivo PCIe1e60:2864
Enlace negociadoPCIe Gen2 x1, 5.0 GT/s
Entorno de ejecución y controlador PCIeHailoRT 4.23.0, hailort-pcie-driver 4.23.0
HEF de pruebaHailo Model Zoo v2.17.0, centerpose_regnetx_800mf.hef, HAILO8, entrada de 512 × 512 × 3

Instalar el módulo y comprobar PCIe

Apaga el RK3576 y desconecta la alimentación antes de instalar o volver a insertar el módulo M.2. Coloca el Hailo-8 en la ranura M.2 Key M de la placa, fíjalo y vuelve a conectar la alimentación.

Después del arranque, comprueba la función PCIe y el enlace negociado:

bash
lspci -nnk -s 01:00.0
cat /sys/bus/pci/devices/0000:01:00.0/current_link_speed
cat /sys/bus/pci/devices/0000:01:00.0/current_link_width

La tarjeta probada apareció en 01:00.0 como Hailo-8 AI Processor [1e60:2864], con un enlace 5.0 GT/s PCIe x1. La dirección del bus puede variar en otro sistema; al consultar los archivos de enlace de sysfs, utiliza la dirección indicada por lspci.

Dispositivo PCIe Hailo-8 y enlace Gen2 x1 negociado

Descargar HailoRT 4.23.0

Hailo-8 utiliza la serie HailoRT 4.x. Descarga los paquetes ARM64 del entorno de ejecución y del controlador PCIe con la misma versión desde el directorio público de Hailo-8:

bash
mkdir -p ~/hailo8-4.23.0
cd ~/hailo8-4.23.0

curl -fL -O https://dev-public.hailo.ai/2025_10/Hailo8/hailort_4.23.0_arm64.deb
curl -fL -O https://dev-public.hailo.ai/2025_10/Hailo8/hailort-pcie-driver_4.23.0_all.deb

dpkg-deb -f hailort_4.23.0_arm64.deb Package Version Architecture
dpkg-deb -f hailort-pcie-driver_4.23.0_all.deb Package Version Architecture

Ambos paquetes deben indicar 4.23.0 y el paquete del entorno de ejecución debe indicar arm64. Hailo publica estos enlaces directos en su guía de instalación de la comunidad.

El controlador se compila para el núcleo en ejecución. Antes de instalarlo, comprueba que estén disponibles las cabeceras correspondientes y DKMS:

bash
ls -ld /lib/modules/$(uname -r)/build
command -v dkms

En la imagen Armbian probada, la ruta de cabeceras apunta a linux-headers-6.1.115-vendor-seeed-rk3576. Si falla cualquiera de las comprobaciones, instala las cabeceras del núcleo exacto en ejecución y DKMS antes de continuar.

Instalar el entorno de ejecución y el controlador PCIe

Antes de modificar los paquetes, comprueba si ya hay componentes de Hailo instalados:

bash
dpkg-query -W -f='${binary:Package}\t${Version}\n' | grep -i hailo

Si la placa utilizó anteriormente el acelerador USB ASUS UGen300, elimina su entorno HailoRT 5.x y su controlador USB antes de instalar la pila PCIe de Hailo-8:

bash
sudo apt-get purge hailort-usb-driver hailort

Instala los paquetes 4.23.0 desde el directorio de descarga:

bash
cd ~/hailo8-4.23.0
sudo apt-get install ./hailort-pcie-driver_4.23.0_all.deb \
  ./hailort_4.23.0_arm64.deb

Cuando aparezca la pregunta, activa DKMS para compilar el controlador para el núcleo en ejecución. En la instalación probada también se activó hailort.service. El paquete del controlador PCIe incluye la imagen de arranque correspondiente hailo8_fw.4.23.0.bin, que se carga en la tarjeta durante la inicialización del controlador. Este procedimiento no utiliza hailortcli fw-update.

Reinicia y confirma que el controlador está asociado y que existe el nodo de dispositivo:

bash
sudo reboot
bash
lspci -nnk -s 01:00.0
modinfo hailo_pci | grep -E '^(version|vermagic):'
ls -l /dev/hailo0
hailortcli --version

En la placa probada, lspci indicó Kernel driver in use: hailo, y tanto el módulo como la CLI de HailoRT indicaron 4.23.0.

Controlador Hailo-8 asociado, nodo de dispositivo y versiones 4.23.0 coincidentes

Identificar el acelerador

Utiliza HailoRT para explorar el bus PCIe y leer la información del módulo:

bash
hailortcli scan
hailortcli fw-control identify

El dispositivo probado se encontró en 0000:01:00.0. La identificación mostró Device Architecture: HAILO8, Firmware Version: 4.23.0 y Product Name: Seeed Studio Hailo-8 M.2 Key M 2280 Module.

Exploración de HailoRT e identificación de Hailo-8

Ejecutar un HEF de Hailo Model Zoo

Descarga el modelo CenterPose precompilado para HAILO8 desde Hailo Model Zoo v2.17.0:

bash
cd ~/hailo8-4.23.0
curl -fL -o centerpose_regnetx_800mf.hef \
  https://hailo-model-zoo.s3.eu-west-2.amazonaws.com/ModelZoo/Compiled/v2.17.0/hailo8/centerpose_regnetx_800mf.hef

hailortcli parse-hef centerpose_regnetx_800mf.hef

parse-hef debe mostrar Architecture HEF was compiled for: HAILO8 y una entrada UINT8, NHWC(512x512x3). El HEF de Model Zoo v2.17.0 utilizado en la prueba tiene el SHA-256 625cbd18736c87ba708f46011cc683261690e8d68f054adc0e3df1e1a925a369.

Ejecuta la red durante cinco segundos con los datos de entrada generados por HailoRT:

bash
hailortcli run2 -t 5 set-net centerpose_regnetx_800mf.hef

El comando debe llegar al 100 % e indicar un valor de FPS mayor que cero para centerpose_regnetx_800mf. Esto ejecuta inferencia en el acelerador, pero no convierte la salida de CenterPose en puntos clave visibles. HailoRT 4.23.0 puede mostrar una advertencia que recomienda run para un solo modelo, aunque run2 funciona en esta prueba.

Información del HEF HAILO8 e inferencia completada

Solución de problemas

  • lspci no muestra 1e60:2864: desconecta completamente la alimentación del RK3576, vuelve a insertar la tarjeta M.2 y comprueba que está en la ranura PCIe Key M.
  • El dispositivo PCIe aparece, pero falta /dev/hailo0: consulta dkms status, modinfo hailo_pci y sudo dmesg -T | grep -i hailo para detectar fallos de compilación del controlador o carga del firmware.
  • HailoRT indica que no coincide la versión del controlador: comprueba hailortcli --version y modinfo hailo_pci; ambos deben indicar 4.23.0.
  • Se rechaza el HEF: confirma que hailortcli parse-hef indica HAILO8 y utiliza un modelo Hailo-8 de Model Zoo v2.x, no un HEF para Hailo-8L o Hailo-10H.

Referencias