Hailo-10H fails to initialize on clean Raspberry Pi OS install due to legacy hailo_pci driver conflict
Environment
-
Hardware: Raspberry Pi 5 + Hailo-10H (AI HAT+ 2)
-
OS: Raspberry Pi OS (clean latest image)
-
Kernel:
Linux pi 6.12.47+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.12.47-1+rpt1 aarch64
-
Installation followed exactly:
https://www.raspberrypi.com/documentation/computers/ai.html -
Installed package:
hailo-h10-all
Problem
After a clean install and reboot, the Hailo-10H device is detected but fails to initialize. hailortcli fw-control identify returns nothing.
dmesg shows:
[ 8.648896] hailo1x 0001:01:00.0: Firmware batch programming completed for stage 2
[ 8.766586] hailo1x 0001:01:00.0: vDMA transfer completed, triggering boot
[ 10.986721] hailo1x 0001:01:00.0: SOC Firmware Batch loaded successfully
[ 10.986726] hailo1x 0001:01:00.0: Firmware loaded in 4605 ms
[ 10.998831] sysfs: cannot create duplicate filename '/class/hailo_chardev'
[ 10.998879] hailo_pcie_probe+0x4c0/0x6c8 [hailo1x_pci]
[ 10.998920] kobject: kobject_add_internal failed for hailo_chardev with -EEXIST, don't try to register things with the same name in the same directory.
[ 10.998929] hailo1x 0001:01:00.0: Failed to create class for chrdev
[ 10.998931] hailo1x 0001:01:00.0: Failed inserting board -17 to list
[ 10.998946] hailo1x 0001:01:00.0: probe with driver hailo1x failed with error -17
lspci -nnk reports both kernel modules available:
pi@pi:~ $ lspci -nnk | grep -A3 Hailo
0001:01:00.0 Co-processor [0b40]: Hailo Technologies Ltd. Hailo-10H AI Processor [1e60:45c4] (rev 01)
Subsystem: Hailo Technologies Ltd. Hailo-10H AI Processor [1e60:45c4]
Kernel modules: hailo_pci, hailo1x_pci
The legacy hailo_pci module loads automatically and registers the
hailo_chardev class, causing the correct hailo1x_pci driver probe to fail.
Workaround
Blacklisting the legacy driver resolves the issue:
echo "blacklist hailo_pci" | sudo tee /etc/modprobe.d/hailo.conf
sudo reboot
After reboot:
pi@pi:~ $ lsmod | grep hailo
hailo1x_pci 147456 0
Device initializes correctly:
hailortcli fw-control identify
Executing on device: 0001:01:00.0
Identifying board
Control Protocol Version: 2
Firmware Version: 5.1.1 (release,app)
Logger Version: 0
Device Architecture: HAILO10H
Driver loads successfully:
[ 8.580034] hailo1x 0001:01:00.0: Firmware file index 2 programmed successfully
[ 8.604127] hailo1x 0001:01:00.0: Firmware file programmed successfully
[ 8.604133] hailo1x 0001:01:00.0: Firmware file index 3 programmed successfully
[ 8.604135] hailo1x 0001:01:00.0: Firmware batch programming completed for stage 2
[ 8.721891] hailo1x 0001:01:00.0: vDMA transfer completed, triggering boot
[ 11.070575] hailo1x 0001:01:00.0: SOC Firmware Batch loaded successfully
[ 11.070579] hailo1x 0001:01:00.0: Firmware loaded in 4793 ms
[ 11.082290] hailo1x 0001:01:00.0: Probing: Added board 1e60-45c4, /dev/hailo0
Expected behavior
Installing hailo-h10-all on a supported system should automatically load only the appropriate driver for Hailo-10 devices and not require manual blacklisting.
Notes
This occurs on a clean Raspberry Pi OS installation following official documentation, suggesting a driver autoload or packaging issue.