1) Environment
-
Host: Raspberry Pi 5 (64-bit), Raspberry Pi OS / Debian 12 (Bookworm)
-
Kernel / PCIe: Hailo PCIe card (HAILO-8L M.2 B+M)
-
Python: 3.11
-
GStreamer: 1.22 (base, tools, x installed)
-
Display: headless (no X), using
fakesink
in pipelines
2) Versions / packages
$ dpkg -l | egrep -i 'hailort|hailo-tappas'
ii hailort 4.19.0 arm64
ii hailort-pcie-driver 4.19.0 all
ii hailo-tappas-core 3.30.0-1 arm64
Firmware / board:
$ hailortcli fw-control identify
Firmware Version: 4.19.0
Device Architecture: HAILO8L
Product Name: HAILO-8L AI ACC M.2 B+M KEY MODULE EXT TMP
Descriptor page size (driver parameter):
$ cat /sys/module/hailo_pci/parameters/force_desc_page_size
4096
3) Examples / models
-
Example repo:
hailo-rpi5-examples-2024-10/basic_pipelines/detection.py
-
HEFs present:
-
../resources/yolov8s_h8l.hef
(main test) -
../resources/yolov8s-hailo8l-barcode.hef
(available in our tree) -
Other H8L HEFs also available
-
-
Running headless (
HAILO_RPI_SINK=fakesink
) and/or via file sourceresources/detection0.mp4
4) Issues we experienced
A. (RESOLVED) X video sink on headless
Error: ... XvImageSink: Could not open display (null)
What we did: switched to fakesink
.
B. (RESOLVED) “max_desc_page_size 16384 > 4096”
We saw this in both hailortcli benchmark
and the pipeline initially:
[HailoRT] [error] CHECK failed - max_desc_page_size given 16384 is bigger than hw max desc page size 4096
...
[HailoRT] [error] ... HAILO_CANT_MEET_BUFFER_REQUIREMENTS(84)
What we did:
-
Verified driver param is 4096:
/sys/module/hailo_pci/parameters/force_desc_page_size
→4096
-
After re-sourcing env / restarting services,
hailortcli
now passes:
$ hailortcli benchmark /path/to/yolov8s_h8l.hef
Summary: FPS (streaming) ≈ 28.86, HW Latency ≈ 27.23 ms
So the desc-page-size error appears resolved.
C. (OPEN) GStreamer pipeline fails: no element hailofilter
When running basic_pipelines/detection.py
:
gst_parse_error: no element "hailofilter" (1)
Current GStreamer awareness:
$ gst-inspect-1.0 hailonet | head # works, shows Hailo net element
$ gst-inspect-1.0 hailofilter # <-- Not found
We also previously hit a libgsthailometa.so.3
lookup issue, which we fixed by installing hailo-tappas-core 3.30.0-1
and setting:
export LD_LIBRARY_PATH=/usr/lib/aarch64-linux-gnu/hailo/gstreamer:/usr/lib/aarch64-linux-gnu/hailort:$LD_LIBRARY_PATH
export GST_PLUGIN_PATH=/usr/lib/aarch64-linux-gnu/gstreamer-1.0:/usr/lib/aarch64-linux-gnu/hailo/gstreamer
export GST_PLUGIN_SYSTEM_PATH=$GST_PLUGIN_PATH
sudo ldconfig
After that, hailonet
is visible, but hailofilter
remains missing.
D. Building from source to get hailofilter
We tried to build TAPPAS 3.30 from source to obtain the GStreamer plugins:
- Fresh clone:
git clone --branch v3.30.0 --recurse-submodules --shallow-submodules https://github.com/hailo-ai/tappas.git tappas-3.30-git
- Build error:
meson.build:24: ERROR: Include dir ../../open_source/xtensor_stack/base does not exist.
It looks like submodules didn’t populate that path. We tried:
git submodule sync --recursive
git submodule update --init --recursive --depth 1
but still saw the missing xtensor_stack/base
.
We also have a v3.31 tree that does build parts (we see libgsthailometa
artifacts there), but we did not locate a built libgsthailortpp.so
/ hailofilter
.so
to install.
5) What we’ve already adjusted in the demo pipeline
-
Force headless sink:
fakesink
-
Fix spacing bug:
force-writable=true !
(remove extra!
stuck to value) -
Force batch-size=1 and HAILO_FORMAT_TYPE_FLOAT16 (H8L-friendly)
-
Removed accidental
nms-max-proposals-per-class
onqueue
elements -
hailortcli benchmark
on our H8L HEFs now looks healthy
6) Questions for the community / Hailo team
-
Where does
hailofilter
come from in 3.30?-
Is it delivered by
hailo-tappas-core_3.30.0-1_arm64.deb
(and if so, which file name/path should we see for the plugin)? -
Or is it built only from
tappas/core/hailo
sources? If from source, can you confirm the exact Meson target that produces thehailofilter
plugin.so
, and where it lands?
-
-
Submodules for 3.30 build
-
What is the correct incantation to ensure
open_source/xtensor_stack/base
is populated? -
If using distro headers (
libxtensor-dev
,libxsimd-dev
,libxtl-dev
) is acceptable, can you confirm that symlinking them intoopen_source/xtensor_stack/base
is supported for buildinghailofilter
?
-
-
Compatibility matrix confirmation
- We’re on HailoRT 4.19.0 + TAPPAS 3.30.0-1 on HAILO8L (RPi5). Docs say 3.30 aligns with 2024-10 and supports 4.19—can you confirm this is a supported combination for GStreamer examples on H8L?
-
Official packages location
-
Is there an APT repo or download link for
hailo-tappas-examples
3.30.x and/or a package that containshailofilter
explicitly? -
If it’s in the “Linux Installer”
.tar.gz
, which script should we run to install just the GStreamer plugins on RPi5?
-
-
Recommended pipeline defaults for H8L
-
For YOLOv8s H8L HEFs, is
batch-size=1
/HAILO_FORMAT_TYPE_FLOAT16
the recommended default in GStreamer pipelines? -
Any scheduler or post-proc json tweaks you recommend for RPi5 + H8L?
-
7) Minimal repro
Works:
hailortcli benchmark /path/to/yolov8s_h8l.hef
# Summary shows ~28.86 FPS streaming, ~27.2 ms HW latency
Fails (missing filter):
HAILO_RPI_SINK=fakesink python3 basic_pipelines/detection.py
gst_parse_error: no element "hailofilter"
What GStreamer sees now:
gst-inspect-1.0 hailonet # OK (prints element details)
gst-inspect-1.0 hailofilter# NOT FOUND
Any pointers on the correct source target / package that provides hailofilter
for 3.30 on RPi5 (H8L) would be hugely appreciated. If there’s a known good bundle or an updated installer path, happy to try that as well.
Thanks!