Ein Browser als Display mit dem Raspberry

Das dritte "Projekt" am Raspberry Pi  ist eine Lösung für die Anzeige einer Webseite auf einem Bildschirm. Geplant ist eine "Statusanzeige" in HTML. Der Browser soll so weit wie möglich unsichtbar bleiben, und das Gerät soll nach einem Neustart auch wieder automatisch in diesem Modus starten.

Raspberry in Kiosk Mode

Die Aufgabe ist, den Raspberry in einen sogennanten Kiosk Mode beizubringen. Dabei setze ich auf eine Raspberry OS Distribution, weshalb ich mich auf die Erweiterung um einen Kiosk Modus beschränke.

Als Browser kann der Chromium verwendet werden. Er hat einen Kiosk Modus und man kann alle Symbolleisten, Statusleisten, Adresszeilen ausbleben.

Weiters setze ich vorraus, dass der Zugriff auf die Konsole des Raspberry über die Konsole klappt, z.B. auf einem Windows-PC mittels PC. Der SSH Zugriff soll daher am Raspberry freigeschaltet sein und der Standard User pi wurde durch die Distribution angelegt.

Vorbereitungen für den Kiosk Mode

Für den Kiosk Mode am Raspberry benötigen wir zwei zusätzliche Tools. Wir loggen uns daher auf dem Raspberry ein und geben in der Folge mehrere Kommandos ein.

Wir beginnen mit der Aktualisierung der Paket-Liste und deren Upgrade.

sudo apt-get update && sudo apt-get upgrade -y

Anschließend erfolgt die Installation vom Chromium Browser (dieser hat einen Kiosk-Mode), ein Hilfsprogramm für den X-Server und Unclutter um den Mauszeiger ausblenden zu können. Wenn Chromium bereits installiert ist, reicht auch die Angabe der x11-xserver-utils und unclutter:

sudo apt-get install chromium x11-xserver-utils unclutter

Unclutter blendet den Mauszeiger aus. Wird die Maus (oder ein Trackball, Touchscreen) bewegt, erscheint der Mauszeiger wieder.

Autostart von Chromium am Raspberry

Um Chromium automatisch am Raspberry zu starten und eine bestimmte Seite aufrufen zu lassen, benötigen wir noch einige Änderungen im LX Autostart. In meinem Fall für den User pi (aus der Installation von Raspbian). Daher passen wir die autostart Datei im Verzeichnis LXDE-pi an:

sudo nano /etc/xdg/lxsession/LXDE-pi/autostart

Den Screensaver-Eintrag durch Voranstellen von # auskommentieren:

#@xscreensaver -no-splash

Raspberry Bildschirmschoner deaktivieren

Danach ergänzen wir 3 Befehle für die x11-xserver-utils: damit werden Powermanagement und Bildschirmschoner (Screen-blanker) am Raspberry deaktiviert.

@xset s off
@xset -dpms
@xset s noblank

Zur Absicherung nach einem unvorhergesehenen Reboot, kann man eventuelle Warnmeldungen ausblenden

@sed -i 's/"exited_cleanly": false/"exited_cleanly": true/' ~/.config/chromium/Default/Preferences

Nun kommt noch der eigentliche Start von Chromium-Browser und die Angabe der Startseite. Weiters werden diverese Fehlermeldungen und die lästigen Übersetzungsvorschläge abgeschaltet:

@chromium-browser --noerrdialogs --disable-translate --kiosk --incognito http://www.google.at 

Man kann auch eine Seite am lokalen Webserver aufrufen. Dazu verwendet man die Angabe http://localhost
In diesem Fall benötigt man auch einen Webserver auf dem Raspberry. Chromium bietet viele weitere Optionen, siehe den Link am Ende der Seite.

Mit STRG-X kann man die autostart Datei verlassen, abspeichern mit Y nicht vergessen. Einige Tutorials machen all diese Änderung in der autostart im Verzeichnis LXDE. Das hat bei mir jedoch nicht funktioniert.

Bootup des Raspberry Pi anpassen

In dieser Variante muss ein grafischer Desktop geladen werden. Wird der Desktop nicht automatisch vom Raspberry OS geladen, kann man das in den Startoptionen verändern. Daher den Bootup mit der raspi-config umstellen, damit wird (z.B. mit dem User pi) automatisch in eine grafische Oberfläche gestartet.

sudo raspi-config

In der Buster Version vom September 2019 ist die Einstellung unter Punkt "3 Boot Options", "B1 Desktop / CLI" Enable "B4 Desktop Autologin Desktop GUI" zu finden.

Die raspi-config verlassen und abschließend führen wir einen Reboot durch

sudo reboot

Bingo, der Raspberry bootet in den Desktop, startet Chromium und ruft unsere definierte Seite auf!

Für einen richtigen Kioskbetrieb mit Tastatur und Maus ist das ganze natürlich noch zu unsicher. Aber für ein reines Display das von extern gewartet werden kann ist das schon mal ein Anfang.

Kiosk Modus beenden

Mit folgenden Befehl kann man über SSH Chromium auch remote wieder beenden:

pkill -HUP chromium

Raspberry runterfahren/power off

Übrigens, so fährt man den Raspberry runter

sudo shutdown -h now
sudo halt

und das wäre ein restart

sudo shutdown -r now
sudo reboot

SSH Passwort Warnung

Raspberry Pi OS gibt eine Warnung aus wenn man die Standardeinsteluung von User/Passwort nicht ändert. Das "Warning" kann zwar mit OK weggeklickt werden, aber wenn man wirklich nicht das Passwort ändert, kommt nach jedem Start ein "SSH is enabled and the default password for the 'pi' user has not  been changed."

Die Meldung kann durch löschen (oder umbenennen) der Datei sshpwd.sh verhindert werden:

sudo rm /etc/xdg/lxsession/LXDE-pi/sshpwd.sh

Links

  • Eine ausgezeichnetes Tutorial auf englisch: hier
  • Eine bessere Variante ohne Desktop: hier
  • Einen ressourcenschonenden Kiosk Broswer ohne Chromium: von Peter Schultz
  • Aufrufparameter für Chromium: hier

Protokoll

erstellt: 2015-11-15 | Stand: 2022-01-09