OpenPetCam / Guides

Build a pet camera with Thingino firmware

Short answer: flash a supported pan/tilt camera with Thingino, rent a small Ubuntu 24.04 server (an AWS Lightsail nano is about $5 a month), and run OpenPetCam's ./setup. The camera connects out to your server over WireGuard; your phone opens the app from the server. About 30 minutes, no coding.

What Thingino is, and why Thingino suits a pet camera

Thingino is open-source firmware for cameras built on Ingenic chips. Thingino replaces the vendor firmware, so the camera stops talking to the vendor's cloud and gives you RTSP video, a web page, motor control and WireGuard. OpenPetCam uses all four: video for live view and detection, the motors to go looking for your pet, and WireGuard so nothing at home has to be opened to the internet.

What you need

PartWhat works
CameraA Thingino-supported pan/tilt camera. Reference: Cinnado D1 (Ingenic T23N). Fixed cameras give live view and alerts but can't search.
ServerUbuntu 24.04 with a public IP. 512 MB RAM is enough; OpenPetCam uses about 5% of one CPU core.
ComputerMac or Linux with git, ssh and rsync, for the installer.
PhoneAny iPhone or Android browser. The app installs to the Home Screen.

Step 1: flash the camera

Follow the instructions for your model on thingino.com. Join the camera to your Wi-Fi and set its root password in the setup portal. Keep that password; you'll type that password on the server later.

Step 2: create the server

Create the server and open these ports in its cloud firewall: TCP 22, 80, 443, and UDP 51820 (WireGuard) and UDP 8189 (WebRTC video). Note its public IP and SSH key.

Step 3: run the installer

git clone https://github.com/crimeacs/OpenPetCam.git && cd OpenPetCam
git checkout "$(git describe --tags --abbrev=0)"
./setup

./setup asks for the server's IP, SSH key, time zone and your pet's name, installs MediaMTX, Caddy, WireGuard and the detector, and prints the values for the next step.

Step 4: connect the camera with WireGuard

In the camera's Thingino web page, open WireGuard and enter what ./setup printed:

FieldValue
Address10.77.0.2/24
Endpoint<server IP>:51820
Peer public keythe server key ./setup printed
Allowed IPs10.77.0.1/32
Keepalive25

Paste the camera's own public key back into ./setup. Because the camera dials out, your router needs no port forwarding.

Step 5: open the app on your phone

Set the app password when ./setup asks (you type the password on the server, and your computer never stores it), then open the address ./setup prints. In Safari choose Share → Add to Home Screen. The app then runs full screen and can send alerts.

Another camera model?

Most Thingino pan/tilt cameras work. Motor ranges differ, so run tools/calibrate.py once. If yours works (or doesn't), tell us in an issue. Camera reports are the most useful thing you can share.

Get OpenPetCam on GitHub