HailoRT not ready! - Brand new Raspi 5 AI HAT+2

Hello All,

I have searched far and wide to find anything on why HailoRT is throwing an error.

The steps I followed are part of the official Raspi guide. Everything installs fine, I can talk with the AI using any of the 5 models they give us. OpenWebUI works great, no complaints. The camera launches just fine, pictures great actually.

However, when I run the YOLO demo’s, I get errors.

I have gone as far as disassembling the pi, reinstalling the recommended OS (on various medias also)

Please let me know what other data is required.

–Common details I see asked for on other forums, so here–
jdixon@raspberrypi:~/Desktop/scripts $ uname -a
Linux raspberrypi 6.18.39+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.18.39-1+rpt1 (2026-07-29) aarch64 GNU/Linux

–Offical Doc followed–

https://www.raspberrypi.com/documentation/computers/ai.html

–Other guides attempted–

I have tried other guides as well, but I always get the same result.

Here is a troubleshooting guide I found. Results posted below.

Verification & Troubleshooting | hailo-ai/hailo-apps-infra | DeepWiki

–Evidence of initial Install–

jdixon@raspberrypi:~ $ 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

jdixon@raspberrypi:~ $ dmesg | grep -i hailo
[ 3.786213] hailo1x_pci: loading out-of-tree module taints kernel.
[ 3.792166] hailo1x: Init module. driver version 5.1.1
[ 3.795559] hailo1x 0001:01:00.0: Probing on: 1e60:45c4…
[ 3.795573] hailo1x 0001:01:00.0: Probing: Allocate memory for device extension, 11256
[ 3.795621] hailo1x 0001:01:00.0: enabling device (0000 → 0002)
[ 3.795636] hailo1x 0001:01:00.0: Probing: Device enabled
[ 3.795659] hailo1x 0001:01:00.0: Probing: mapped bar 0 - 00000000a628f6a1 16384
[ 3.795671] hailo1x 0001:01:00.0: Probing: mapped bar 2 - 00000000e2ae4f75 4096
[ 3.795683] hailo1x 0001:01:00.0: Probing: mapped bar 4 - 00000000255a2486 16384
[ 3.795694] hailo1x 0001:01:00.0: Probing: Setting max_desc_page_size to 4096, (PAGE_SIZE=16384)
[ 3.795708] hailo1x 0001:01:00.0: Probing: Enabled 64 bit dma
[ 3.795718] hailo1x 0001:01:00.0: Disabling ASPM L0s
[ 3.795727] hailo1x 0001:01:00.0: Successfully disabled ASPM L0s
[ 3.795837] hailo1x 0001:01:00.0: Writing file hailo/hailo10h/customer_certificate.bin
[ 3.801102] hailo1x 0001:01:00.0: File hailo/hailo10h/customer_certificate.bin written successfully
[ 3.801117] hailo1x 0001:01:00.0: Writing file hailo/hailo10h/scu_fw.bin
[ 3.854419] hailo1x 0001:01:00.0: File hailo/hailo10h/scu_fw.bin written successfully
[ 3.912285] hailo1x 0001:01:00.0: Board SKU-ID is: 6
[ 3.912297] hailo1x 0001:01:00.0: Writing file hailo/hailo10h/u-boot-6.dtb.signed
[ 3.925110] hailo1x 0001:01:00.0: File hailo/hailo10h/u-boot-6.dtb.signed written successfully
[ 4.020151] hailo1x 0001:01:00.0: Reading firmware file hailo/hailo10h/u-boot-spl.bin
[ 4.021208] hailo1x 0001:01:00.0: Reading firmware file hailo/hailo10h/u-boot-tfa.itb
[ 4.021234] hailo1x 0001:01:00.0: Reading firmware file hailo/hailo10h/fitImage
[ 4.056304] hailo1x 0001:01:00.0: Reading firmware file hailo/hailo10h/image-fs
[ 4.289396] hailo1x 0001:01:00.0: Firmware file programmed successfully
[ 4.289405] hailo1x 0001:01:00.0: Firmware file index 0 programmed successfully
[ 4.292486] hailo1x 0001:01:00.0: Firmware file programmed successfully
[ 4.292492] hailo1x 0001:01:00.0: Firmware file index 2 programmed successfully
[ 4.308753] hailo1x 0001:01:00.0: Firmware file programmed successfully
[ 4.308759] hailo1x 0001:01:00.0: Firmware file index 3 programmed successfully
[ 4.308766] hailo1x 0001:01:00.0: Firmware batch programming completed for stage 2
[ 4.426525] hailo1x 0001:01:00.0: vDMA transfer completed, triggering boot
[ 6.649630] hailo1x 0001:01:00.0: SOC Firmware Batch loaded successfully
[ 6.649638] hailo1x 0001:01:00.0: Firmware loaded in 2853 ms
[ 6.660307] hailo1x 0001:01:00.0: Probing: Added board 1e60-45c4, /dev/hailo0
jdixon@raspberrypi:~ $ sudo apt update && sudo apt install rpicam-apps
[sudo] password for jdixon:
Hit:1 Index of /debian trixie InRelease
Hit:2 Index of /debian trixie-updates InRelease
Hit:3 Index of /debian-security trixie-security InRelease
Hit:4 Index of /debian trixie InRelease
All packages are up to date.
rpicam-apps is already the newest version (1.13.0-1).
rpicam-apps set to manually installed.
Summary:
Upgrading: 0, Installing: 0, Removing: 0, Not Upgrading: 0
jdixon@raspberrypi:~ $ rpicam-hello
[0:14:41.173360265] [1978] INFO Camera camera_manager.cpp:340 libcamera v0.7.2+rpt20260817
[0:14:41.186533964] [1981] INFO RPI pisp.cpp:725 libpisp version v1.7.0 07-08-2026 (09:22:13)
[0:14:41.201242872] [1981] INFO IPAProxy ipa_proxy.cpp:184 Using tuning file /usr/share/libcamera/ipa/rpi/pisp/imx708.json
[0:14:41.212593601] [1981] INFO Camera camera_manager.cpp:223 Adding camera ‘/base/axi/pcie@1000120000/rp1/i2c@88000/imx708@1a’ for pipeline handler rpi/pisp
[0:14:41.212654638] [1981] INFO RPI pisp.cpp:1186 Registered camera /base/axi/pcie@1000120000/rp1/i2c@88000/imx708@1a to CFE device /dev/media2 and ISP device /dev/media0 using PiSP variant BCM2712_D0
Made wayland-egl preview window
[0:14:41.364094386] [1981] WARN V4L2 v4l2_pixelformat.cpp:346 Unsupported V4L2 pixel format Nc30
[0:14:41.364125052] [1981] WARN V4L2 v4l2_pixelformat.cpp:346 Unsupported V4L2 pixel format Nc12
Mode selection for 2304:1296:12:P
SRGGB10_CSI2P,1536x864/0 - Score: 3400
SRGGB10_CSI2P,2304x1296/0 - Score: 1000
SRGGB10_CSI2P,4608x2592/0 - Score: 1900
Stream configuration adjusted
[0:14:41.364338164] [1978] INFO Camera camera.cpp:1216 configuring streams: (0) 2304x1296-YUV420/sYCC (1) 2304x1296-BGGR_PISP_COMP1/RAW
[0:14:41.364447924] [1981] INFO RPI pisp.cpp:1502 Sensor: /base/axi/pcie@1000120000/rp1/i2c@88000/imx708@1a - Selected sensor format: 2304x1296-SBGGR10_1X10/RAW - Selected CFE format: 2304x1296-PC1B/RAW
jdixon@raspberrypi:~ $

–Error when running YOLO sample.–

  • I have tried all of them, doesnt matter. HailoRT is never ready.

jdixon@raspberrypi:~ $ rpicam-hello -t 0 --post-process-file /usr/share/rpi-camera-assets/hailo_yolov6_inference.json
[0:16:04.061063950] [1994] INFO Camera camera_manager.cpp:340 libcamera v0.7.2+rpt20260817
[0:16:04.074489057] [1997] INFO RPI pisp.cpp:725 libpisp version v1.7.0 07-08-2026 (09:22:13)
[0:16:04.087299402] [1997] INFO IPAProxy ipa_proxy.cpp:184 Using tuning file /usr/share/libcamera/ipa/rpi/pisp/imx708.json
[0:16:04.097749142] [1997] INFO Camera camera_manager.cpp:223 Adding camera ‘/base/axi/pcie@1000120000/rp1/i2c@88000/imx708@1a’ for pipeline handler rpi/pisp
[0:16:04.097785698] [1997] INFO RPI pisp.cpp:1186 Registered camera /base/axi/pcie@1000120000/rp1/i2c@88000/imx708@1a to CFE device /dev/media2 and ISP device /dev/media0 using PiSP variant BCM2712_D0
Made wayland-egl preview window
Postprocessing requested lores: 640x640 BGR888
Reading post processing stage “hailo_yolo_inference”
Reading post processing stage “object_detect_draw_cv”
[0:16:04.299610124] [1997] WARN V4L2 v4l2_pixelformat.cpp:346 Unsupported V4L2 pixel format Nc30
[0:16:04.299633624] [1997] WARN V4L2 v4l2_pixelformat.cpp:346 Unsupported V4L2 pixel format Nc12
[0:16:04.299740291] [1997] WARN V4L2 v4l2_pixelformat.cpp:346 Unsupported V4L2 pixel format Nc30
[0:16:04.299748032] [1997] WARN V4L2 v4l2_pixelformat.cpp:346 Unsupported V4L2 pixel format Nc12
Mode selection for 2304:1296:12:P
SRGGB10_CSI2P,1536x864/0 - Score: 3400
SRGGB10_CSI2P,2304x1296/0 - Score: 1000
SRGGB10_CSI2P,4608x2592/0 - Score: 1900
Stream configuration adjusted
[0:16:04.299913422] [1994] INFO Camera camera.cpp:1216 configuring streams: (0) 2304x1296-YUV420/sYCC (1) 640x640-BGR888/sRGB (2) 2304x1296-BGGR_PISP_COMP1/RAW
[0:16:04.300030515] [1997] INFO RPI pisp.cpp:1502 Sensor: /base/axi/pcie@1000120000/rp1/i2c@88000/imx708@1a - Selected sensor format: 2304x1296-SBGGR10_1X10/RAW - Selected CFE format: 2304x1296-PC1B/RAW
Hailo device: HAILO10H
Unable to use a suitable HEF file.
HailoRT not ready!
<----Repeats---->
HailoRT not ready!
^C
jdixon@raspberrypi:~ $

–Troublehsooting Script Results–

jdixon@raspberrypi:~/Desktop/scripts $ sudo ./check_installed_packages.sh
[sudo] password for jdixon:
=== Hailo Package Detection ===

Hailo Architecture Detection:
[OK] Detected Hailo architecture: HAILO10H (via PCI device)

Kernel Module Check:
[OK] hailo1x_pci module loaded and installed, version: 5.1.1

HailoRT Check:
[OK] hailort (system) version: 5.1.1

TAPPAS Core Check:
[OK] hailo-tappas-core (system) version: 5.1.0

Python HailoRT Check:
[OK] pip ‘hailort’ version: 5.1.1
[OK] Python import ‘hailo’ succeeded

Python TAPPAS Check:
[OK] pip ‘hailo-tappas-core-python-binding’ version: 5.1.0
[OK] Python import ‘hailo_platform’ succeeded
[INFO] Module reports version: 5.1.1 (pip package version: 5.1.0)

Version Validation for hailo10h:
[OK] Driver version 5.1.1 is valid for hailo10h (>= 5.0.0)
[OK] HailoRT version 5.1.1 is valid for hailo10h (>= 5.0.0)

================================
SUMMARY: hailo_arch=hailo10h hailo_pci=5.1.1 hailort=5.1.1 pyhailort=5.1.1 tappas-core=5.1.0 tappas-python=5.1.0

–Sanity Check Results–

jdixon@raspberrypi:~/Desktop/scripts $ sudo python3 test_sanity_check.py
============================================================================================================ test session starts =============================================================================================================
platform linux – Python 3.13.5, pytest-8.3.5, pluggy-1.5.0 – /usr/bin/python3
cachedir: .pytest_cache
rootdir: /home/jdixon/Desktop/scripts
plugins: typeguard-4.4.2
collected 29 items

test_sanity_check.py::TestHailoAppsPackage::test_hailo_apps_importable FAILED [ 3%]
test_sanity_check.py::TestHailoAppsPackage::test_hailo_apps_installed_via_pip PASSED [ 6%]
test_sanity_check.py::TestPythonEnvironment::test_python_version PASSED [ 10%]
test_sanity_check.py::TestPythonEnvironment::test_critical_python_package[gi-gi] PASSED [ 13%]
test_sanity_check.py::TestPythonEnvironment::test_critical_python_package[numpy-numpy] PASSED [ 17%]
test_sanity_check.py::TestPythonEnvironment::test_critical_python_package[opencv-python-cv2] PASSED [ 20%]
test_sanity_check.py::TestPythonEnvironment::test_critical_python_package[PyYAML-yaml] PASSED [ 24%]
test_sanity_check.py::TestPythonEnvironment::test_critical_python_package[python-dotenv-dotenv] FAILED [ 27%]
test_sanity_check.py::TestPythonEnvironment::test_optional_python_package[setproctitle] PASSED [ 31%]
test_sanity_check.py::TestPythonEnvironment::test_hailort_python_bindings SKIPPED (hailo_apps not importable, skipping HailoRT check) [ 34%]
test_sanity_check.py::TestPythonEnvironment::test_tappas_python_bindings SKIPPED (hailo_apps not importable, skipping TAPPAS check) [ 37%]
test_sanity_check.py::TestHailoRuntime::test_hailort_cli_available PASSED [ 41%]
test_sanity_check.py::TestHailoRuntime::test_hailo_device_detected ERROR [ 44%]
test_sanity_check.py::TestHailoRuntime::test_hailo_architecture_valid ERROR [ 48%]
test_sanity_check.py::TestGStreamer::test_gstreamer_installed PASSED [ 51%]
test_sanity_check.py::TestGStreamer::test_critical_gst_element[videotestsrc] PASSED [ 55%]
test_sanity_check.py::TestGStreamer::test_critical_gst_element[appsink] PASSED [ 58%]
test_sanity_check.py::TestGStreamer::test_critical_gst_element[videoconvert] PASSED [ 62%]
test_sanity_check.py::TestGStreamer::test_critical_gst_element[autovideosink] PASSED [ 65%]
test_sanity_check.py::TestGStreamer::test_critical_gst_element[filesrc] PASSED [ 68%]
test_sanity_check.py::TestGStreamer::test_critical_gst_element[decodebin] PASSED [ 72%]
test_sanity_check.py::TestGStreamer::test_hailo_gst_element[hailonet] ERROR [ 75%]
test_sanity_check.py::TestGStreamer::test_hailo_gst_element[hailofilter] ERROR [ 79%]
test_sanity_check.py::TestEnvironmentConfiguration::test_dotenv_exists ERROR [ 82%]
test_sanity_check.py::TestEnvironmentConfiguration::test_host_arch_detection ERROR [ 86%]
test_sanity_check.py::TestEnvironmentConfiguration::test_tappas_installed_detection SKIPPED (hailo_apps not importable) [ 89%]
test_sanity_check.py::TestEnvironmentConfiguration::test_tappas_postproc_env_var SKIPPED (hailo_apps not importable) [ 93%]
test_sanity_check.py::TestHostArchitectureSpecific::test_rpi_camera_module PASSED [ 96%]
test_sanity_check.py::TestHostArchitectureSpecific::test_libcamera_available PASSED [100%]

=================================================================================================================== ERRORS ===================================================================================================================
_______________________________________________________________________________________ ERROR at setup of TestHailoRuntime.test_hailo_device_detected ________________________________________________________________________________________
file /home/jdixon/Desktop/scripts/test_sanity_check.py, line 232
def test_hailo_device_detected(self, detected_hailo_arch):
E fixture ‘detected_hailo_arch’ not found

  available fixtures: cache, capfd, capfdbinary, caplog, capsys, capsysbinary, doctest_namespace, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory
  use 'pytest --fixtures [testpath]' for help on them.

/home/jdixon/Desktop/scripts/test_sanity_check.py:232
__ ERROR at setup of TestHailoRuntime.test_hailo_architecture_valid __
file /home/jdixon/Desktop/scripts/test_sanity_check.py, line 242
def test_hailo_architecture_valid(self, detected_hailo_arch):
E fixture ‘detected_hailo_arch’ not found

  available fixtures: cache, capfd, capfdbinary, caplog, capsys, capsysbinary, doctest_namespace, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory
  use 'pytest --fixtures [testpath]' for help on them.

/home/jdixon/Desktop/scripts/test_sanity_check.py:242
__ ERROR at setup of TestGStreamer.test_hailo_gst_element[hailonet] __
file /home/jdixon/Desktop/scripts/test_sanity_check.py, line 297
@pytest.mark.requires_device
@pytest.mark.parametrize(“element”, [
“hailonet”,
“hailofilter”,
])
def test_hailo_gst_element(self, element, detected_hailo_arch):
E fixture ‘detected_hailo_arch’ not found

  available fixtures: cache, capfd, capfdbinary, caplog, capsys, capsysbinary, doctest_namespace, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory
  use 'pytest --fixtures [testpath]' for help on them.

/home/jdixon/Desktop/scripts/test_sanity_check.py:297
____________________________________________________________________________________ ERROR at setup of TestGStreamer.test_hailo_gst_element[hailofilter] _____________________________________________________________________________________
file /home/jdixon/Desktop/scripts/test_sanity_check.py, line 297
@pytest.mark.requires_device
@pytest.mark.parametrize(“element”, [
“hailonet”,
“hailofilter”,
])
def test_hailo_gst_element(self, element, detected_hailo_arch):
E fixture ‘detected_hailo_arch’ not found

  available fixtures: cache, capfd, capfdbinary, caplog, capsys, capsysbinary, doctest_namespace, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory
  use 'pytest --fixtures [testpath]' for help on them.

/home/jdixon/Desktop/scripts/test_sanity_check.py:297
__ ERROR at setup of TestEnvironmentConfiguration.test_dotenv_exists ___
file /home/jdixon/Desktop/scripts/test_sanity_check.py, line 328
def test_dotenv_exists(self, dotenv_path, repo_resources_symlink):
E fixture ‘dotenv_path’ not found

  available fixtures: cache, capfd, capfdbinary, caplog, capsys, capsysbinary, doctest_namespace, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory
  use 'pytest --fixtures [testpath]' for help on them.

/home/jdixon/Desktop/scripts/test_sanity_check.py:328
__ ERROR at setup of TestEnvironmentConfiguration.test_host_arch_detection ___
file /home/jdixon/Desktop/scripts/test_sanity_check.py, line 346
def test_host_arch_detection(self, detected_host_arch):
E fixture ‘detected_host_arch’ not found

  available fixtures: cache, capfd, capfdbinary, caplog, capsys, capsysbinary, doctest_namespace, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory
  use 'pytest --fixtures [testpath]' for help on them.

/home/jdixon/Desktop/scripts/test_sanity_check.py:346
================================================================================================================== FAILURES ==================================================================================================================
__ TestHailoAppsPackage.test_hailo_apps_importable ___

self = <test_sanity_check.TestHailoAppsPackage object at 0x7fff8bba1810>

def test_hailo_apps_importable(self):
    """Verify hailo_apps package can be imported."""
    if not IMPORTS_AVAILABLE:
      pytest.fail(f"hailo_apps package cannot be imported: {IMPORT_ERROR}")

E Failed: hailo_apps package cannot be imported: No module named ‘hailo_apps’

test_sanity_check.py:112: Failed
__ TestPythonEnvironment.test_critical_python_package[python-dotenv-dotenv] __

self = <test_sanity_check.TestPythonEnvironment object at 0x7fff8bb456a0>, package = ‘python-dotenv’, import_name = ‘dotenv’

@pytest.mark.parametrize("package,import_name", [
    ("gi", "gi"),
    ("numpy", "numpy"),
    ("opencv-python", "cv2"),
    ("PyYAML", "yaml"),
    ("python-dotenv", "dotenv"),
])
def test_critical_python_package(self, package, import_name):
    """Verify critical Python packages are installed."""
    try:
      module = importlib.import_module(import_name)

test_sanity_check.py:164:


/usr/lib/python3.13/importlib/init.py:88: in import_module
return _bootstrap._gcd_import(name[level:], package, level)
:1387: in _gcd_import
???
:1360: in _find_and_load
???


name = ‘dotenv’, import_ = <function _gcd_import at 0x7fff8d4944a0>

???
E ModuleNotFoundError: No module named ‘dotenv’

:1324: ModuleNotFoundError

During handling of the above exception, another exception occurred:

self = <test_sanity_check.TestPythonEnvironment object at 0x7fff8bb456a0>, package = ‘python-dotenv’, import_name = ‘dotenv’

@pytest.mark.parametrize("package,import_name", [
    ("gi", "gi"),
    ("numpy", "numpy"),
    ("opencv-python", "cv2"),
    ("PyYAML", "yaml"),
    ("python-dotenv", "dotenv"),
])
def test_critical_python_package(self, package, import_name):
    """Verify critical Python packages are installed."""
    try:
        module = importlib.import_module(import_name)
        version = getattr(module, '__version__', 'unknown')
        logger.info(f"{package} is installed (version: {version})")
    except ImportError:
      pytest.fail(f"Critical package missing: {package} (import: {import_name})")

E Failed: Critical package missing: python-dotenv (import: dotenv)

test_sanity_check.py:168: Failed
============================================================================================================== warnings summary ==============================================================================================================
test_sanity_check.py:105
/home/jdixon/Desktop/scripts/test_sanity_check.py:105: PytestUnknownMarkWarning: Unknown pytest.mark.sanity - is this a typo? You can register custom marks to avoid this warning - for details, see How to mark test functions with attributes - pytest documentation
@pytest.mark.sanity

test_sanity_check.py:142
/home/jdixon/Desktop/scripts/test_sanity_check.py:142: PytestUnknownMarkWarning: Unknown pytest.mark.sanity - is this a typo? You can register custom marks to avoid this warning - for details, see How to mark test functions with attributes - pytest documentation
@pytest.mark.sanity

test_sanity_check.py:212
/home/jdixon/Desktop/scripts/test_sanity_check.py:212: PytestUnknownMarkWarning: Unknown pytest.mark.sanity - is this a typo? You can register custom marks to avoid this warning - for details, see How to mark test functions with attributes - pytest documentation
@pytest.mark.sanity

test_sanity_check.py:213
/home/jdixon/Desktop/scripts/test_sanity_check.py:213: PytestUnknownMarkWarning: Unknown pytest.mark.requires_device - is this a typo? You can register custom marks to avoid this warning - for details, see How to mark test functions with attributes - pytest documentation
@pytest.mark.requires_device

test_sanity_check.py:258
/home/jdixon/Desktop/scripts/test_sanity_check.py:258: PytestUnknownMarkWarning: Unknown pytest.mark.sanity - is this a typo? You can register custom marks to avoid this warning - for details, see How to mark test functions with attributes - pytest documentation
@pytest.mark.sanity

test_sanity_check.py:259
/home/jdixon/Desktop/scripts/test_sanity_check.py:259: PytestUnknownMarkWarning: Unknown pytest.mark.requires_gstreamer - is this a typo? You can register custom marks to avoid this warning - for details, see How to mark test functions with attributes - pytest documentation
@pytest.mark.requires_gstreamer

test_sanity_check.py:297
/home/jdixon/Desktop/scripts/test_sanity_check.py:297: PytestUnknownMarkWarning: Unknown pytest.mark.requires_device - is this a typo? You can register custom marks to avoid this warning - for details, see How to mark test functions with attributes - pytest documentation
@pytest.mark.requires_device

test_sanity_check.py:324
/home/jdixon/Desktop/scripts/test_sanity_check.py:324: PytestUnknownMarkWarning: Unknown pytest.mark.sanity - is this a typo? You can register custom marks to avoid this warning - for details, see How to mark test functions with attributes - pytest documentation
@pytest.mark.sanity

test_sanity_check.py:407
/home/jdixon/Desktop/scripts/test_sanity_check.py:407: PytestUnknownMarkWarning: Unknown pytest.mark.sanity - is this a typo? You can register custom marks to avoid this warning - for details, see How to mark test functions with attributes - pytest documentation
@pytest.mark.sanity

– Docs: How to capture warnings - pytest documentation
========================================================================================================== short test summary info ===========================================================================================================
FAILED test_sanity_check.py::TestHailoAppsPackage::test_hailo_apps_importable - Failed: hailo_apps package cannot be imported: No module named ‘hailo_apps’
FAILED test_sanity_check.py::TestPythonEnvironment::test_critical_python_package[python-dotenv-dotenv] - Failed: Critical package missing: python-dotenv (import: dotenv)
ERROR test_sanity_check.py::TestHailoRuntime::test_hailo_device_detected
ERROR test_sanity_check.py::TestHailoRuntime::test_hailo_architecture_valid
ERROR test_sanity_check.py::TestGStreamer::test_hailo_gst_element[hailonet]
ERROR test_sanity_check.py::TestGStreamer::test_hailo_gst_element[hailofilter]
ERROR test_sanity_check.py::TestEnvironmentConfiguration::test_dotenv_exists
ERROR test_sanity_check.py::TestEnvironmentConfiguration::test_host_arch_detection
======================================================================================= 2 failed, 17 passed, 4 skipped, 9 warnings, 6 errors in 1.75s ========================================================================================

Update, and not for the better.

The only change. I powered it off and powered it back on days later

I have left this device off after making this post. Upon starting it up and poking around for a minute, I decided to check some of my initial status commands. hailortcli doesnt work anymore and the hailo drivers appear corrupted.

jdixon@raspberrypi:~ $ hailortcli fw-control identify
jdixon@raspberrypi:~ $ dmesg | grep -i hailo
[ 3.466376] hailo1x_pci: loading out-of-tree module taints kernel.
[ 3.467856] hailo1x: Init module. driver version 5.1.1
[ 3.468741] hailo1x 0001:01:00.0: Probing on: 1e60:45c4…
[ 3.468773] hailo1x 0001:01:00.0: Probing: Allocate memory for device extension, 11256
[ 3.468792] hailo1x 0001:01:00.0: enabling device (0000 → 0002)
[ 3.468811] hailo1x 0001:01:00.0: Probing: Device enabled
[ 3.468827] hailo1x 0001:01:00.0: Probing: mapped bar 0 - 00000000d69df781 16384
[ 3.468832] hailo1x 0001:01:00.0: Probing: mapped bar 2 - 00000000382e7573 4096
[ 3.468835] hailo1x 0001:01:00.0: Probing: mapped bar 4 - 00000000b10d330c 16384
[ 3.468839] hailo1x 0001:01:00.0: Probing: Setting max_desc_page_size to 4096, (PAGE_SIZE=16384)
[ 3.468848] hailo1x 0001:01:00.0: Probing: Enabled 64 bit dma
[ 3.468851] hailo1x 0001:01:00.0: Disabling ASPM L0s
[ 3.468854] hailo1x 0001:01:00.0: Successfully disabled ASPM L0s
[ 3.470046] hailo1x 0001:01:00.0: Writing file hailo/hailo10h/customer_certificate.bin
[ 3.472621] hailo1x 0001:01:00.0: Failed with error -2 to write file hailo/hailo10h/customer_certificate.bin
[ 3.472630] hailo1x 0001:01:00.0: Failed writing firmware files over PCIe bars. err -2
[ 3.472645] hailo1x 0001:01:00.0: Failed writing SOC firmware on stage 1. boot_status 1
[ 3.472647] hailo1x 0001:01:00.0: Firmware load failed
[ 3.474296] hailo1x 0001:01:00.0: Failed activating board -2
[ 3.474324] hailo1x 0001:01:00.0: probe with driver hailo1x failed with error -2
jdixon@raspberrypi:~ $

Hi @Joshua_Dixon

That is a very complete report, thank you. There are two independent problems in it and the second one has to be fixed first, because until /dev/hailo0 comes back nothing else can work.

The boot failure in your update

hailo1x 0001:01:00.0: Writing file hailo/hailo10h/customer_certificate.bin
hailo1x 0001:01:00.0: Failed with error -2 to write file hailo/hailo10h/customer_certificate.bin

-2 is ENOENT. The driver is asking the kernel firmware loader for that file and it is not there. On your first boot the same line said written successfully, so the file existed then and does not now. Nothing is corrupted on the board: the SOC simply never gets its firmware, so the probe aborts and /dev/hailo0 is never created, which is why hailortcli went silent.

Every file named in your working boot log is shipped by exactly one package, h10-hailort-pcie-driver 5.1.1:

/lib/firmware/hailo/hailo10h/customer_certificate.bin
/lib/firmware/hailo/hailo10h/scu_fw.bin
/lib/firmware/hailo/hailo10h/u-boot-6.dtb.signed      <- your board is SKU-ID 6
/lib/firmware/hailo/hailo10h/u-boot-spl.bin
/lib/firmware/hailo/hailo10h/fitImage
/lib/firmware/hailo/hailo10h/image-fs

So the first thing to check:

ls -l /lib/firmware/hailo/hailo10h/
dpkg -l | grep -i hailo

If that directory is missing or empty, sudo apt install --reinstall h10-hailort-pcie-driver and reboot.

And here is the part I would look at hardest. The Raspberry Pi repo carries two parallel, mutually exclusive Hailo stacks, and the meta-packages pull opposite ones:

hailo-all       -> hailort (>= 4.23.0), hailort-pcie-driver (>= 4.23.0), python3-hailort (>= 4.23.0)
hailo-h10-all   -> h10-hailort (>= 5.1.1), h10-hailort-pcie-driver (>= 5.1.1), python3-h10-hailort

hailo-all is the Hailo-8 line. It carries no hailo10h firmware at all. hailo-h10-all is the one for the AI HAT+ 2. The official Raspberry Pi AI page tells you to apt install hailo-all, which is correct for the original AI Kit and AI HAT+ but is the wrong line for your board. Your sanity check output says hailort=5.1.1 pyhailort=5.1.1, so you were on the H10 line when it worked, and in your own transcript there is an apt update && apt install rpicam-apps between the working boot and the broken one. I cannot prove that is what pulled the 4.23.0 line in over the 5.1.1 one, but it is the first thing I would verify:

apt-cache policy hailo-all hailo-h10-all hailort h10-hailort hailort-pcie-driver h10-hailort-pcie-driver

You want the h10- ones installed and the plain ones not installed.

Now the original error, which is not a hardware problem at all

Unable to use a suitable HEF file never reaches HailoRT. It is a config gap in the shipped asset, and it fires before any HEF is opened. From rpicam-apps v1.13.0, which is the version you have:

hef_file_    = params.get<std::string>("hef_file", "");
hef_file_8_  = params.get<std::string>("hef_file_8", "");
hef_file_8L_ = params.get<std::string>("hef_file_8L", "");
hef_file_10_ = params.get<std::string>("hef_file_10", "");
...
if (device == "HAILO10H")
    hef_file = hef_file_10_;
else if (device == "HAILO8")
    hef_file = hef_file_8_;
else if (device == "HAILO8L")
    hef_file = hef_file_8L_;

if (hef_file.empty())
    hef_file = hef_file_;

if (hef_file.empty())
{
    LOG_ERROR("Unable to use a suitable HEF file.");
    return -1;
}

And this is the entire model section of hailo_yolov6_inference.json:

"hef_file_8L": "/usr/share/hailo-models/yolov6n_h8l.hef",
"hef_file_8":  "/usr/share/hailo-models/yolov6n_h8.hef",

No hef_file_10, no generic hef_file. Your device correctly identifies as HAILO10H, so hef_file_10_ is empty, the generic fallback is empty, and you get the error. The yolov6 demo cannot work on an AI HAT+ 2 as shipped.

Which demos actually work on a HAILO10H

I cross-referenced all nine Hailo assets in rpicam-apps v1.13.0 against the models hailo-models 1.0.0-2 actually installs:

asset keys defined on HAILO10H
hailo_yolov8_inference.json hef_file_10 hef_file_8L hef_file_8 works (yolov8m_h10.hef)
hailo_yolov8_pose.json hef_file_10 hef_file_8L hef_file_8 works (yolov8m_pose_h10.hef)
hailo_yolov5_segmentation.json hef_file_10 hef_file_8L hef_file_8 works (yolov5n_seg_h10.hef)
hailo_classifier.json hef_file_10 hef_file works (resnet_v1_50_h10.hef)
hailo_yolov6_inference.json hef_file_8L hef_file_8 your error
hailo_scrfd.json hef_file only, points at _h8l falls through to an h8l binary, fails later
hailo_yolov5_personface.json hef_file only, points at _h8l same
hailo_yolox_inference.json hef_file only, points at _h8l same
hailo_pose_inf_fl.json hef_file only, points at _h8/_h8l same

So once the driver is back, try this one:

rpicam-hello -t 0 --post-process-file /usr/share/rpi-camera-assets/hailo_yolov8_inference.json

That is the one I would expect to run on your board. Four of the nine should work; the other five are either missing the key or pointing at a Hailo-8 binary, and a HEF built for one architecture will not load on another. That is probably why “all of them” looked identical to you, even though the failure mode is not the same in all cases.

There is no yolov6 model for H10 in the package, so there is no path to fix that particular json by hand:

$ dpkg -L hailo-models | grep _h10
resnet_v1_50_h10.hef   yolov11m_h10.hef   yolov5n_seg_h10.hef
yolov8m_h10.hef        yolov8m_pose_h10.hef   yolov8s_pose_h10.hef

Side note for whoever maintains these assets: yolov11m_h10.hef and yolov8s_pose_h10.hef are installed but no asset references either of them, and hailo_yolov6_inference.json is the only asset in the set with neither hef_file_10 nor a generic hef_file. Adding a generic fallback there would at least turn this into a clear architecture-mismatch error instead of a silent config miss.

One honest caveat: I do not have an AI HAT+ 2, so I could not reproduce any of this on hardware. Everything above is read off the rpicam-apps v1.13.0 source, the contents of the hailo-models and h10-hailort-pcie-driver packages, and the dependency lists of the two meta-packages, all of which you can check yourself without a board.

Hi @Jesus_Royeth

Thank you for taking the time to look at this issue. Your analysis is greatly appreciated. I am seeing the Hail0 8 references. For continuity, the results of those querys are below. Im not sure how those drivers got installed, but I will keep an eye on it, moving forward.

Resolution:

I ran sudo apt remove hailort-pcie-driver

Rebooted

Ran “sudo apt install --reinstall h10-hailort-pcie-driver”

I ended up messing up the camera application, so I reran the original package installations.

sudo apt install dkms
sudo apt install hailo-h10-all


Continuity Part

jdixon@raspberrypi:~ $ ls -l /lib/firmware/hailo/hailo10h/
dpkg -l | grep -i hailo
ls: cannot access ‘/lib/firmware/hailo/hailo10h/’: No such file or directory
ii hailo-all 5.1.1 all Hailo-8 support (metapackage)
ii hailo-models 1.0.0-2 all AI models for Hailo modules
ii hailo-tappas-core 5.1.0 arm64 Core components of the Hailo TAPPAS platform
ii hailort 4.23.0 arm64 AI acceleration runtime library for Hailo hardware
ii hailort-pcie-driver 4.23.0 all Hailo PCIe driver and firmware for AI hardware acceleration
ii python3-hailo-tappas 5.1.0 arm64 Python binding for tappas
ii python3-hailort 4.23.0-1 arm64 HailoRT Python API, which wraps the runtime library
ii rpicam-apps-hailo-postprocess 1.13.0-1 arm64 Raspberry Pi AI HAT+ post-processing plugin for rpicam-apps

————————————————————————————————————–

jdixon@raspberrypi:~ $ apt-cache policy hailo-all hailo-h10-all hailort h10-hailort hailort-pcie-driver h10-hailort-pcie-driver
hailo-all:
Installed: 5.1.1
Candidate: 5.1.1
Version table:
*** 5.1.1 500
500 Index of /debian trixie/main arm64 Packages
500 Index of /debian trixie/main armhf Packages
100 /var/lib/dpkg/status
hailo-h10-all:
Installed: (none)
Candidate: 5.1.1
Version table:
5.1.1 500
500 Index of /debian trixie/main arm64 Packages
500 Index of /debian trixie/main armhf Packages
hailort:
Installed: 4.23.0
Candidate: 4.23.0
Version table:
*** 4.23.0 500
500 Index of /debian trixie/main arm64 Packages
100 /var/lib/dpkg/status
h10-hailort:
Installed: (none)
Candidate: 5.1.1
Version table:
5.1.1 500
500 Index of /debian trixie/main arm64 Packages
hailort-pcie-driver:
Installed: 4.23.0
Candidate: 4.23.0
Version table:
*** 4.23.0 500
500 Index of /debian trixie/main arm64 Packages
500 Index of /debian trixie/main armhf Packages
100 /var/lib/dpkg/status
h10-hailort-pcie-driver:
Installed: (none)
Candidate: 5.1.1
Version table:
5.1.1 500
500 Index of /debian trixie/main arm64 Packages
500 Index of /debian trixie/main armhf Packages