Use ASUS UGen300 USB AI Accelerator with reComputer RK3576

The ASUS UGen300 is a USB AI accelerator built around the Hailo-10H processor with 8 GB of LPDDR4 memory. This tutorial shows how to connect it to a reComputer RK3576, install the version-matched ASUS USB driver and HailoRT, update the device firmware when required, and verify that HailoRT can communicate with the accelerator.

Tested configuration

ItemTested configuration
HostreComputer RK3576 Dev Kit
Operating systemArmbian-unofficial 26.05.0-trunk, Debian 12 (bookworm)
Kernel6.1.115-vendor-seeed-rk3576
Host architectureAArch64 (arm64)
AcceleratorASUS UGen300 USB AI Accelerator, Hailo-10H, 8 GB LPDDR4
USB device ID0b05:1d6f
Negotiated USB link5000M on the tested RK3576 port
USB driverhailort-usb-driver 5.3.0
RuntimeHailoRT 5.3.0
Device firmware after update5.3.0 (release,app)

ASUS specifies a USB 3.1 Gen 2 Type-C interface with a maximum link rate of 10 Gbps. The tested RK3576 connection negotiated at 5 Gbps, as reported by lsusb -t.

Connect and inspect the accelerator

Connect the UGen300 directly to a USB 3 host port with the bundled cable or another USB 10 Gbps Type-C cable.

Check that the host can see the accelerator:

bash
lsusb -d 0b05:1d6f

Terminal showing the ASUS UGen300 detected on the reComputer RK3576

Before the Hailo image is loaded, a newly connected device can appear as UGen300 USB Loader. Check the negotiated link speed as well:

bash
lsusb -t

Terminal showing the UGen300 USB topology and negotiated link speed

The UGen300 branch reported 5000M on the tested reComputer RK3576. A 480M entry means that the connection fell back to USB 2.

Check existing accelerator software

The ASUS manual states that the HailoRT PCIe and USB drivers cannot be installed at the same time, and that Hailo-8 and Hailo-10H drivers cannot coexist. Inspect the installed packages before continuing:

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

Remove an existing Hailo PCIe or Hailo-8 driver before installing the UGen300 USB package. Do not remove an unrelated accelerator stack unless you intend to switch away from it.

Download and verify the ASUS driver package

Download the ARM64 USB driver package published on the ASUS UGen300 support page:

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

Verify the archive before extracting it. The checksum below is the SHA-256 value published by ASUS for version 5.3.0:

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

Extract the archive:

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

The archive contains the ARM64 HailoRT package and its version-matched user-space USB driver. The USB package also contains the Hailo-10H image used when the device starts.

Install the USB driver and HailoRT

Install both version-matched packages together:

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

The USB driver installs a udev rule for 0b05:1d6f. When a UGen300 in Loader mode is detected, the rule starts the Hailo USB image loader and the device re-enumerates.

Confirm the installed versions:

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

Terminal showing the installed HailoRT and UGen300 USB driver versions

Terminal showing the HailoRT CLI version

Match the device firmware to HailoRT

Scan for the USB device and query its firmware:

bash
hailortcli scan
hailortcli fw-control identify

If identify reports that the firmware is incompatible and explicitly asks for hailo_usb_loader fw-update, update the UGen300 flash with the image supplied by the installed USB driver:

bash
sudo hailo_usb_loader fw-update

The update took approximately two minutes on the tested device. Keep the RK3576 powered, leave the cable connected, and wait until the tool reports that the update completed successfully.

The UGen300 disconnects and re-enumerates during this process. If it does not return after the command finishes, unplug it, reconnect it directly to the USB host port, and wait for the udev image loader to complete.

Verify the running device

Inspect the final USB state and link speed:

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

After the successful update and image load, the tested unit appeared as UGen300 USB AI Accelerator (Hailo-10H) instead of UGen300 USB Loader.

Verify HailoRT communication:

bash
hailortcli scan
hailortcli fw-control identify

Terminal showing the UGen300 scan result, firmware version, and Hailo-10H architecture

On the tested system, the final identification reported HailoRT firmware 5.3.0 (release,app) and device architecture HAILO10H.

Run a HEF model

Download the YOLOv8n HEF compiled for Hailo-10H from the 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

Confirm that the downloaded HEF is compatible with Hailo-10H, then run it for five seconds:

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

The parser should report HEF Compatible for: HAILO15H, HAILO10H. A completed run2 command prints the measured FPS and confirms that the model executed on the accelerator. HailoRT 5.3.0 does not support the older hailortcli run command on this device type.

Troubleshooting

  • lsusb does not show 0b05:1d6f: reconnect the accelerator directly to the host, check the cable and port, then inspect recent USB events with sudo dmesg | tail -n 50.
  • The device remains UGen300 USB Loader: inspect the loader messages with journalctl -t hailo-usb --no-pager. If HailoRT reports a firmware mismatch, run the firmware update command above.
  • hailortcli scan finds the USB path but identify reports incompatible firmware: keep the driver and HailoRT at the same version, then perform the ASUS-documented firmware update.
  • 480M appears in lsusb -t: the device negotiated at USB 2 speed. Use a USB 3 port and a cable rated for the required link speed.
  • HAILO_LIBUSB_FAILURE or HAILO_COMMUNICATION_CLOSED appears during run2: the accelerator disconnected under load. Reconnect it directly to a USB 3 host port, check the USB-C cable and power delivery, then repeat hailortcli fw-control identify before retrying.
  • A previously installed Hailo PCIe or Hailo-8 stack is present: remove the conflicting Hailo driver before installing the UGen300 USB driver.

Remove the UGen300 software

Remove the USB driver and HailoRT packages with:

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

References