Commit 68ae00

2026-06-06 15:26:22 Carsten: new
/dev/null .. labor23/01_infrastruktur/terminal/bildschirm-dimmung.md
@@ 0,0 1,143 @@
+ # 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
+ ```bash
+ ls /sys/class/backlight/ # leer
+ ```
+
+ ### 2. DDC/CI – kein Monitor antwortet (bei internem LVDS nicht vorgesehen)
+ ```bash
+ 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)
+ ```bash
+ 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:
+ ```bash
+ 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
+ ```bash
+ 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)
+ ```bash
+ 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.)
+
+ ```bash
+ 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
+ ```bash
+ 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)
+ ```bash
+ 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 --user` allein scheitert als root, weil `XDG_RUNTIME_DIR`
+ > fehlt. 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.
+
+ ```bash
+ 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_command` in `configuration.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` |
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9