Commit 325324

2026-06-06 15:14:43 Carsten: Labor23-Terminal deleted.
labor23/01_infrastruktur/hardware-inventar/geräteliste/labor23-terminal.md .. /dev/null
@@ 1,9 0,0 @@
- # Shuttle Touch-Terminal (Labor23-Terminal)
-
- ## Hardware
-
- - Gerät: Shuttle Touch-PC (OEM Holco Enterprise), Intel Atom 330
- - Grafik/Chipsatz: Intel 945GC, GMA 950 (`82945G`), Treiber `i915`
- - Display: fest verbautes **LVDS-Panel** (CCFL-Beleuchtung)
- - BIOS: Phoenix AwardBIOS V6.00PG
- - OS: Debian 13, Kernel 6.12
labor23/01_infrastruktur/hardware-inventar/geräteliste/labor23-terminal/bildschirm-dimmung.md .. /dev/null
@@ 1,147 0,0 @@
- # Bildschirm-Dimmung – Shuttle Touch-Terminal (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.)
-
- [wl-gammarelay-rs](./wl-gammarelay-rs)
-
- ```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)
-
- [brightness-server.py](./brightness-server.py)
-
- 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` |
labor23/01_infrastruktur/hardware-inventar/geräteliste/labor23-terminal/bildschirm-dimmung/brightness-server.py .. /dev/null
@@ 1,128 0,0 @@
- #!/usr/bin/env python3
- """
- Einfacher HTTP-Server zum Steuern der Bildschirmhelligkeit (und Farbtemperatur)
- über wl-gammarelay-rs.
-
- Aufruf-Beispiele (z. B. aus Home Assistant per rest_command):
- GET /set?b=0.5 -> Helligkeit auf 50 %
- GET /set?b=0.3&t=4000 -> Helligkeit 30 %, Farbtemperatur 4000 K
- GET /get -> aktuelle Helligkeit als Zahl (z. B. 0.5)
- GET / -> kurze Hilfe / Status
-
- Laeuft als Benutzer 'kiosk' INNERHALB der labwc-Sitzung, damit 'busctl --user'
- den Daemon direkt erreicht (XDG_RUNTIME_DIR ist dann korrekt gesetzt).
-
- Optional: einfacher Schutz per Token. Wenn unten TOKEN gesetzt ist, muss jede
- Anfrage ?token=... mitschicken. Standard: aus (leer).
- """
-
- import os
- import subprocess
- from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer
- from urllib.parse import urlparse, parse_qs
-
- # ----- Einstellungen (bei Bedarf anpassen) -----
- HOST = "0.0.0.0" # 0.0.0.0 = im ganzen LAN erreichbar
- PORT = 8080
- TOKEN = "" # z. B. "geheim123" setzen, dann ?token=geheim123 noetig
- DBUS_DEST = "rs.wl-gammarelay"
- DBUS_PATH = "/"
- DBUS_IFACE = "rs.wl.gammarelay"
-
- # Falls XDG_RUNTIME_DIR aus irgendeinem Grund fehlt, sinnvollen Default setzen
- # (1001 ist die UID des kiosk-Users auf diesem Geraet).
- os.environ.setdefault("XDG_RUNTIME_DIR", "/run/user/1001")
-
-
- def busctl(*args):
- """Ruft busctl --user auf und gibt (ok, ausgabe) zurueck."""
- cmd = ["busctl", "--user", *args]
- try:
- out = subprocess.run(
- cmd, capture_output=True, text=True, timeout=5
- )
- if out.returncode != 0:
- return False, (out.stderr or out.stdout).strip()
- return True, out.stdout.strip()
- except Exception as e:
- return False, str(e)
-
-
- def set_brightness(value):
- value = max(0.0, min(1.0, float(value)))
- return busctl("set-property", DBUS_DEST, DBUS_PATH, DBUS_IFACE,
- "Brightness", "d", f"{value:.3f}")
-
-
- def set_temperature(kelvin):
- kelvin = int(max(1000, min(10000, int(kelvin))))
- return busctl("set-property", DBUS_DEST, DBUS_PATH, DBUS_IFACE,
- "Temperature", "q", str(kelvin))
-
-
- def get_brightness():
- ok, out = busctl("get-property", DBUS_DEST, DBUS_PATH, DBUS_IFACE,
- "Brightness")
- if not ok:
- return ok, out
- # Ausgabe sieht aus wie: d 0.5
- parts = out.split()
- return True, parts[-1] if parts else out
-
-
- class Handler(BaseHTTPRequestHandler):
- def _reply(self, code, text):
- body = (text + "\n").encode()
- self.send_response(code)
- self.send_header("Content-Type", "text/plain; charset=utf-8")
- self.send_header("Content-Length", str(len(body)))
- self.end_headers()
- self.wfile.write(body)
-
- def do_GET(self):
- u = urlparse(self.path)
- q = parse_qs(u.query)
-
- if TOKEN and q.get("token", [""])[0] != TOKEN:
- return self._reply(403, "forbidden")
-
- if u.path == "/" or u.path == "/help":
- return self._reply(
- 200,
- "brightness-server\n"
- "/set?b=0.5 Helligkeit (0.0-1.0)\n"
- "/set?b=0.3&t=4000 Helligkeit + Temperatur (K)\n"
- "/get aktuelle Helligkeit",
- )
-
- if u.path == "/get":
- ok, out = get_brightness()
- return self._reply(200 if ok else 500, out)
-
- if u.path == "/set":
- results = []
- if "b" in q:
- ok, out = set_brightness(q["b"][0])
- results.append("brightness ok" if ok else f"brightness FEHLER: {out}")
- if "t" in q:
- ok, out = set_temperature(q["t"][0])
- results.append("temp ok" if ok else f"temp FEHLER: {out}")
- if not results:
- return self._reply(400, "fehlender Parameter b oder t")
- failed = any("FEHLER" in r for r in results)
- return self._reply(500 if failed else 200, "; ".join(results))
-
- return self._reply(404, "unbekannter Pfad")
-
- # Logging in der Konsole knapp halten
- def log_message(self, fmt, *args):
- pass
-
-
- if __name__ == "__main__":
- srv = ThreadingHTTPServer((HOST, PORT), Handler)
- print(f"brightness-server laeuft auf {HOST}:{PORT}")
- try:
- srv.serve_forever()
- except KeyboardInterrupt:
- pass
labor23/01_infrastruktur/hardware-inventar/geräteliste/labor23-terminal/bildschirm-dimmung/wl-gammarelay-rs .. /dev/null
labor23/01_infrastruktur/hardware-inventar/geräteliste/labor23-terminal/grundstruktur.md .. /dev/null
@@ 1,316 0,0 @@
- # Grundstruktur
-
- # Home-Assistant-Kiosk auf Debian 13 (Trixie)
-
- Einrichtungs-Dokumentation – vom blanken Minimal-Debian bis zum aktuellen Stand.
-
- ## Überblick
-
- **Ziel:** Ein schwacher Rechner zeigt dauerhaft das Home-Assistant-Dashboard auf einem Touch-Panel an.
-
- **Boot-Kette:** `systemd → greetd (Autologin) → labwc (Wayland-Compositor) → ungoogled-chromium (Flatpak) → HA-Dashboard`
-
- **Touch-Hardware:** eGalax / D-WAV Titan6001 (USB-ID `0eef:0001`)
-
- **Hinweise zur Nutzung dieser Anleitung:**
- - Alle Befehle werden **als root** ausgeführt (auf dem System ist `sudo` nicht zwingend nötig).
- - Die HA-Adresse ist hier `http:///`.
- - Die Touch-Kalibrierungswerte (`0eef:0001`, Bereichsgrenzen) stammen von genau dieser Hardware. Bei anderem Panel neu ermitteln (siehe Abschnitt „Diagnose").
- - **Wichtig:** Die Kiosk-Sitzung startet nur bei einem **echten Reboot**, nicht bei `systemctl restart greetd` (das landet im Greeter/Konsole).
-
- ---
-
- ## 1. APT-Quellen prüfen
- ```
- apt-get update
- apt-get full-upgrade -y
- ```
-
- ---
-
- ## 2. Grundpakete
-
- ```bash
- apt install -y sudo labwc greetd
- ```
-
- (`labwc` ist der Compositor, `greetd` der Login-/Autologin-Daemon.)
-
- ---
-
- ## 3. Browser: ungoogled-chromium via Flatpak
-
- ungoogled-chromium ist nicht in den Debian-Repos, und das OBS-apt-Repo baut nur gegen Sid (scheitert auf Trixie an `libre2-9`). Sauberer Weg ist Flathub. `dbus-user-session` und die Portale verhindern, dass der Flatpak-Browser in der Kiosk-Sitzung sofort wieder verschwindet.
-
- ```bash
- apt install -y flatpak dbus-user-session xdg-desktop-portal xdg-desktop-portal-wlr
- flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
- flatpak install -y flathub io.github.ungoogled_software.ungoogled_chromium
- flatpak override io.github.ungoogled_software.ungoogled_chromium --filesystem=home:ro
- ```
-
- ---
-
- ## 4. Kiosk-Benutzer anlegen
-
- Der Browser läuft nicht als root. Der User wird per Autologin gestartet (kein Passwort nötig).
-
- ```bash
- useradd -m -s /bin/bash kiosk
- usermod -aG video,render,input kiosk
- ```
-
- ---
-
- ## 5. Mauszeiger-Werkzeug (ydotool)
-
- Der Cursor wird beim Start kurz angezeigt und verschwindet, sobald das Panel per Touch bedient wird. `ydotool` (Kernel-Ebene, uinput) parkt ihn beim Start zusätzlich in der Ecke.
-
-
- ```bash
- apt install -y ydotool
- echo uinput > /etc/modules-load.d/uinput.conf
- echo 'KERNEL=="uinput", GROUP="input", MODE="0660", OPTIONS+="static_node=uinput"' > /etc/udev/rules.d/99-uinput.rules
- udevadm control --reload
- udevadm trigger
- modprobe uinput
- ```
-
- ---
-
- ## 6. Touchscreen – Klassifizierung
-
- Der eGalax meldet fälschlich Stylus/Tablet- und Maus-Eigenschaften. Diese Regel zwingt das System, ihn als reinen Touchscreen zu behandeln.
-
- ```bash
- cat > /etc/udev/rules.d/99-egalax-touchscreen.rules <<'EOF'
- SUBSYSTEM=="input", ATTRS{idVendor}=="0eef", ATTRS{idProduct}=="0001", ENV{ID_INPUT_TABLET}="", ENV{ID_INPUT_TABLET_PAD}="", ENV{ID_INPUT_MOUSE}="", ENV{ID_INPUT_POINTINGSTICK}="", ENV{ID_INPUT_TOUCHSCREEN}="1"
- EOF
- ```
-
- ---
-
- ## 7. Touchscreen – Kalibrierung
-
- ### 7a. Orientierung (Links/Rechts war gespiegelt)
-
- libinput-Kalibrierungsmatrix per udev. Der Wert `-1 0 1 0 1 0` spiegelt die X-Achse (Links/Rechts).
-
- ```bash
- cat > /etc/udev/rules.d/99-egalax-calibration.rules <<'EOF'
- SUBSYSTEM=="input", ATTRS{idVendor}=="0eef", ATTRS{idProduct}=="0001", ENV{LIBINPUT_CALIBRATION_MATRIX}="-1 0 1 0 1 0"
- EOF
- ```
-
- Mögliche Matrix-Werte je nach Panel-Montage:
-
- | Korrektur | Matrix |
- |---|---|
- | Normal (keine) | `1 0 0 0 1 0` |
- | Links/Rechts spiegeln | `-1 0 1 0 1 0` |
- | Oben/Unten spiegeln | `1 0 0 0 -1 1` |
- | 180° drehen | `-1 0 1 0 -1 1` |
-
- ### 7b. Wertebereich (Ränder waren nicht erreichbar)
-
- Der Controller meldet einen größeren Bereich, als physisch erreichbar ist. Per hwdb bekommt der Kernel die echten Grenzen. **Einrückung der `EVDEV_ABS`-Zeilen mit genau einem Leerzeichen ist Pflicht.**
-
- ```bash
- cat > /etc/udev/hwdb.d/61-egalax-calibration.hwdb <<'EOF'
- evdev:input:b0003v0EEFp0001*
- EVDEV_ABS_00=361:3763
- EVDEV_ABS_01=608:3456
- EOF
- systemd-hwdb update
- udevadm trigger
- ```
-
- (`EVDEV_ABS_00` = X-Achse, `01` = Y-Achse, Format `min:max`. Werte aus der evtest-Messung – siehe „Diagnose". Erreichst du die Ränder noch nicht ganz, den Bereich enger ziehen, z. B. `400:3720`.)
-
- ---
-
- ## 8. Bildschirmtastatur (wvkbd) + Umschalt-Button (waybar)
-
- `wvkbd` legt sich über das Layer-Shell-Protokoll als Tastatur über den Bildschirm (das kann labwc, Cage konnte es nicht). Sie startet versteckt und wird per Button umgeschaltet.
-
- ```bash
- apt install -y wvkbd waybar
- ```
-
- Umschalt-Skript (SIGRTMIN schaltet wvkbd um):
-
- ```bash
- cat > /usr/local/bin/toggle-kbd.sh <<'EOF'
- #!/bin/sh
- pkill --signal SIGRTMIN wvkbd-mobintl
- EOF
- chmod +x /usr/local/bin/toggle-kbd.sh
- ```
-
- waybar als kleiner, schwebender Button unten rechts:
-
- ```bash
- mkdir -p /home/kiosk/.config/waybar
-
- cat > /home/kiosk/.config/waybar/config.jsonc <<'EOF'
- {
- "layer": "top",
- "position": "bottom",
- "height": 44,
- "exclusive": false,
- "modules-right": ["custom/kbd"],
- "custom/kbd": {
- "format": "⌨",
- "tooltip": false,
- "on-click": "/usr/local/bin/toggle-kbd.sh"
- }
- }
- EOF
-
- cat > /home/kiosk/.config/waybar/style.css <<'EOF'
- * { font-size: 22px; border: none; }
- window#waybar { background: transparent; }
- #custom-kbd {
- background: rgba(3,169,244,0.9); color: #fff;
- padding: 2px 20px; margin: 8px; border-radius: 12px;
- }
- EOF
- ```
-
- > **Wichtig:** Damit Tastatur und Button nicht hinter dem Browser verschwinden, läuft der Browser als **maximiertes Fenster** (`--start-maximized`) statt im echten Vollbild (`--kiosk`). Mit dieser Einstellung erscheinen Button und Tastatur korrekt über dem Dashboard.
-
- ---
-
- ## 9. Start-Skript
-
- ```bash
- cat > /usr/local/bin/ha-kiosk.sh <<'EOF'
- #!/bin/sh
- # ydotool-Dienst starten und Cursor in die Ecke parken
- export YDOTOOL_SOCKET="$XDG_RUNTIME_DIR/.ydotool_socket"
- ydotoold --socket-path="$YDOTOOL_SOCKET" --socket-own="$(id -u):$(id -g)" &
- sleep 2
- ydotool mousemove -- -10000 -10000
-
- exec flatpak run io.github.ungoogled_software.ungoogled_chromium \
- --ozone-platform=wayland \
- --start-maximized \
- --no-first-run --no-default-browser-check \
- --disable-infobars --disable-session-crashed-bubble \
- --app="http://192.168.1.226:8123/"
- EOF
- chmod +x /usr/local/bin/ha-kiosk.sh
- ```
-
- Syntax-Check (sollte „Syntax OK" ausgeben):
-
- ```bash
- sh -n /usr/local/bin/ha-kiosk.sh && echo "Syntax OK"
- ```
-
- ---
-
- ## 10. labwc-Autostart
-
- labwc startet beim Sitzungsstart das Kiosk-Skript, die (versteckte) Tastatur und waybar.
-
- ```bash
- mkdir -p /home/kiosk/.config/labwc
-
- cat > /home/kiosk/.config/labwc/autostart <<'EOF'
- /usr/local/bin/ha-kiosk.sh &
- wvkbd-mobintl --hidden -L 280 &
- waybar &
- EOF
- ```
-
- Besitzrechte für alle als root angelegten Konfig-Dateien korrigieren:
-
- ```bash
- chown -R kiosk:kiosk /home/kiosk
- ```
-
- ---
-
- ## 11. greetd – Autologin
-
- ```bash
- cat > /etc/greetd/config.toml <<'EOF'
- [terminal]
- vt = 7
-
- [default_session]
- command = "/usr/sbin/agreety --cmd /bin/bash"
- user = "_greetd"
-
- [initial_session]
- command = "labwc"
- user = "kiosk"
- EOF
- ```
-
- **Erklärung der Blöcke:**
- - `[initial_session]` = Autologin, läuft **genau einmal beim Booten** ohne Passwort → startet labwc als `kiosk`.
- - `[default_session]` = Greeter (Fallback), erscheint nur, wenn die Kiosk-Sitzung beendet wird.
-
- (Pfad von `agreety` ggf. prüfen: `ls -l /usr/sbin/agreety /usr/bin/agreety`)
-
- ---
-
- ## 12. Aktivieren und neu starten
-
- ```bash
- systemctl enable greetd
- reboot
- ```
-
- Nach dem Reboot startet das Panel direkt ins HA-Dashboard. Einmalig in HA anmelden (physische Tastatur reicht), „Angemeldet bleiben" anhaken – das Flatpak-Profil bleibt erhalten.
-
- ---
-
- ## Diagnose – wie die Werte ermittelt wurden
-
- Touch-Controller und USB-ID finden:
-
- ```bash
- apt install -y usbutils libinput-tools evtest
- lsusb
- libinput list-devices
- ```
-
- Roh-Koordinaten / Achsen-Bereich messen (für die Kalibrierung in Abschnitt 7):
-
- ```bash
- evtest /dev/input/event2
- ```
-
- In jede Ecke tippen, dann `ABS_X`/`ABS_Y` ablesen. Bei uns ergab das: erreichbar X `361–3763`, Y `608–3456` (gemeldet war X `30–4040`, Y `60–4035`) – daher die hwdb-Korrektur.
-
- Kontrollieren, ob die hwdb-Korrektur aktiv ist:
-
- ```bash
- udevadm info /dev/input/event2 | grep EVDEV_ABS
- ```
-
- ---
-
- ## Wartung (alles über SSH)
-
- | Aufgabe | Befehl |
- |---|---|
- | Logs der Sitzung ansehen | `journalctl -u greetd -b` |
- | Kiosk-Logs (Browser) | `cat /home/kiosk/kiosk.log` |
- | HA-URL ändern | `/usr/local/bin/ha-kiosk.sh` editieren, dann `reboot` |
- | Kiosk wirklich neu starten | `reboot` (nicht `systemctl restart greetd`!) |
-
- ---
-
- ## Bekannte Einschränkungen
-
- - **Auto-Start der Tastatur bei Textfeld-Fokus:** Mit Chromium auf Wayland nicht zuverlässig möglich – daher der manuelle Umschalt-Button unten rechts.
-
- ---
-
- ## Automatischer Neustart bei Absturz (Empfehlung, noch nicht umgesetzt)
-
- `initial_session` startet nur einmal beim Boot. Stürzt der Kiosk ab, landet das Gerät im Greeter statt zurück im Dashboard. Robuster wäre, den Kiosk als eigenen systemd-Dienst mit `Restart=always` zu betreiben statt über greetds Einmal-Autologin.
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