Bildschirm-Dimmung – Labor23-Terminal
Dokumentation des Lösungswegs.
Ausgangslage
- Anzeige: greetd → labwc (Wayland) → Ungoogled-Chromium im Kiosk-Modus
(User
kiosk, UID 1001), zeigt eine Home-Assistant-Seite
Diagnose – was NICHT funktioniert (und warum)
1. Hardware-Backlight – kein Device vorhanden
ls /sys/class/backlight/ # leer
2. DDC/CI – kein Monitor antwortet (bei internem LVDS nicht vorgesehen)
sudo apt install ddcutil sudo modprobe i2c-dev sudo ddcutil detect # -> No displays found ddcutil environment # bestätigt: Konfiguration ok, trotzdem kein Display
3. Anschluss-Prüfung – Panel ist intern (LVDS)
grep -r . /sys/class/drm/*/status 2>/dev/null # card0-LVDS-1: connected lsmod | grep -iE 'video|backlight' # 'video' geladen, kein backlight echo $XDG_SESSION_TYPE # leer (Befehl lief auf Konsole/SSH)
4. Kernel-Parameter erzwingen – brachte ebenfalls kein Backlight-Device
Datei /etc/default/grub, Zeile GRUB_CMDLINE_LINUX_DEFAULT nacheinander mit
acpi_backlight=vendor, acpi_backlight=native, acpi_backlight=video getestet:
sudo cp /etc/default/grub /etc/default/grub.backup sudo nano /etc/default/grub sudo update-grub sudo reboot # nach jedem Reboot: ls /sys/class/backlight/ # blieb leer dmesg | grep -iE 'backlight|acpi_video' # keine Ausgabe
5. BIOS – keine Helligkeitsoption vorhanden
Phoenix AwardBIOS V6.00PG bietet keinerlei Brightness-/Backlight-/LVDS-Einstellung.
Fazit der Diagnose: Die Hintergrundbeleuchtung dieses Panels lässt sich vom
System aus nicht ansteuern (Hardware-/Firmware-Grenze). Lösung ist daher
Software-Dimmen über das Wayland-Gamma-Protokoll (labwc/wlroots unterstützt
wlr-gamma-control-unstable-v1).
Lösung – Software-Dimmen über Wayland
Schritt 1: Sitzung identifizieren
ps -eo user,pid,cmd | grep -iE 'labwc|chromium' | grep -v grep ls -la /run/user/ # kiosk = UID 1001 loginctl list-sessions ls -l /run/user/1001/wayland-* # -> wayland-0
Schritt 2: Funktionstest mit gammastep (setzt nur festen Wert)
sudo apt install gammastep # Test direkt mit Sitzungs-Umgebung: XDG_RUNTIME_DIR=/run/user/1001 WAYLAND_DISPLAY=wayland-0 \ gammastep -m wayland -O 6500 -b 0.6
Bestätigte: Dimmen funktioniert grundsätzlich. Für dynamische/externe Steuerung aber ungeeignet (kein Live-Ändern), daher wl-gammarelay-rs.
Schritt 3: wl-gammarelay-rs installieren
(Vorkompilierte statische Binärdatei – kein Rust/Compiler auf dem Gerät nötig.)
install -m 755 wl-gammarelay-rs /usr/local/bin/wl-gammarelay-rs /usr/local/bin/wl-gammarelay-rs --version
Schritt 4: Daemon in der kiosk-Sitzung starten
runuser -u kiosk -- env XDG_RUNTIME_DIR=/run/user/1001 WAYLAND_DISPLAY=wayland-0 \ /usr/local/bin/wl-gammarelay-rs &
Schritt 5: Helligkeit live setzen (funktionierender Steuerbefehl, als root)
busctl --machine=kiosk@.host --user \ set-property rs.wl-gammarelay / rs.wl.gammarelay Brightness d 0.5 # weitere Werte: busctl --machine=kiosk@.host --user \ set-property rs.wl-gammarelay / rs.wl.gammarelay Brightness d 0.3 # dunkler busctl --machine=kiosk@.host --user \ set-property rs.wl-gammarelay / rs.wl.gammarelay Brightness d 1 # voll
Hinweis:
busctl --userallein scheitert als root, weilXDG_RUNTIME_DIRfehlt. Deshalb--machine=kiosk@.host(greift auf den User-Bus von kiosk zu).
Stand jetzt: Dimmen funktioniert flackerfrei und live. ✅
HTTP-Schnittstelle (für externe Steuerung / Home Assistant)
Skript brightness-server.py (reines Python, Standardbibliothek) – läuft in der
kiosk-Sitzung und nimmt Web-Anfragen entgegen.
install -m 755 brightness-server.py /opt/kiosk/brightness-server.py # Test (Daemon muss laufen): runuser -u kiosk -- env XDG_RUNTIME_DIR=/run/user/1001 \ python3 /opt/kiosk/brightness-server.py # von einem anderen Gerät testen (IP anpassen): curl "http://192.168.x.x:8080/set?b=0.3" curl "http://192.168.x.x:8080/set?b=1" curl "http://192.168.x.x:8080/get"
Noch offen (nächste Schritte)
- wl-gammarelay-rs und brightness-server.py dauerhaft per labwc-Autostart
starten: `/home/kiosk/.config/labwc/autostart`
- Home Assistant:
rest_commandinconfiguration.yaml+ Automationen - Optional: Zugriffsschutz (Token im Server aktivieren)
Kurz-Spickzettel (das Wesentliche)
| Zweck | Befehl |
|---|---|
| Daemon starten | runuser -u kiosk -- env XDG_RUNTIME_DIR=/run/user/1001 WAYLAND_DISPLAY=wayland-0 /usr/local/bin/wl-gammarelay-rs & |
| Helligkeit setzen | busctl --machine=kiosk@.host --user set-property rs.wl-gammarelay / rs.wl.gammarelay Brightness d 0.5 |
| Helligkeit abfragen | busctl --machine=kiosk@.host --user get-property rs.wl-gammarelay / rs.wl.gammarelay Brightness |