Haillortcli fw-control identify` fails with error 13 (permissions on `/dev/hailo0`)

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 hailo shows the Hailo device (PCIe enumeration is OK). [Linux troubleshooting]
  • lsmod | grep hailo1x_pci (for Hailo‑10H) or lsmod | grep hailo_pci (for Hailo‑8) shows the driver is loaded. [PCIe driver 5.x]
  • /dev/hailo0 exists but is owned by root:root with crw------- 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

  1. Check that the device is enumerated:
lspci | grep -i hailo
  1. Check that the PCIe driver is loaded:
# Hailo‑10H
lsmod | grep hailo1x_pci

# Hailo‑8
lsmod | grep hailo_pci
  1. 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:

  1. Clone the PCIe driver sources (for the rules file):
git clone https://github.com/hailo-ai/hailort-drivers.git
cd hailort-drivers/linux/pcie
  1. Install the udev rules:
sudo cp 51-hailo-udev.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && sudo udevadm trigger
  1. 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
  1. 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/hailo0 is still crw------- root root or fw-control identify still fails,

In that case, please open a thread on the Hailo Community and include:

  • lspci | grep -i hailo
  • lsmod | grep hailo
  • ls -l /dev/hailo*
  • The contents of /etc/udev/rules.d/51-hailo-udev.rules

so support can help further based on your exact environment.

2 Likes