haillortcli fw-control identify fails with error 13 (permissions on /dev/hailo0)
When installing HailoRT 5.x with the PCIe driver on Ubuntu, you may see the following error when running:
hailortcli fw-control identify
Output:
[HailoRT] [error] CHECK failed - Failed to open device file /dev/hailo0 with error 13
[HailoRT] [error] CHECK_SUCCESS failed with status=HAILO_DRIVER_OPERATION_FAILED(36)
...
In this situation:
lspci | grep -i hailoshows the Hailo device (PCIe enumeration is OK). [Linux troubleshooting]lsmod | grep hailo1x_pci(for Hailo‑10H) orlsmod | grep hailo_pci(for Hailo‑8) shows the driver is loaded. [PCIe driver 5.x]/dev/hailo0exists but is owned byroot:rootwithcrw-------permissions.
This combination typically means the driver is working, but user‑space access is blocked by permissions on the device node (error 13 = permission denied), which HailoRT reports as HAILO_DRIVER_OPERATION_FAILED. [Dev guidelines]
How to detect this issue
- Check that the device is enumerated:
lspci | grep -i hailo
- Check that the PCIe driver is loaded:
# Hailo‑10H
lsmod | grep hailo1x_pci
# Hailo‑8
lsmod | grep hailo_pci
- Check the device node and permissions:
ls -l /dev/hailo*
If you see:
crw------- 1 root root ... /dev/hailo0
and hailortcli fw-control identify fails, but:
sudo hailortcli fw-control identify
works, you are hitting this permissions/udev rules issue.
Root cause
The PCIe driver creates /dev/hailo* device nodes. Proper access for non‑root users is normally handled by a udev rules file (51-hailo-udev.rules) that sets the desired ownership and permissions when the device appears. For manual driver setups, the documentation explicitly instructs copying this file into /etc/udev/rules.d/ and reloading udev. [PCIe driver manual setup]
If that rule is missing or not applied, the node remains root:root with no group/other access, causing error 13 when HailoRT tries to open /dev/hailo0 as a regular user.
How to fix it
If you installed only from the .deb packages and find that no Hailo udev rule is present, you can install it manually using the official driver sources:
- Clone the PCIe driver sources (for the rules file):
git clone https://github.com/hailo-ai/hailort-drivers.git
cd hailort-drivers/linux/pcie
- Install the udev rules:
sudo cp 51-hailo-udev.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && sudo udevadm trigger
- Reload the driver or reboot:
# Option A: reboot
sudo reboot
# Option B: reload module (Hailo‑10H example)
sudo modprobe -r hailo1x_pci
sudo modprobe hailo1x_pci
- Verify permissions and test:
ls -l /dev/hailo*
hailortcli fw-control identify
You should now see more permissive ownership (e.g., group access) on /dev/hailo0, and hailortcli should work without sudo.
When to escalate
If you installed using deb or standard installation flow this should be handled by the installation flow. If not please let us know by responding to this topic.
In addition, if:
- PCIe enumeration and driver loading are OK,
- udev rules are installed and reloaded,
- but
/dev/hailo0is stillcrw------- root rootorfw-control identifystill fails,
In that case, please open a thread on the Hailo Community and include:
lspci | grep -i hailolsmod | grep hailols -l /dev/hailo*- The contents of
/etc/udev/rules.d/51-hailo-udev.rules
so support can help further based on your exact environment.