build: make the receiver service headless-console ready

The receiver does not need a window manager: SDL3's KMSDRM backend
renders straight to the kernel display pipeline, which is the right
setup for a small-board appliance. But a systemd system service has
no controlling terminal, and SDL's KMSDRM backend expects one for
its VT handling — so the headless path would have failed at boot.
Give the unit StandardInput=tty with TTYPath=/dev/tty1 (harmless in
desktop mode), and document the headless recipe in the unit, the
install script output, and the RUNBOOK: Raspberry Pi OS Lite with
Console Autologin, no desktop enabled (a compositor would hold the
DRM master), and consoleblank=0.
This commit is contained in:
2026-09-07 13:11:02 +02:00
parent 6e68300d05
commit 47905004eb
3 changed files with 38 additions and 5 deletions
+8 -4
View File
@@ -138,13 +138,17 @@ The receiver is installed and starts automatically at boot.
sudo systemctl disable --now screencast-receiver # turn autostart off
Notes for small boards (e.g. Pi Zero 2 W):
- No window manager is required: the receiver renders directly to the
kernel display pipeline (SDL KMSDRM). Use Raspberry Pi OS Lite with
Console Autologin (raspi-config) and no desktop enabled — a running
compositor would own the display and the receiver could not start.
- Disable console blanking so the picture never goes dark: add
consoleblank=0 to /boot/firmware/cmdline.txt and reboot.
- Decoding is software H.264; expect smooth playback for small streams
and a lower frame rate at high resolutions.
- Stop the receiver via systemctl (never kill -9; stale mDNS records
would break discovery for ~75 minutes).
- The service runs on the headless console via KMSDRM. On a desktop
session instead, edit /etc/systemd/system/screencast-receiver.service:
uncomment the Environment lines and point XDG_RUNTIME_DIR at the
session owner's /run/user/<uid> (see the comments in that file).
- On a desktop session instead, edit the installed service file and
uncomment the Environment lines for XDG_RUNTIME_DIR/WAYLAND_DISPLAY.
- avahi-daemon must stay enabled; it is what senders discover.
EOF