Home Assistant connects IP cameras through RTSP, ONVIF, or HTTP streams using the Generic Camera integration — no subscription required.
Most security cameras ship with RTSP disabled by default — that one toggle is why they show up blank in Home Assistant. The fix takes about thirty seconds once you know where to look, and the same process works across Reolink, Aqara, Amcrest, and dozens of other brands. Setting up Home Assistant camera integration comes down to three steps: enable streaming on the camera, add it through the Generic Camera or ONVIF integration, and place the feed on your dashboard. No cloud subscription, no proprietary hub, and no limit on how many cameras you connect.
Setting Up Cameras in Home Assistant: What You Need First
Before touching any settings, confirm your camera supports one of three protocols Home Assistant recognizes natively. RTSP (Real-Time Streaming Protocol) is the most common — it sends a continuous video feed your Home Assistant server can consume. ONVIF Profile S covers discovery, PTZ control, and motion events. HTTP snapshot mode works for cameras that can serve a single still image but no live stream. Home Assistant’s Generic Camera integration documentation lists every supported stream format. If the camera offers none of these, it will need a local NVR like Frigate to bridge the gap.
You also need Home Assistant running on any supported OS — Core, Container, Supervised, or the full Home Assistant OS. Network-wise, keep your cameras and Home Assistant server on the same local subnet. RTSP traffic is unencrypted on most consumer cameras, so exposing the stream directly to the public internet carries real risk.
Enabling RTSP on Your Camera
RTSP is almost always turned off at the factory — that’s the single biggest reason a new camera won’t appear in Home Assistant. The setting lives inside the camera’s own mobile app or web interface, not in Home Assistant itself.
- Open the camera’s app (Reolink uses the E-link app; most others use their brand-specific app).
- Navigate to Settings → More Settings → RTSP.
- Toggle Enable RTSP to on.
- Copy this link — you will paste it into Home Assistant.
If the camera supports ONVIF instead, enable ONVIF in the same settings area. Home Assistant’s ONVIF integration will auto-discover the device on your network.
Adding a Camera Through the Generic Camera Integration
With the RTSP link in hand, the actual setup inside Home Assistant takes under two minutes.
- Go to Settings → Devices & Services → click Add Integration (bottom right).
- Search for Generic Camera and select it.
- Paste your RTSP link into the Stream Source URL field.
- Set Protocol to tcp for RTSP streams (tcp is more reliable than udp). Use http only for snapshot-only cameras.
- Enter the Username and Password if they were not embedded in the URL — without them you will see a “401 Unauthorized” error.
- Set Authentication to basic or digest to match your camera’s setting.
- Click Submit, then Finish. Rename the camera something clear like “Front Door” or “Garage.”
After submission, the camera entity appears in Home Assistant. If the feed stays black, the camera is now listed and you can move to the dashboard step.
Which Cameras Work Best With Home Assistant?
Not every camera integrates equally — some brands offer plug-and-play ONVIF support while others need workarounds. For a full list of hands-on tested options, see our tested camera recommendations for Home Assistant.
| Camera Model | Integration Method | Key Consideration |
|---|---|---|
| Reolink Argus 3 Pro | ONVIF / Generic Camera | Requires Home Hub Pro for battery-powered models |
| Aqara G3 Indoor | ONVIF / Generic Camera | Low latency, excellent HA support, includes PTZ |
| Amcrest | ONVIF / Generic Camera | Solid performance with or without Scrypted |
| SwitchBot Pan/Tilt Cam | Generic Camera | Fully compatible via RTSP stream |
| Wyze V3 | RTSP Beta (2025) | Native RTSP expected late 2025; older models lack it entirely |
| Ubiquiti | ONVIF | Requires local network access; not cloud-dependent |
| Reolink MagiCam | ONVIF | Local-only option keeps footage off the internet |
Adding the Camera Feed to Your Dashboard
Home Assistant offers two dashboard cards for live camera feeds. The Picture Glance card is the better choice for most setups because it supports live video, PTZ controls, and hides timestamp overlays. The built-in Image element is simpler but shows only snapshots by default — you have to switch it to “live” mode manually.
To add the Picture Glance card:
- Open your dashboard and click the Edit pencil icon (top right).
- Click Add Section (the plus icon), then Add Card.
- Search for Picture Glance and select it.
- Give it a Title matching the camera name.
- Set Camera Entity to the camera you just added.
- Set Camera View to live.
- Remove any auto-added entities like timestamps — they clutter the feed.
- Click Save.
Your camera feed should appear on the dashboard within a few seconds. If it stays blank, check that the RTSP link is correct and that the protocol is set to tcp rather than http.
Taking It Further With Frigate NVR
For motion detection, object recognition, and recorded clips, Frigate NVR is the standard open-source add-on. It consumes RTSP feeds from your cameras and runs AI-based detection locally — no cloud service needed.
Install Frigate from the Home Assistant Add-ons Store (Settings → Add-ons Store → search Frigate). After installation, go to Settings → Devices & Services → Add Integration → Frigate. The critical step is matching the MQTT server between Frigate and Home Assistant — if the two use different brokers, Frigate entities will never appear.
Common Setup Mistakes and How to Fix Them
| Problem | Cause | Fix |
|---|---|---|
| Black feed / no video | RTSP disabled on camera | Enable RTSP in the camera’s own app, not in Home Assistant |
| 401 Unauthorized error | Missing or wrong username/password | Embed credentials in the RTSP URL or enter them separately |
| Feed lags or drops | Protocol set to http instead of tcp | Change Stream Protocol to tcp |
| Frigate entities missing | MQTT server mismatch | Point both Frigate and HA to the same MQTT broker |
| PTZ controls don’t appear | Camera uses Generic Camera, not ONVIF | Switch to the ONVIF integration for PTZ support |
The most common pattern across all five problems: the camera side is misconfigured, not Home Assistant. Double-check the camera’s own RTSP or ONVIF settings before digging into HA logs.
What To Do When the Camera Still Won’t Connect
If you have enabled RTSP, used the correct protocol, entered the right credentials, and the feed remains blank, the camera may not support the stream format Home Assistant expects. Some budget cameras use proprietary streaming that only works with their own app. In that case, the most reliable path is to route the camera through a local NVR — Frigate or Scrypted — that can translate the stream into an RTSP feed Home Assistant understands. Battery-powered cameras (like the Reolink Argus 3 Pro without the Home Hub Pro) are another common blocker: they wake on motion and sleep between events, so they cannot maintain a persistent RTSP stream. A wired USB or PoE camera avoids that limitation entirely.
FAQs
Can I use any IP camera with Home Assistant?
Any camera that supports RTSP, ONVIF Profile S, or an HTTP snapshot URL can connect directly through the Generic Camera or ONVIF integration. Cameras using proprietary streaming protocols require a local NVR like Frigate to translate the feed before Home Assistant can use it.
Does Home Assistant camera integration require a paid subscription?
No. The core Generic Camera and ONVIF integrations are included free with every Home Assistant installation. Frigate NVR is also free and open-source. Some cloud-dependent camera brands may charge for RTSP access, but the Home Assistant side has no subscription cost.
How do I find my camera’s RTSP URL?
Enable RTSP in the camera’s own mobile app or web interface. The app will display the complete RTSP link after you toggle the setting on. It typically looks like rtsp://username:password@camera-ip:554/stream1. If the app does not show it, check the camera’s documentation or online support page for the default RTSP path.
Why does my camera feed say “401 Unauthorized”?
The RTSP URL or integration settings are missing the correct username and password. Either embed them in the URL (rtsp://user:pass@ip:554/...) or enter them in the Authentication fields when configuring the Generic Camera integration. The credentials must match the camera’s own user settings.
Can I get motion detection without using Frigate?
Yes. The ONVIF integration supports motion events natively for cameras that advertise ONVIF Profile S. Some camera brands also send motion alerts through their own integrations. Frigate is only necessary if you want AI-based object detection (person, car, animal) rather than simple pixel-change motion sensing.
References & Sources
- Home Assistant Docs. “Generic Camera Integration.” Official HA documentation for RTSP, HTTP, and snapshot camera streams.
- Frigate Docs. “Home Assistant Integration.” Setup guide for Frigate NVR with MQTT and media_source configuration.
- Home Assistant Community. “Recommendation for Inside Camera that Works with Home Assistant.” User discussion on compatible indoor camera models and Picture Glance card setup.
- Reddit r/homeassistant. “Adding Cameras to HA — What Actually Works.” Community thread on real-world camera compatibility and Reolink integration.
- Wyze Forums. “Native Home Assistant Integration for Wyze Products.” Official Wyze thread on upcoming RTSP beta and 2025 rollout plans.
