# Raspberry Pi Kiosk-Optimierungen ## Übersicht Das MYP Installationsskript wurde mit umfassenden Raspberry Pi spezifischen Optimierungen erweitert, basierend auf bewährten Praktiken aus der Community. ## Quellen und Referenzen - [Marco Pascucci - rPI Kiosk Tutorial](https://mpascucci.github.io/tutorial/rpi/) - [Thomas Krampe - Raspberry Pi Web-Kiosk](https://blog.kngstn.eu/article/2023-09-22-raspberrypi-als-web-kiosk/) - Raspberry Pi Foundation Best Practices - Community-erprobte Kiosk-Konfigurationen ## Implementierte Optimierungen ### 1. Boot-Konfiguration (`/boot/config.txt`) ```bash # GPU Memory Split für bessere Browser-Performance gpu_mem=128 # Disable Rainbow Splash für professionelles Erscheinungsbild disable_splash=1 # HDMI Force Hotplug für bessere Display-Kompatibilität hdmi_force_hotplug=1 # Disable Overscan für Kiosk-Displays disable_overscan=1 # Audio über HDMI aktivieren hdmi_drive=2 ``` **Vorteile:** - ✅ Bessere Chromium-Performance durch mehr GPU-Speicher - ✅ Professioneller Boot ohne Raspberry Pi Logo - ✅ Zuverlässige HDMI-Erkennung - ✅ Vollbild-Nutzung ohne schwarze Ränder ### 2. Kernel-Parameter (`/boot/cmdline.txt`) ```bash # Console Blanking deaktivieren consoleblank=0 # Logo deaktivieren für schnelleren Boot logo.nologo # Quiet Boot für saubere Kiosk-Erfahrung quiet ``` **Vorteile:** - ✅ Bildschirm bleibt immer aktiv - ✅ Schnellerer Boot-Prozess - ✅ Keine störenden Boot-Meldungen ### 3. WLAN Power Management #### Systemd-Service ```bash # Automatische Deaktivierung bei jedem Boot systemctl enable disable-wifi-power-management.service ``` #### NetworkManager-Konfiguration ```bash # Globale WLAN Power Save Deaktivierung wifi.powersave = 2 ``` **Problem gelöst:** - ❌ `wlan0: carrier lost` Fehler - ❌ Intermittierende Netzwerkverbindung - ❌ Kiosk-Unterbrechungen durch WLAN-Standby ### 4. Erweiterte Chromium-Optimierungen #### Raspberry Pi spezifische Flags ```bash --disable-gpu-compositing --enable-gpu-rasterization --disable-smooth-scrolling --disable-2d-canvas-image-chromium --disable-accelerated-2d-canvas --num-raster-threads=2 --enable-zero-copy --force-device-scale-factor=1.0 --disable-pinch --overscroll-history-navigation=0 ``` #### Chromium-Richtlinien (`/etc/chromium-browser/policies/managed/`) ```json { "DefaultBrowserSettingEnabled": false, "BackgroundModeEnabled": false, "BookmarkBarEnabled": false, "BrowserSignin": 0, "DefaultNotificationsSetting": 2, "PasswordManagerEnabled": false, "TranslateEnabled": false, "MetricsReportingEnabled": false } ``` **Vorteile:** - ✅ Optimierte Performance auf ARM-Hardware - ✅ Reduzierte CPU/GPU-Last - ✅ Deaktivierte störende Browser-Features - ✅ Kiosk-optimierte Benutzeroberfläche ### 5. Crash-Recovery-System #### Chromium Restart-Loop ```bash while true; do chromium-browser [flags] "$KIOSK_URL" EXIT_CODE=$? # Bei normalem Exit nicht neustarten if [ $EXIT_CODE -eq 0 ] || [ $EXIT_CODE -eq 15 ]; then break fi # Bei Crash: Neustart nach 3 Sekunden sleep 3 pkill -f chromium done ``` #### Chromium Preferences Bereinigung ```bash # Crash-Flags vor jedem Start bereinigen sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' Preferences sed -i 's/"exit_type":"Crashed"/"exit_type":"Normal"/' Preferences ``` **Vorteile:** - ✅ Automatischer Neustart bei Browser-Crashes - ✅ Keine "Chromium didn't shut down correctly" Meldungen - ✅ Unterbrechungsfreier Kiosk-Betrieb ### 6. Temperatur-Monitoring #### Automatisches Monitoring ```bash # Alle 5 Minuten Temperatur-Check */5 * * * * root /usr/local/bin/pi-temp-check ``` #### Warnungen und Logging - **70°C+**: Warnung in Logs - **80°C+**: Kritische Warnung + Syslog - Kontinuierliche Aufzeichnung in `/var/log/pi-temperature.log` **Vorteile:** - ✅ Frühwarnung bei Überhitzung - ✅ Präventive Wartung möglich - ✅ Langzeit-Temperaturverlauf ### 7. Performance-Optimierungen #### Kernel-Parameter ```bash # Swappiness reduzieren vm.swappiness=10 # Dirty Ratio optimieren vm.dirty_ratio=15 vm.dirty_background_ratio=5 ``` #### Hardware-Erkennung ```bash # Automatische Pi-Erkennung if grep -q "Raspberry Pi" /proc/cpuinfo; then # Pi-spezifische Optimierungen aktivieren fi ``` **Vorteile:** - ✅ Bessere I/O-Performance - ✅ Reduzierte SD-Karten-Belastung - ✅ Optimierte Speicherverwaltung ### 8. Multiple Autostart-Methoden #### 1. LXDE Autostart (Klassisch) ```bash # ~/.config/lxsession/LXDE-pi/autostart @bash /home/kiosk/start-kiosk.sh ``` #### 2. Desktop Autostart (Modern) ```bash # ~/.config/autostart/myp-kiosk.desktop [Desktop Entry] Type=Application Exec=/bin/bash /home/kiosk/start-kiosk.sh ``` #### 3. Systemd Service (Robust) ```bash # /lib/systemd/system/kiosk.service [Service] ExecStart=/bin/bash /home/kiosk/start-kiosk.sh ``` **Vorteile:** - ✅ Mehrfache Absicherung - ✅ Kompatibilität mit verschiedenen Desktop-Umgebungen - ✅ Fallback-Mechanismen ### 9. Energiesparmodus-Deaktivierung #### X-Server Level ```bash # LightDM Konfiguration xserver-command=X -s 0 -dpms ``` #### systemd-logind Level ```bash # Alle Power-Events ignorieren HandlePowerKey=ignore HandleSuspendKey=ignore HandleLidSwitch=ignore IdleAction=ignore ``` #### Application Level ```bash # In Kiosk-Skript xset s off xset s noblank xset -dpms ``` **Vorteile:** - ✅ Bildschirm bleibt permanent aktiv - ✅ Keine ungewollten Standby-Modi - ✅ 24/7 Kiosk-Betrieb möglich ## Wartung und Monitoring ### Neue Wartungstools ```bash # Raspberry Pi spezifische Checks myp-maintenance check-health # Temperatur-Monitoring tail -f /var/log/pi-temperature.log # WLAN Power Management Status iwconfig wlan0 | grep "Power Management" ``` ### Troubleshooting #### WLAN-Probleme ```bash # WLAN Power Save manuell deaktivieren sudo iwconfig wlan0 power off # NetworkManager neu starten sudo systemctl restart NetworkManager ``` #### Performance-Probleme ```bash # GPU Memory Check vcgencmd get_mem gpu # Temperatur Check vcgencmd measure_temp # Chromium-Prozesse prüfen ps aux | grep chromium ``` #### Display-Probleme ```bash # HDMI-Status prüfen tvservice -s # X-Server neu starten sudo systemctl restart lightdm ``` ## Kompatibilität ### Getestete Raspberry Pi Modelle - ✅ Raspberry Pi 4 (empfohlen) - ✅ Raspberry Pi 3B+ - ✅ Raspberry Pi 3B - ⚠️ Raspberry Pi 2 (eingeschränkt) - ❌ Raspberry Pi 1/Zero (nicht empfohlen) ### Getestete Betriebssysteme - ✅ Raspberry Pi OS (Debian Bullseye/Bookworm) - ✅ Ubuntu Server 20.04+ für ARM - ✅ Debian 11+ ARM64 ## Best Practices ### Hardware-Empfehlungen - **RAM**: Mindestens 2GB (4GB empfohlen) - **SD-Karte**: Class 10, mindestens 16GB - **Kühlung**: Aktive Kühlung bei Dauerbetrieb - **Netzteil**: Offizielles Pi-Netzteil verwenden ### Konfiguration-Tipps - GPU Memory auf 128MB+ setzen - Hochwertige SD-Karte verwenden - Regelmäßige Temperatur-Überwachung - Backup der Boot-Konfiguration ### Wartung - Monatliche Temperatur-Log-Auswertung - Quartalsweise SD-Karten-Gesundheitscheck - Jährliche Neuinstallation bei Dauerbetrieb --- **Status**: ✅ Produktionsreif **Letzte Aktualisierung**: $(date +%Y-%m-%d) **Version**: 3.0 (Raspberry Pi Optimiert) ## Referenzen - [Marco Pascucci Tutorial](https://mpascucci.github.io/tutorial/rpi/) - [Thomas Krampe Blog](https://blog.kngstn.eu/article/2023-09-22-raspberrypi-als-web-kiosk/) - [Raspberry Pi Documentation](https://www.raspberrypi.org/documentation/) - [Chromium Command Line Switches](https://peter.sh/experiments/chromium-command-line-switches/)