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
+16
View File
@@ -90,6 +90,22 @@ Verified behavior: `systemctl stop` results in a clean exit (success,
no restart) and the mDNS announcement is withdrawn — senders stop finding
the receiver immediately.
## Headless receiver (no window manager)
The receiver does not need X11, Wayland, or any window manager: SDL3's
KMSDRM backend renders straight to the kernel display pipeline. This is
the recommended setup for small boards (Raspberry Pi OS **Lite**):
1. `sudo raspi-config` → System Options → Boot → **Console Autologin**.
2. No desktop may be enabled — a running compositor holds the DRM master
and the receiver cannot take it (the two modes are mutually exclusive).
3. Disable console blanking: append `consoleblank=0` to
`/boot/firmware/cmdline.txt` and reboot.
A window manager only comes with the desktop-session alternative, where
the receiver runs inside it (uncomment the `Environment=` lines in the
service file as described above).
## Sender / receiver loopback (Phase 5, manual)
Two terminals on the same desktop session: