Hailo-8 Firmware Error: Failed to examine user config (HAILO_FW_CONTROL_FAILURE)

I’m trying to read the firmware configuration on my Hailo-8 device using hailortcli, but I keep getting an error even though my firmware, library, and driver versions are consistent.

Here’s what I tried:

root@raspberrypi:~# hailortcli fw-control identify
Executing on device: 0001:01:00.0
Identifying board
Control Protocol Version: 2
Firmware Version: 4.20.0 (release,app,extended context switch buffer)
Logger Version: 0
Board Name: Hailo-8
Device Architecture: HAILO8
Serial Number: <N/A>
Part Number: <N/A>
Product Name: <N/A>

Everything looks okay here.

But when I try to read the user config:

root@raspberrypi:~# hailortcli fw-config read
Executing on device: 0001:01:00.0
[HailoRT] [warning] Failed to examine user config, as it is not loaded or is not supported by the device.
[HailoRT] [error] Firmware control has failed. Major status: 0x4003003b, Minor status: 0x401a0004
[HailoRT] [error] Firmware major status: CONTROL_PROTOCOL_STATUS_USER_CONFIG_EXAMINE_FAILED
[HailoRT] [error] Firmware minor status: FIRMWARE_CONFIGS_STATUS_USER_CONFIG_NOT_LOADED
[HailoRT] [error] CHECK_SUCCESS failed with status=HAILO_FW_CONTROL_FAILURE(18)

Environment:

  • Device: Hailo-8 AI ACC M.2 B+M Key

  • OS: Raspberry Pi OS

  • Firmware: 4.20.0

  • HailoRT library: 4.20.0

  • Drivers:4.20.0
    How to resolve this issue?

Welcome to the Hailo Community!

This does not look like a Hailo-8 M.2 module. This looks like the output you would get from the Raspberry Pi AI HAT with the onboard Hailo-8 chip. Please confirm what hardware you are using.

As the warning states, there are two known reasons:

  • The hardware does not support the user config. It requires an EEPROM connected to the Hailo chip which is optional. The Raspberry Pi AI HATs for instance do not support this feature.
  • The user configuration has never been written. This is the case for original Hailo-8 M.2 modules when they come out of production. The configuration is not necessary for the device to work. Once you write a config to the device the read will work as expected.