Wayland + Cage + Squeekboard ist für genau deinen Use-Case (Touch, Kiosk, Hochkant, OSK nur bei Bedarf) die sauberste und stabilste Lösung auf dem Raspberry Pi 5.

Ich gebe dir jetzt eine komplett frische, lineare Anleitung → danach bootet der Pi direkt ins Home-Assistant-Dashboard, inkl. automatischer On-Screen-Tastatur, WLAN und Portrait-Modus.

🎯 Zielsetup (Wayland-Kiosk)

✔ Raspberry Pi 5 ✔ Raspberry Pi OS Lite 64-bit ✔ Wayland (kein X11) ✔ Cage (Kiosk-Compositor) ✔ Chromium im Kiosk ✔ Squeekboard (On-Screen-Tastatur, automatisch) ✔ Display hochkant ✔ Touch & WLAN

1️⃣ Raspberry Pi OS Lite installieren

Mit Raspberry Pi Imager:

OS: Raspberry Pi OS Lite (64-bit)

⚙️ Erweiterte Optionen:

✅ WLAN konfigurieren

✅ SSH aktivieren

✅ Locale + Tastatur DE

Hostname z. B. ha-kiosk

Booten & per SSH einloggen.

2️⃣ System vorbereiten sudo apt update && sudo apt upgrade -y

Wayland-Pakete installieren:

sudo apt install -y \ cage \ chromium-browser \ squeekboard \ network-manager \ seatd \ unclutter

3️⃣ Seat-Zugriff erlauben (wichtig!) sudo usermod -aG video,input,render,seat $USER sudo systemctl enable seatd sudo reboot

4️⃣ Bildschirm hochkant drehen (Pi 5 korrekt) sudo nano /boot/firmware/config.txt

Am Ende einfügen:

display_rotate=1

💡 Falls falsch herum → 3 statt 1.

Reboot:

sudo reboot

5️⃣ Squeekboard konfigurieren (deutsche Tastatur) mkdir -p ~/.config/squeekboard nano ~/.config/squeekboard/squeekboard.conf

Inhalt:

[default] layout=de

👉 Wichtig: Squeekboard erscheint automatisch, sobald ein Eingabefeld Fokus bekommt – und verschwindet wieder. Kein Script. Kein Hack. ❤️

6️⃣ Cage-Kiosk starten Autostart beim Login nano ~/.bash_profile

Inhalt:

if [ -z „$WAYLAND_DISPLAY“ ] && [ „$(tty)“ = „/dev/tty1“ ]; then

exec cage -- \
  chromium-browser \
    --kiosk \
    --noerrdialogs \
    --disable-infobars \
    --disable-session-crashed-bubble \
    --disable-translate \
    --disable-features=TranslateUI \
    --overscroll-history-navigation=0 \
    https://homeassistant.m4me.de/dashboard-screenmirror

fi

7️⃣ Automatischer Login (kein User-Login nötig) sudo raspi-config

System Options

Boot / Auto Login

Console Autologin

8️⃣ Touch & Stromsparfunktionen abschalten sudo nano /etc/systemd/logind.conf

Ändern:

HandlePowerKey=ignore HandleSuspendKey=ignore HandleHibernateKey=ignore HandleLidSwitch=ignore

Optional: Display nie schlafen lassen:

sudo nano /boot/firmware/config.txt

hdmi_blanking=0

✅ Ergebnis (nach Reboot)

🔹 Boot 🔹 kein Login 🔹 kein Desktop 🔹 Chromium im Vollbild 🔹 Home Assistant Dashboard 🔹 Touch funktioniert 🔹 Tastatur erscheint nur bei Eingabefeldern 🔹 Monitor hochkant 🔹 monatelang stabil

🧠 Warum das besser ist als X11 Feature X11 Wayland OSK Auto ❌ ✅ Touch UX 😐 😍 Kiosk ⚠️ ✅ Wartung höher minimal Stabilität gut sehr gut 🔥 Optional (sag Bescheid)

Ich kann dir noch einbauen:

🔄 Auto-Reload, wenn HA nicht erreichbar

🌙 Nacht-Dimming

🧠 Watchdog (Chromium neu starten)

🧼 RAM-Cleanup

🔐 Zertifikats-Pinning

📶 WLAN-Fallback / Reconnect

🪟 Soft-Button zum Beenden (Admin-Modus)

Wenn du willst, sag einfach:

„Feinschliff bitte“ 😄

feinschliff bitte Nachgedacht für 48s

Alles klar – hier ist der Feinschliff, so dass dein Pi 5 Kiosk monatelang stabil läuft: Watchdog, Auto-Restart, Netz-Check, kein Screen-Blanking, sauberer Chromium-Profilordner, optional Nacht-Reboot.

Ich baue das so, dass du nicht von .bash_profile abhängst, sondern eine systemd-Unit hast (sauber + restartbar).

1) Chromium-Kiosk “sauber” starten (Profil, First-Run weg) Script: Session (startet OSK + Chromium) sudo tee /usr/local/bin/ha-session.sh >/dev/null «'EOF' #!/usr/bin/env bash set -e

# On-screen keyboard (Wayland) squeekboard &

# Chromium Kiosk exec chromium-browser \

  1. -kiosk \
  2. -noerrdialogs \
  3. -disable-infobars \
  4. -disable-session-crashed-bubble \
  5. -disable-translate \
  6. -disable-features=TranslateUI \
  7. -overscroll-history-navigation=0 \
  8. -no-first-run \
  9. -disable-features=UseOzonePlatform \
  10. -user-data-dir=/home/pi/.config/chromium-kiosk \

https://homeassistant.m4me.de/dashboard-screenmirror EOF

sudo chmod +x /usr/local/bin/ha-session.sh

Falls dein User nicht pi heißt: ersetze /home/pi entsprechend.

2) Kiosk-Compositor + Restart-Loop (Cage) als systemd Service Wrapper, der Cage startet und bei Exit neu startet sudo tee /usr/local/bin/ha-kiosk.sh >/dev/null «'EOF' #!/usr/bin/env bash set -e

# Konsole soll nicht blanken (nur zur Sicherheit) setterm -blank 0 -powerdown 0 >/dev/tty1 2>/dev/null || true

# Endlosschleife: wenn Chromium/Cage crasht → Neustart while true; do

cage -- /usr/local/bin/ha-session.sh || true
sleep 2

done EOF

sudo chmod +x /usr/local/bin/ha-kiosk.sh

systemd Unit sudo tee /etc/systemd/system/ha-kiosk.service >/dev/null «'EOF' [Unit] Description=Home Assistant Kiosk (Wayland/Cage/Chromium + OSK) After=network-online.target seatd.service Wants=network-online.target

[Service] User=pi PAMName=login TTYPath=/dev/tty1 TTYReset=yes TTYVHangup=yes TTYVTDisallocate=yes StandardInput=tty StandardOutput=journal StandardError=journal Environment=XDG_RUNTIME_DIR=/run/user/1000 ExecStart=/usr/local/bin/ha-kiosk.sh Restart=always RestartSec=2

[Install] WantedBy=multi-user.target EOF

Aktivieren:

sudo systemctl daemon-reload sudo systemctl enable –now ha-kiosk.service

Logs anschauen:

journalctl -u ha-kiosk.service -f

3) “Hard Watchdog”: Wenn HA nicht erreichbar → Service neu starten

Das fängt WLAN-Hänger / DNS-Zicken / HA-Aussetzer ab.

Check-Script sudo tee /usr/local/bin/ha-healthcheck.sh >/dev/null «'EOF' #!/usr/bin/env bash set -e

URL=„https://homeassistant.m4me.de“ FAILFILE=„/run/ha-kiosk-fails“ MAXFAIL=5

if curl -fsS –max-time 5 „$URL“ >/dev/null; then

rm -f "$FAILFILE"
exit 0

fi

n=$(cat „$FAILFILE“ 2>/dev/null || echo 0) n=$1) echo „$n“ > „$FAILFILE“

if [ „$n“ -ge „$MAXFAIL“ ]; then

rm -f "$FAILFILE"
systemctl restart ha-kiosk.service

fi EOF

sudo chmod +x /usr/local/bin/ha-healthcheck.sh

systemd Timer (alle 60 Sekunden) sudo tee /etc/systemd/system/ha-healthcheck.service >/dev/null «'EOF' [Unit] Description=Healthcheck for HA Kiosk

[Service] Type=oneshot ExecStart=/usr/local/bin/ha-healthcheck.sh EOF

sudo tee /etc/systemd/system/ha-healthcheck.timer >/dev/null «'EOF' [Unit] Description=Run HA kiosk healthcheck every minute

[Timer] OnBootSec=60 OnUnitActiveSec=60 AccuracySec=5s

[Install] WantedBy=timers.target EOF

sudo systemctl daemon-reload sudo systemctl enable –now ha-healthcheck.timer

4) Screen-Blanking sicher ausschalten Kernel Console Blank aus sudo sed -i 's/$/ consoleblank=0/' /boot/firmware/cmdline.txt

Reboot:

sudo reboot

Das verhindert, dass die Konsole “im Hintergrund” den Bildschirm dunkel macht.

5) Optional: Nacht-Reboot (wenn du’s ganz “unkaputtbar” willst) sudo tee /etc/systemd/system/nightly-reboot.service >/dev/null «'EOF' [Unit] Description=Nightly reboot

[Service] Type=oneshot ExecStart=/sbin/reboot EOF

sudo tee /etc/systemd/system/nightly-reboot.timer >/dev/null «'EOF' [Unit] Description=Reboot every night at 04:00

[Timer] OnCalendar=*-*-* 04:00:00 Persistent=true

[Install] WantedBy=timers.target EOF

sudo systemctl daemon-reload sudo systemctl enable –now nightly-reboot.timer

6) Wichtiger Hinweis: Hochkant + Touch

Rotation hast du schon via display_rotate=1 in /boot/firmware/config.txt.

Touch-Mapping ist je nach Touch-Controller manchmal “mitgedreht”, manchmal nicht. Wenn dein Touch nach der Rotation “falsch” ist, sag kurz welcher Touch-Monitor (Modell) oder poste cat /proc/bus/input/devices (nur den Namen-Block) – dann gebe ich dir die korrekte Wayland/Libinput-Option.

Wenn du mir 2 Ausgaben gibst, kann ich’s 100% passend finalisieren

echo $USER (damit ich pi ggf. anpasse)

ls /run/user/ (damit wir die richtige UID für XDG_RUNTIME_DIR fix machen)

Bis dahin läuft das Setup in den meisten Pi-OS-Lite-Installationen direkt durch.

1)
n+1
DokuWiki Appliance - Powered by TurnKey Linux