Getting Started Cameras & Video Detection & Recording Automation & Events Actions Integration & Connectivity Network & Discovery AI & Remote Control MQTT Modbus ZeroMQ System & Administration Comparisons Use Cases Troubleshooting About & Legal
Home / Documentation / Raspberry Pi camera server: ONVIF/RTSP recording, YOLO, and MQTT on ARM
Knowledge base Hardware guide 5 min read

Raspberry Pi camera server

Turn a Raspberry Pi 4 or 5 into a multi-camera edge node with Banalytics.

A Raspberry Pi 4 or 5 can act as a fully featured edge camera server when paired with Banalytics on Linux ARM64. It records ONVIF/RTSP/USB cameras, runs CPU-based YOLO on a few low-resolution streams, publishes events over MQTT, and is reachable in the browser via WebRTC P2P with no public IP. This guide covers hardware sizing, install steps, and the limits to expect.


Recommended hardware

  • Raspberry Pi 4 Model B, 4 GB or 8 GB RAM — comfortable with 2–4 cameras at 1080p / 10–15 FPS, motion detection on all, YOLO on one substream.
  • Raspberry Pi 5, 8 GB RAM — 4–6 cameras at 1080p; YOLO on 1–2 substreams.
  • Power — official 5V/3A (Pi 4) or 5V/5A (Pi 5) supply. Underpowered USB chargers cause throttling and dropped frames.
  • Storage — USB 3 SSD for recordings (microSD wears out under continuous writes). 256 GB–2 TB depending on retention.
  • Networking — gigabit Ethernet to the switch; PoE+ HAT optional. Wi-Fi is acceptable for the Pi-to-LAN link but cameras should be wired or PoE.
  • Cooling — active cooler or case fan, especially on Pi 5 with YOLO.

Operating system

Raspberry Pi OS 64-bit (Bookworm) or Ubuntu Server 22.04+ ARM64. The Banalytics agent runs on either. Avoid 32-bit Raspberry Pi OS — the Banalytics archive is built for ARM64.

Install Banalytics on the Pi

  1. SSH into the Pi and create a working directory: mkdir -p ~/banalytics && cd ~/banalytics.
  2. Download the Linux ARM64 archive: wget https://storage.googleapis.com/banalytics-packages/banalytics-box/linux-arm64/linux-arm64-1.0.0.tar.gz.
  3. Extract it: tar xzf linux-arm64-1.0.0.tar.gz.
  4. Run the installer: sudo ./install.sh. The script installs the agent as a systemd service.
  5. Open the local agent console (default port shown by the installer) in a browser, copy the server UUID.
  6. Register the server in console.banalytics.live with the UUID and enter the access code.
  7. Add cameras: ONVIF discovery scans the LAN; or add an RTSP URL manually.

For mounted SSD storage, point file storage at the SSD mount point in the Banalytics console — not at the SD card.

Realistic limits

WorkloadPi 4 (8 GB)Pi 5 (8 GB)
Pass-through recording (1080p H.264)6–8 streams10–14 streams
Motion detection (1080p)3–4 streams5–7 streams
YOLO (CPU, 416×416)1 stream, ~2–3 FPS1–2 streams, ~5–8 FPS
Concurrent browser viewers (WebRTC)2–34–6

For sustained AI on more cameras, run YOLO on a separate x86 box and let the Pi handle ingestion. Banalytics supports linking multiple agents into one console.

Tuning the Pi for camera workloads

  • Prefer cameras' substreams (640×360) for motion detection and YOLO. Save the main stream only for recording. See Media profiles for ONVIF.
  • Set recording to motion-only or YOLO-class-only to cut SSD writes. See Motion recording.
  • Keep cameras and the Pi on a wired VLAN; multicast Wi-Fi traffic from cheap consumer cameras is a major source of dropped frames.
  • Tail journalctl -u banalytics-agent while ramping up cameras — the agent logs back-pressure on CPU or disk.

Edge node on a single board

Free Community tier. ARM64 archive, single-script install.