Installing HKCam on a raspberry pi with systemd
The documentation for manually installing HKCam on a Raspberry PI are frustratingly obscured in an Ansible playbook. This is what I did to get it up and running manually.
My System Info:
$ cat /etc/debian_version
9.8
$ cat /etc/issue
Raspbian GNU/Linux 9 \n \l
Install Process:
# Installing ` raspberrypi-kernel-headers` prevents the
# "kernel headers for this kernel does not seem to be installed."
# message from appearing when installing v4l2loopback with apt-get:
#
# Module build for kernel 4.14.98-v7+ was skipped since the
# kernel headers for this kernel does not seem to be installed.
#
# Also sometimes this error is shown when attempting to attach with ` modprobe v4l2loopback`
# modprobe: FATAL: Module v4l2loopback not found in directory /lib/modules/4.14.98-v7+
$ sudo apt install raspberrypi-kernel-headers
$ sudo apt install v4l2loopback
$ sudo apt install ffmpeg
$ echo 'options v4l2loopback video_nr=1' | sudo tee -a /etc/modprobe.d/v4l2loopback.conf
$ sudo modprobe v4l2loopback
$ echo v4l2loopback | sudo tee -a /etc/modules
$ sudo modprobe bcm2835-v4l2
$ echo bcm2835-v4l2 | sudo tee -a /etc/modules
# visit https://github.com/brutella/hkcam/releases and download a tar.gz
$ wget https://github.com/brutella/hkcam/releases/download/v0.0.8/hkcam-v0.0.8_linux_armhf.tar.gz
$ tar xzf hkcam-v0.0.8_linux_armhf.tar.gz
$ cd hkcam-v0.0.8_linux_armhf/
$ sudo cp usr/bin/hkcam /usr/local/bin
$ sudo adduser --system --ingroup video hkcam
Systemd Service Configuration:
# /etc/systemd/system/hkcam.service
[Unit]
Description = HKcam HomeKit Camera
After = syslog.target network-online.target
[Service]
Type = simple
User = hkcam
WorkingDirectory = /home/hkcam
ExecStart = /usr/local/bin/hkcam
Restart = always
RestartSec = 10
KillMode = process
[Install]
WantedBy = multi-user.target
Run script
#!/bin/bash
# /etc/hkcam
# set the video4linux ctl parameters
v4l2-ctl --set-fmt-video = width = 1280,height= 720,pixelformat= YU12
v4l2-ctl -c video_bitrate = 1000000
# exec over to hkcam
exec /usr/local/bin/hkcam --min_video_bitrate = 500
Activate the service:
$ sudo systemctl daemon-reload
$ sudo systemctl start hkcam
$ sudo systemctl enable hkcam