alvises

alvises

Nerves RPi5 Hailo8 M.2 AI module support

Hi everyone,

I’d like this thread to serve as a common place to track the ongoing development of Hailo8 M.2 support on Nerves. I know some community members are actively working on this integration.

For those unfamiliar, the Hailo8 is an AI processor, offering high-performance, low-power machine learning acceleration. It connects via PCIe to the RPi5 and is ideal for applications requiring efficient neural network inference.

  • With the hailo-driver branch of the official Nerves Raspberry Pi 5 system repository (nerves_system_rpi5), the Hailo8 device is successfully recognized when connected via PCIe. I think it needs some firmware file though.

  • Additionally, Gus is working on integrating HailoRT (Hailo’s runtime SDK) into Nerves. Here’s the repo GitHub - gworkman/hailo_rpi5 at add_hailo · GitHub

Most Liked

alvises

alvises

Just made this screencast showing how to run object detection models on Nerves + Rpi5 + Hailo8L with the NxHailo library.

fhunleth

fhunleth

Co-author of Nerves

The Hailo AI accelerators are now supported in Nerves out-of-the-box on Raspberry Pi 5’s with the AI hat or M.2 AI module. The nx_hailo repository has been updated to reference it and there’s a short mention in the nerves_system_rpi5 release notes.

lawik

lawik

Nerves Core Team

It exists and works. Kind of an early version but Paulo and Vittoria took the efforts Cocoa, @gus and I put into making the driver work, swore at it, cursed our names, made it work again, gave us credit and then implemented the Elixir parts.

Then they made a yolo model work with some help from @alvises.

They showed it all off in Stockholm recently.

Their repo:
https://github.com/vittoriabitton/nx_hailo

Most news like this lands in the Nerves Newsletter even when I don’t remember to find all places it has been discussed to update on the situation :slight_smile:

Last Post!

Vidar

Vidar

I made a setup with the Raspberry 5 and the Hailo-8 (26 tops) including discovery and control of a GigE camera. I get about 14 frames per second interference rate using 640x640 RGB8 resolution with YOLOv8n.

The heavy frame processing and encoding are all Rust NIFs that run in parallel: Receiving the GigE camera packets and color converting them before assembly into full frames directly inside a ring buffer. No copying of anything. The ring buffer then feeds three other processes: 1. A 24fps encoder MJpeg stream with low latency which uses the pictures as feedback for a physical control setup. 2. A 24fps Rust H264 encoder that feeds a Membrane HLS web stream (with higher latency) for remote user viewing. And 3. Whenever the interference asks for it a frame is grabbed from the ring buffer, resized, and turned into an NX tensor for interference.

All user facing UI and controls are Phoenix Liveview based. The 24fps video rates could certainly be faster, but we have no need for more and less power use and heat is positive.

Where Next?

Popular in Discussions Top

AstonJ
Please see the new poll here: Which code editor or IDE do you use? (Poll) (2022 Edition) It’s been a while since we first asked this, I...
208 31695 143
New
ben-pr-p
In general I’ve been sticking to this community style guide GitHub - christopheradams/elixir_style_guide: A community driven style guide ...
New
Crowdhailer
I’ve been hearing much about the new formatter and it’s something I have been keen to try. I find examples buy far the most illuminating...
248 19740 150
New
pillaiindu
In django there is a cache framework backed by memcached. Rails also puts a lot of emphasis on caching, and even the idea of russian-doll...
New
lorenzo
Hey everone! I created a prototype for my app using Nodejs for the api. But the framework I chose wasnt great (in general theresnt any g...
New
PragTob
Hello everyone, I know we had quite some threads (read through lots of them) about background job processing but it remains a hotly deba...
New
slashdotdash
Phoenix Live View is now publicly available on GitHub. Here’s Chris McCord’s tweet announcing making it public.
New

Other popular topics Top

Brian
What is the proper way to load a module from a file in to IEX? In the python world, doing something like this pretty standard: from ....
New
dokuzbir
I want to highlight html closing tags when i click a html tag. That works in .html files but doesnt work for html.eex templates. How can...
New
Darmani72
If I have a post route which an argument: post /my_post_route/:my_param1, MyController.my_post_handler How would get the post params ...
New
bsollish-terakeet
Credo is smart enough to check for (something like) this: assert length(the_list) == 0 with this response: Checking if an enum is empt...
New
shijith.k
I am trying to start a new phoenix project with elixir 1.9, but mix phx.new does not work. It says that ** (Mix) The task "phx.new" could...
New
sergio
Kind of like when jquery came out, it was super necessary. Existing drag and drop libraries have a bunch of baggage to support old browse...
New

We're in Beta

About us Mission Statement