# Vigilar Kiosk — Raspberry Pi TV Display
Turn a Raspberry Pi into a dedicated security-camera display showing the
Vigilar 2x2 camera grid on any HDMI-connected TV.
## Hardware
- Raspberry Pi Zero 2W, 3, 4, or 5
- Micro-HDMI (Zero 2W) or HDMI cable to TV
- Power supply (5V, 2.5A+)
- MicroSD card (8 GB+)
## Quick Start
### 1. Flash Raspberry Pi OS
1. Download **Raspberry Pi OS Lite (64-bit)** (no desktop) from
.
2. Flash to MicroSD with Raspberry Pi Imager.
3. In Imager's settings (gear icon), enable SSH and set a password for the
`pi` user. Optionally configure Wi-Fi.
4. Boot the Pi.
### 2. Copy kiosk files to the Pi
From the machine running Vigilar:
```bash
scp -r kiosk/ pi@:~/kiosk/
```
### 3. Run setup
```bash
ssh pi@
cd ~/kiosk
sudo bash setup_kiosk.sh
```
The script will:
- Install X11, Chromium, and unclutter
- Create a `vigilar` user
- Ask for the Vigilar server URL (default: `https://vigilar.local:49735/kiosk/`)
- Configure auto-login and kiosk auto-start via systemd
- Set GPU memory, screen blanking, hostname, and SSH
### 4. Reboot
```bash
sudo reboot
```
The Pi will boot directly into the fullscreen camera grid.
## Reconfiguring
Change URL, rotation, or resolution without re-running full setup:
```bash
# Interactive
sudo ./update_kiosk.sh
# Non-interactive
sudo ./update_kiosk.sh --url https://192.168.1.50:49735/kiosk/ --restart
# Change rotation (requires reboot)
sudo ./update_kiosk.sh --rotation 90
sudo reboot
```
## Files
| File | Purpose |
|------|---------|
| `setup_kiosk.sh` | Full initial setup script |
| `update_kiosk.sh` | Reconfigure URL/rotation/resolution |
| `kiosk.service` | systemd unit (installed by setup) |
| `kiosk_config.txt` | Template config (copied to Pi) |
On the Pi after setup:
| File | Purpose |
|------|---------|
| `/home/vigilar/kiosk_config.txt` | Active configuration |
| `/home/vigilar/.xinitrc` | X session startup |
| `/home/vigilar/.bash_profile` | Fallback auto-start |
| `/etc/systemd/system/vigilar-kiosk.service` | systemd service |
## Management
```bash
# Check status
sudo systemctl status vigilar-kiosk
# View logs
sudo journalctl -u vigilar-kiosk -f
# Restart kiosk
sudo systemctl restart vigilar-kiosk
# Stop kiosk
sudo systemctl stop vigilar-kiosk
# Switch from systemd to .bash_profile method
sudo systemctl disable vigilar-kiosk
# Then uncomment 'exec startx' in /home/vigilar/.bash_profile
```
## Troubleshooting
### Black screen after boot
- Check that the Vigilar server is reachable: `curl -k https://vigilar.local:49735/kiosk/`
- Check service logs: `sudo journalctl -u vigilar-kiosk --no-pager -n 50`
- Verify X can start: `sudo -u vigilar startx -- -nocursor`
### "Cannot open display" errors
- Ensure the Pi is booting to tty1 and the service has TTY access
- Check: `sudo systemctl status vigilar-kiosk`
### Certificate errors in Chromium
- The `.xinitrc` includes `--ignore-certificate-errors` for self-signed certs
- For production, use a proper certificate on the Vigilar server
### Screen stays on when it should sleep
- Screen blanking is deliberately disabled for a security kiosk
- To re-enable: remove `consoleblank=0` from cmdline.txt, remove `xset` lines from `.xinitrc`
### Resolution or rotation not applied
- Rotation and resolution set in `config.txt` require a reboot
- Check current settings: `cat /boot/firmware/config.txt` (Bookworm) or `cat /boot/config.txt`
### Low memory on Pi Zero 2W
- Chromium with `--incognito` and `--disk-cache-dir=/dev/null` minimises memory use
- The setup sets `gpu_mem=128` which is a good balance
- If OOM occurs, try `gpu_mem=64` in config.txt