The Alert I Actually Wanted
My driveway camera used to send me the same notification whether it was the Amazon van, a neighbor turning around, or my brother arriving for dinner. “Car detected on driveway.” That’s it. The only way to know which was to open the app and watch the clip — so I was opening the app 15 to 20 times a day for events I didn’t care about, and missing the ones that mattered.
Detection zones cut the volume, and face recognition made person alerts useful. Cars stayed opaque. I wanted “Brother arrived” and “Unknown vehicle on driveway,” and nothing else. Frigate’s license plate recognition, added in 0.14 and dialed in through 0.16, finally makes that possible — and unlike commercial LPR services that ship your plate reads to someone else’s cloud, it runs entirely on your own hardware.
What Frigate’s LPR Actually Does
It’s built in — no extra containers, no external OCR API, no plate-reader subscription. When a tracked vehicle enters the frame, Frigate crops the plate region, runs it through a local OCR model, and attaches the recognized string as a sub-label on the event. If the plate matches something in your known_plates list, the event gets that name instead of the raw characters. It’s fast enough for live notifications — the plate usually resolves within a second or two, well before the car stops moving — and because the sub-label rides along with every other Frigate event, any client that consumes Frigate events sees it too. That’s what makes the iPhone side work without extra plumbing.
The Camera Setup That Actually Reads Plates
Here’s the part nobody tells you: a general 4MP camera pointed at your driveway will detect a vehicle fine and fail to read the plate more than half the time. LPR needs pixels on the plate itself — the rule of thumb is at least 80 pixels wide at capture. On a typical residential driveway, that means either a 4K sensor with a wide field of view, or a second dedicated camera zoomed on the approach.
I run a 5MP Reolink at the end of the driveway, tilted so plates cross the frame roughly head-on. Angle matters more than resolution — a plate at 45 degrees turns into a parallelogram OCR struggles with. Head-on within 20 degrees is the sweet spot. Retro-reflective plates return so much IR they usually read better at night than in daylight glare. The one setting worth changing on any Reolink: bump the shutter from 1/25 to 1/500, or plates on a moving car smear into a blur.
The Config, Trimmed Down
In Frigate’s YAML, LPR lives under its own top-level block. Enable lpr:, then under it known_plates: as a map from a friendly name to a list of plate strings — one list per name, because most plates in real life get read as two or three slight variations depending on lighting. I have three entries for my own car, four for my brother’s, and one each for two friends who visit often. Frigate treats any string in a list as the same car and stamps the event with the name.
One gotcha: LPR is scoped to cameras where you enable it under the camera’s objects block. I turned it on only for the driveway camera. The other four don’t need to spend inference time on plates that will never appear in frame.
How It Looks on iPhone With Lumen
Lumen picks up the plate sub-label through the same MQTT event stream as everything else — no plate-specific config on the app side. In the event feed, a recognized car shows the name (“Brother”) next to the object type. A car with a read plate but no matching name shows the raw string. A car whose plate couldn’t be read falls back to the generic “car” label.
On the push side, the notification title shows the friendly name, so I read “Brother arrived — driveway” on the lock screen and know I don’t need to open anything. I have pushes enabled only for unknown vehicles on the driveway camera — a per-camera, per-sub-label filter in Lumen’s notification settings. Named vehicles land silently in the event feed. The timeline also filters by plate string, which turned out unexpectedly useful the day I wondered how often a specific delivery service was actually showing up.
Lumen — the native Frigate NVR companion for iPhone, iPad, Mac, and Apple Watch
Named plate alerts, per-camera notification filters, live streams, multi-camera playback, and geofencing. Free to download.
Download FreeThe Edge Cases Worth Knowing
A few things the docs won’t warn you about. Frigate’s LPR handles standard EU and US plates well, but dealer temporary plates and stylized personalized plates fail more often. Dirty plates fail almost always. Rain on the camera lens matters more than rain on the plate itself. My read accuracy is around 92% for known vehicles in daylight, dropping to 78% at night — good enough that I trust the named notifications. One tip: watch the event log for the first week and add read variations to the same known_plate name. My brother’s plate got read three different ways in the first ten arrivals; adding all three made him a named vehicle from arrival eleven onward.
The Bigger Point
Commercial LPR is everywhere now — toll roads, parking garages, supermarket entrances — and almost all of it uploads the plate string to a service and stores it somewhere you don’t control. Frigate’s local LPR is the opposite: the plate is read on the box in your basement, matched against a list you wrote yourself, and the sub-label never leaves your network unless you send it somewhere. For a home camera, that’s the version I want. I don’t want a company knowing what time my brother arrives for dinner. I want a lock-screen notification that says he did, and I want it to stay between my camera and my phone. After two months, I’d put this right behind detection zones and face recognition as the third change that made my camera alerts genuinely useful instead of noise.