#!/bin/sh
# picam2_watchdog.sh
# 2025-02-25
# by Gernot Walzl
PICAM_SERVICE=${PICAM_SERVICE:-'picam2_surveillance'}
reload_module () {
local KMOD="$1"
if lsmod | grep -q "^${KMOD} "; then
rmmod "$KMOD"
modprobe "$KMOD"
fi
}
journalctl -u "$PICAM_SERVICE" -f | while read LINE; do
if echo "$LINE" | grep -q 'Camera frontend has timed out'; then
systemctl stop "$PICAM_SERVICE"
reload_module bcm2835_codec
reload_module bcm2835_isp
reload_module bcm2835_unicam
reload_module bcm2835_v4l2
systemctl start "$PICAM_SERVICE"
fi
done