v0.2.241
New: Wired Raspberry Pi camera support.
The dashboard now supports a Raspberry Pi Camera Module or Arducam attached
directly to the Pi over the CSI ribbon cable, as an alternative to an RTSP
IP camera. Useful when there's no convenient IP camera at the feeder spot,
or when WiFi reliability rules out streaming.
What's in this release
Camera
- New "Camera type" dropdown in Settings → Camera: choose between
RTSP / IP camera (the historical default — Tapo, Reolink, etc.) and
Pi camera (CSI ribbon cable). - Pi camera path captures via ffmpeg's v4l2 input — no new dependencies
inside the container; v4l2 compat is on by default on Pi OS Bookworm. - "Test camera" button on the settings page routes to whichever backend is
currently selected, so you can verify before saving.
Compose
docker-compose.ymlships with a commented-outdevices:+group_add:
block at the bottom of thebirdwatchservice. Uncomment those lines
if you're enabling the Pi camera; RTSP-only installs leave them alone.
Docs
- README has a new "Using a Pi camera (CSI ribbon cable)" section covering
ribbon orientation, enabling the camera interface with raspi-config,
verifying withlibcamera-hello --list-cameras, exposing the device
into the container, and switching the camera type from the dashboard.
What stays the same
The existing pipeline — frame-diff motion detection, identify, best-frame,
overlay, clip recording, notifications, community share — works on Pi
camera frames unchanged. Only the bytes-on-the-wire layer is different.
ONVIF motion events still apply to RTSP cameras only (wired Pi cameras
don't speak ONVIF). Frame-diff motion detection (Settings → Detection →
Motion threshold) is the right default for the Pi camera path.
Upgrading
Existing installs: pull the latest compose + image as usual. The Pi
camera fields show up in Settings → Camera automatically; the default
camera type stays RTSP, so nothing changes unless you switch.
Switching an existing install to Pi camera:
- Plug the ribbon cable with the Pi powered off.
- Uncomment the
devices:+group_add:blocks in your
~/birdwatch/docker-compose.yml. docker compose up -dto recreate with the device passthrough.- Settings → Camera → Camera type → Pi camera → enter
/dev/video0
→ Test camera → Save.