Build an AI-Powered NVR with the LattePanda Mu Ultra and Frigate
License: Attribution Single Board Computers Camera LattePanda
Introduction
If you've already built a Home Assistant server, chances are you've eventually started looking at security cameras. And if you've looked at self-hosted security cameras long enough, you've probably come across Frigate.
Frigate has become one of the most popular open-source NVR platforms because it brings local AI-powered object detection to your camera system without relying on cloud subscriptions. The catch is that many Frigate tutorials quickly turn into Docker tutorials, requiring users to learn container management, Docker Compose files, hardware acceleration, storage mapping, and various Linux administration tasks before they ever get to see their first camera feed.
In this project, we'll take a different approach. Rather than manually assembling the entire software stack, we'll use the LattePanda Mu Ultra and Homeio to build a capable AI-powered NVR that can be deployed in just a few clicks, while still benefiting from local AI acceleration, NVMe storage, and the flexibility of a full Ubuntu-based system.
If you've been following along with my previous articles covering Ventoy and Homeio, you'll discover that getting Frigate up and running is surprisingly straightforward.
Why the LattePanda Mu Ultra?
The LattePanda Mu Ultra feels almost purpose-built for workloads like Frigate.
The platform combines an Intel Core Ultra processor, integrated Intel Arc graphics, and Intel AI Boost NPU acceleration in a compact compute module form factor. The result is a system capable of performing local AI inference while maintaining low CPU utilization and modest power consumption. The platform also supports Ubuntu, NVMe storage, 2.5Gb networking through the Mini Carrier Board, and a variety of expansion options.
Meet the LattePanda Mu Ultra: Bringing Local AI to You
For a Frigate deployment, that means:
Local AI object detection
Hardware-accelerated video processing
Fast storage for recordings
Expandable I/O
Compact hardware footprint
No cloud dependency
Most importantly, it provides enough performance to grow as your camera count increases.
Hardware Used
For this build, I used:
M.2 Wi-Fi module (optional - a wired network connection is preferred)
Assembly
Begin by assembling the system:
Install the Mu Ultra into the carrier board.
Attach the cooler.
Install the NVMe SSD.
Install the Wi-Fi module if desired.
Temporarily connect a display, keyboard, and mouse (This is only needed for OS installation)
Set the auto power-on jumper to enabled
Connect the power supply
Once assembled, install Ubuntu Desktop. Rather than covering that process again here, I recommend following the following guides:
Stop Re-Flashing USB Drives: Use Ventoy for OS Installation and Recovery
Don’t Fear Ubuntu: How to Install It Successfully on Your First Try
After Ubuntu is installed, proceed with installing Homeio following the instructions here:
Homeio: A Friendly Starting Point for Your First Home Server
One of the reasons I like Homeio is that it makes container deployment approachable for users who may not have extensive Docker experience. Rather than manually creating and maintaining Docker Compose files, applications can be deployed via the built-in app store, making it easy for anyone to set up Frigate.
Installing Frigate
From Homeio:
Open the App Store.
Search for Frigate.
Select the Frigate application.
Choose Custom Install.
During installation, I recommend adjusting the web interface port.
By default, Frigate may use port 8971; however, this is an HTTPS port, and I didn't want to bother with certificates since this is only accessible locally on my network, so I changed all instances of port 8971 to port 5000
This provides direct access to Frigate over standard HTTP.
Once the container finishes deploying, launch Frigate by clicking on it in your Homeio dashboard.
Configuring Frigate
Open:
Settings → Configuration Editor
The LattePanda Mu Ultra supports OpenVINO acceleration using the onboard Intel AI Boost NPU, so the first step is configuring the detector.
A simplified example configuration is shown below:
mqtt: enabled: false ffmpeg: hwaccel_args: -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 detectors: ov: type: openvino device: NPU model: width: 300 height: 300 input_tensor: nhwc input_pixel_format: bgr path: /openvino-model/ssdlite_mobilenet_v2.xml labelmap_path: /openvino-model/coco_91cl_bkgr.txt detect: enabled: true record: enabled: true
You can then define your individual camera streams and object detection settings.
A Note About MQTT
For this test system, MQTT was intentionally disabled:
mqtt: enabled: false
This allowed me to focus entirely on Frigate itself without integrating it into my existing Home Assistant installation.
Most users will likely want MQTT enabled so that Frigate events can be consumed by Home Assistant for automations, notifications, and dashboards.
Camera Configuration
Use Frigate's UI wizard to add your cameras.
For testing, I configured two cameras:
Driveway Camera
A standard outdoor camera monitoring the driveway.
Chicken Run Camera
A DIY Raspberry Pi Zero W camera overlooking my chicken run containing approximately 25-30 birds.
You can learn how to create your own local IP camera here: Build a Fully Local, Privacy-First RTSP IP Camera with any Raspberry Pi
The chicken run camera actually proved to be an excellent stress test because there was almost always movement somewhere in the frame.
Object Detection Strategy
One thing I appreciate about Frigate is that you don't need to track every possible object class.
For example, on the driveway camera I was primarily interested in vehicles, so I restricted the tracked objects accordingly.
Limiting object classes can often reduce clutter and create more useful events.
It's worth spending a few minutes thinking about what objects actually matter for each camera before enabling every available detection category.
AI Models Are Only as Smart as Their Training Data
During testing, I also spent some time experimenting with Frigate's optional bird classification capabilities.
The results were both educational and occasionally hilarious.
Frigate had no trouble detecting my chickens as birds. The interesting part happened when bird classification was enabled.
Some chickens were correctly identified as domestic chickens. Others were identified as wild turkeys, turkey vultures, and several other species. Given the variety of chicken breeds in the flock, a few mixed-breed birds, and less-than-perfect camera angles, the results weren't entirely surprising.
I also experimented with wildlife detection on my driveway camera. Since the standard model doesn't include a deer class, the whitetail deer that regularly wander through the property were often classified as horses or cows.
Rather than being a flaw, this serves as a useful reminder that AI models can only classify objects using the categories they were trained to recognize.
Factors such as:
Camera placement
Lighting
Object orientation
Image quality
Training data
all influence classification accuracy.
In practice, I found the object detection itself to be extremely reliable. The classification oddities mostly served as a reminder that even modern AI still sees the world a little differently than we do.
Storage Considerations
One area that is easy to overlook when building an NVR is storage.
Video recordings consume space quickly, especially when multiple cameras are involved.
For this build, recordings were stored on the NVMe SSD installed in the Mu Ultra platform. This provides both the capacity and performance needed for continuous recording while avoiding the limitations of smaller boot drives.
As your camera count and retention periods grow, you'll want to revisit your storage requirements accordingly.
Verifying NPU Acceleration
One of my goals for this project was utilizing the Mu Ultra's onboard NPU.
Fortunately, Frigate's logs indicated that OpenVINO successfully detected and used the NPU, and CPU utilization remained very low even while processing the camera feeds.
The Frigate metrics page is a great place to monitor performance and verify that your hardware acceleration is functioning properly.
This is one of the areas where the Mu Ultra really shines, allowing AI inference workloads to run locally without consuming large amounts of CPU resources.
Final Thoughts
What I like most about this build isn't necessarily the hardware itself.
It's how approachable the entire process becomes.
Historically, setting up Frigate often meant becoming familiar with Docker, Docker Compose, Linux administration, storage mapping, hardware acceleration, and container networking before you ever saw a single camera feed.
By combining:
Ventoy
Ubuntu
Homeio
Frigate
LattePanda Mu Ultra
the process becomes significantly more approachable while still delivering all the flexibility and capability of a traditional self-hosted deployment.
If you've already built a Home Assistant server and started asking harder questions about local AI, computer vision, and intelligent automation, the LattePanda Mu Ultra feels like a natural next step.
Combined with Frigate and Homeio, it provides a surprisingly approachable path to building a powerful AI-powered NVR without spending your weekend fighting Docker Compose files.

