Blame

68ae00 Carsten 2026-06-06 15:26:22
new
1
# Bildschirm-Dimmung – Labor23-Terminal
2
3
Dokumentation des Lösungswegs.
4
5
## Ausgangslage
6
7
- Anzeige: greetd → labwc (Wayland) → Ungoogled-Chromium im Kiosk-Modus
8
(User `kiosk`, UID 1001), zeigt eine Home-Assistant-Seite
9
10
---
11
12
## Diagnose – was NICHT funktioniert (und warum)
13
14
### 1. Hardware-Backlight – kein Device vorhanden
15
```bash
16
ls /sys/class/backlight/ # leer
17
```
18
19
### 2. DDC/CI – kein Monitor antwortet (bei internem LVDS nicht vorgesehen)
20
```bash
21
sudo apt install ddcutil
22
sudo modprobe i2c-dev
23
sudo ddcutil detect # -> No displays found
24
ddcutil environment # bestätigt: Konfiguration ok, trotzdem kein Display
25
```
26
27
### 3. Anschluss-Prüfung – Panel ist intern (LVDS)
28
```bash
29
grep -r . /sys/class/drm/*/status 2>/dev/null # card0-LVDS-1: connected
30
lsmod | grep -iE 'video|backlight' # 'video' geladen, kein backlight
31
echo $XDG_SESSION_TYPE # leer (Befehl lief auf Konsole/SSH)
32
```
33
34
### 4. Kernel-Parameter erzwingen – brachte ebenfalls kein Backlight-Device
35
Datei `/etc/default/grub`, Zeile `GRUB_CMDLINE_LINUX_DEFAULT` nacheinander mit
36
`acpi_backlight=vendor`, `acpi_backlight=native`, `acpi_backlight=video` getestet:
37
```bash
38
sudo cp /etc/default/grub /etc/default/grub.backup
39
sudo nano /etc/default/grub
40
sudo update-grub
41
sudo reboot
42
# nach jedem Reboot:
43
ls /sys/class/backlight/ # blieb leer
44
dmesg | grep -iE 'backlight|acpi_video' # keine Ausgabe
45
```
46
47
### 5. BIOS – keine Helligkeitsoption vorhanden
48
Phoenix AwardBIOS V6.00PG bietet keinerlei Brightness-/Backlight-/LVDS-Einstellung.
49
50
**Fazit der Diagnose:** Die Hintergrundbeleuchtung dieses Panels lässt sich vom
51
System aus nicht ansteuern (Hardware-/Firmware-Grenze). Lösung ist daher
52
**Software-Dimmen** über das Wayland-Gamma-Protokoll (labwc/wlroots unterstützt
53
`wlr-gamma-control-unstable-v1`).
54
55
---
56
57
## Lösung – Software-Dimmen über Wayland
58
59
### Schritt 1: Sitzung identifizieren
60
```bash
61
ps -eo user,pid,cmd | grep -iE 'labwc|chromium' | grep -v grep
62
ls -la /run/user/ # kiosk = UID 1001
63
loginctl list-sessions
64
ls -l /run/user/1001/wayland-* # -> wayland-0
65
```
66
67
### Schritt 2: Funktionstest mit gammastep (setzt nur festen Wert)
68
```bash
69
sudo apt install gammastep
70
# Test direkt mit Sitzungs-Umgebung:
71
XDG_RUNTIME_DIR=/run/user/1001 WAYLAND_DISPLAY=wayland-0 \
72
gammastep -m wayland -O 6500 -b 0.6
73
```
74
Bestätigte: Dimmen funktioniert grundsätzlich. Für dynamische/externe Steuerung
75
aber ungeeignet (kein Live-Ändern), daher wl-gammarelay-rs.
76
77
### Schritt 3: wl-gammarelay-rs installieren
78
(Vorkompilierte statische Binärdatei – kein Rust/Compiler auf dem Gerät nötig.)
79
80
```bash
81
install -m 755 wl-gammarelay-rs /usr/local/bin/wl-gammarelay-rs
82
/usr/local/bin/wl-gammarelay-rs --version
83
```
84
85
### Schritt 4: Daemon in der kiosk-Sitzung starten
86
```bash
87
runuser -u kiosk -- env XDG_RUNTIME_DIR=/run/user/1001 WAYLAND_DISPLAY=wayland-0 \
88
/usr/local/bin/wl-gammarelay-rs &
89
```
90
91
### Schritt 5: Helligkeit live setzen (funktionierender Steuerbefehl, als root)
92
```bash
93
busctl --machine=kiosk@.host --user \
94
set-property rs.wl-gammarelay / rs.wl.gammarelay Brightness d 0.5
95
# weitere Werte:
96
busctl --machine=kiosk@.host --user \
97
set-property rs.wl-gammarelay / rs.wl.gammarelay Brightness d 0.3 # dunkler
98
busctl --machine=kiosk@.host --user \
99
set-property rs.wl-gammarelay / rs.wl.gammarelay Brightness d 1 # voll
100
```
101
> Hinweis: `busctl --user` allein scheitert als root, weil `XDG_RUNTIME_DIR`
102
> fehlt. Deshalb `--machine=kiosk@.host` (greift auf den User-Bus von kiosk zu).
103
104
**Stand jetzt: Dimmen funktioniert flackerfrei und live. ✅**
105
106
---
107
108
## HTTP-Schnittstelle (für externe Steuerung / Home Assistant)
109
110
Skript `brightness-server.py` (reines Python, Standardbibliothek) – läuft in der
111
kiosk-Sitzung und nimmt Web-Anfragen entgegen.
112
113
```bash
114
install -m 755 brightness-server.py /opt/kiosk/brightness-server.py
115
116
# Test (Daemon muss laufen):
117
runuser -u kiosk -- env XDG_RUNTIME_DIR=/run/user/1001 \
118
python3 /opt/kiosk/brightness-server.py
119
120
# von einem anderen Gerät testen (IP anpassen):
121
curl "http://192.168.x.x:8080/set?b=0.3"
122
curl "http://192.168.x.x:8080/set?b=1"
123
curl "http://192.168.x.x:8080/get"
124
```
125
126
---
127
128
## Noch offen (nächste Schritte)
129
130
- [ ] wl-gammarelay-rs **und** brightness-server.py dauerhaft per labwc-Autostart
131
starten: `/home/kiosk/.config/labwc/autostart`
132
- [ ] Home Assistant: `rest_command` in `configuration.yaml` + Automationen
133
- [ ] Optional: Zugriffsschutz (Token im Server aktivieren)
134
135
---
136
137
## Kurz-Spickzettel (das Wesentliche)
138
139
| Zweck | Befehl |
140
|---|---|
141
| Daemon starten | `runuser -u kiosk -- env XDG_RUNTIME_DIR=/run/user/1001 WAYLAND_DISPLAY=wayland-0 /usr/local/bin/wl-gammarelay-rs &` |
142
| Helligkeit setzen | `busctl --machine=kiosk@.host --user set-property rs.wl-gammarelay / rs.wl.gammarelay Brightness d 0.5` |
143
| Helligkeit abfragen | `busctl --machine=kiosk@.host --user get-property rs.wl-gammarelay / rs.wl.gammarelay Brightness` |