[Raspberry Pi] Browser nach Systemstart im Fullscreen starten

Ein Kollege fragte mich neulich wie er am einfachsten auf drei Fernsehern verschiedene Urls für Präsentationen öffnen könnte. Er dachte zunächst daran einen Rechner mit entsprechender Grafikkarte zu kaufen, ich konnte ihn jedoch überzeugen anstatt eines Rechners, drei Raspberry Pi´s zu verwenden.

Der Plan ist, das der Raspberry Pi hochfährt und automatisch den Browser öffnet.
Um Resourcen zu sparen, wird der midori Browser über die Kommandozeile gestartet und nicht über einen Desktop. Das setzt voraus, das der Pi Benutzer nach dem hochfahren des Systems an der Kommandozeile angemeldet ist.

Hierfür muss die Datei /etc/inittab wie folgt angepasst werden:

Vorher
1:2345:respawn:/sbin/getty --noclear 38400 tty1
nachher
#1:2345:respawn:/sbin/getty --noclear 38400 tty1
1:2345:respawn:/bin/login -f pi tty1 /dev/tty1 2>&1

Damit der Browser den gesamten Bildschirm ausfüllt (Kiosk Mode) und zum Beispiel der Mauszeiger nicht dargestellt wird, müssen noch weitere Programme installiert werden.

apt-get install matchbox x11-xserver-utils unclutter

Das Script sieht dann wie folgt aus:
#!/bin/sh
unclutter &
matchbox-window-manager & :
xset -dpms
xset s off
while true; do
/usr/bin/midori -e Fullscreen -a https://www.itbasic.de
done

Hier eine kurze Erklärung:
unclutter – lässt den Mauszeiger verschwinden
matchbox-window-manager – sorg für den Kiosk Modus
midori -e Fullscreen -a URL – startet den Browser
xset -dpms und xset s off deaktiviert den Bildschirmschoner
Die while Schleife sorgt dafür, das der Browser bei einem Absturz neu gestartet wird.

Nach einem chmod 755 presentation.sh, lässt sich das ganze dann über xinit /home/pi/presentation.sh starten. Um es wieder zu beenden reicht strg + alt + F1 und im Anschluss strg + c.

Automatischer Start

Ein Eintrag in der /home/pi/.profile reicht nun aus, damit die Präsentation nach dem Systemstart gestartet wird.

Ich habe jedoch das folgende Script in der /home/pi/.profile hinterlegt, welches prüft ob der Raspberry Pi eine IP Adresse über den dhcp Server bekommen hat. Wenn keine IP Adresse vorhanden ist, wird die Präsentation nicht gestartet und dafür ein Hinweis auf der Konsole ausgegeben.

start.sh:
#!/bin/bash
ifconfig | grep 192
if [ $? -eq 0 ]
then
xinit /home/pi/presentation.sh
else
echo "!!! keine Netzwerkverbindung !!!"
echo "Bitte stellen Sie eine Netzwerkverbindung her und"
echo "fuehren Sie xinit /home/pi/presentation.sh aus"
fi

Betriebssystem klonen

Für die zwei weiteren Fernseher muss mein Kollege einen Klone der SD Karte erstellen.
Das ganze lässt sich unter linux über dd einfach realisieren.

1. Image der SD Karte erstellen
dd if=/pfad/zur/sd/karte of=/home/user/sd-image.img
2. SD Karte wechseln und Image auf die neue SD Karte spielen
dd if=/home/user/sd-image.img of=/pfad/zur/sd/karte

Auf diesem Weg lässt sich ein Backup des gesamten System erstellen, hilfreich wenn man des öfteren verschiedene Programm etc ausprobieren möchte.

Hostnamen ändern

Zum Abschluss muss noch der Hostname in der /etc/hostname und /etc/hosts angepasst werden, da sonst der Hostname dreimal im Netzwerk vorhanden ist.

Quellen:
Browser im Kiosk Modus starten: https://github.com/MobilityLab/TransitScreen/wiki/Raspberry-Pi
Autologin:http://elinux.org/RPi_Debian_Auto_Login

25 Gedanken zu „[Raspberry Pi] Browser nach Systemstart im Fullscreen starten

  1. Jamshed

    …super gemacht und richtig gute Kommentare.

    Klasse! Danke!

    Richtig gute finde ich die Idee, den Browser in der Kommandozeile zu starten.

    Ich suche gerade Info zusammen für ein ziemlich ähnliches Projekt.

    Im speziellen suche ich ein Skript, mit dem man vom Benutzer eine URL erfragt, die dann nach einem Neustart im Kiosk-Modus angezeigt wird. Irgend eine Idee, wo ich sowas finden könnten?

    Antworten
    1. hermann Beitragsautor

      Die Frage ist, wie die URL über geben werden soll? Es sollte kein Problem sein, die URL per variable zu setzen. Ansonsten könnte man die URL aus einer txt Datei auslesen, per gpio schalten oder evtl auch per email.

      Antworten
  2. Uwe

    Hallo!

    Ich habe mir mit Hilfe Deiner Anleitung einen Raspberry Pi fertig gemacht, der nach dem Booten in den Vollbildmodus eines Browsers geht und eine bestimmt Website anzeigt. Um das ganze zu testen, hab ich dann das Ding abgezogen, zu nem Fernseher gebracht, angeschlossen und siehe da: Es läuft.

    Das ist 2 Tage her. Nun hab ich das Ding wieder angemacht und ich bekomme die folgende Meldung:
    xset: unable to open display „“
    unclutter: could not open display
    xset: unable to open display „“
    matchbox: can’t open display! check your DISPLAY variable.
    Midori – Cannot open display:

    Kriegt man sicher irgendwie wieder hin, nur was ich gar nicht verstehe ist, dass ich nichts geändert habe ich von dem einen Tag auf den anderen geht es plötzlich nicht mehr.
    Kannst Du mir da irgendwie weiterhelfen?

    Gruß

    Uwe

    Antworten
    1. hermann Beitragsautor

      Das System fährt aber an sich sauber hoch und du kannst etwas über die Kommandozeile eingeben?
      In der /etc/inittab ist auch alles in Ordnung?

      Antworten
      1. Uwe

        genau. Das System läuft sauber hoch. Ich kann mich auch ohne weiteres remote einloggen. Ich hab es schon unterwegs an einem Display getestet und es lief reibungslos. Dann hab ich es nur aus testgründen wieder zuhause angeschlossen und bekam dann die Fehlermeldung.

        Viele Grüße

        Uwe

        Antworten
          1. Alexander

            Ich habe den selben Fehler. Bei mir kam der Fehler auch durch das Anschließen eines anderen Displays zwischendurch. Ich habe heruasgefunden, dass dies mit der internen DISPLAY- Variable im Zusammenhang steht. Diese kann man mit echo $DISPLAY ausgeben. Bei mir ist sie leer. Es müsste in ihr aber etwas wie localhost:11.0 stehen. Das Anschließen eines anderen Displays scheint diese Variable also zu leeren. Ich vermute, dass sie von Linux verwendet wird, um bekannt zu machen auf welchem Display(Ausgang) ein Fenster dargestellt werden soll. Ich habe bisher aber noch nicht herausgefunden, wie man diese Variable wieder auf ihren Ursprungszustand zurückgesetzt bekommt. Vielleicht reichen diese Infos hier ja, um jemand Erfahreneren mit Linux als mich auf die richtige Spur zu bringen. Ich bin zwar Programmierer, aber hab mit Linux eben wenig zu tun.

  3. Hans

    Hallo, Danke für diesen nützlichen Tipp. Bei der Umsetzung klappte auch alles ganz prima, solange ich normale Webadressen gewählt habe. Ich wollte mich aber mit dem script an unserem Web-Displaybildschirm anmelden und diese Parameterübergabe mag das Script nicht.

    Beispiel:
    http://www.testseite.de?username=52454 das funktioniert

    http://www.testseite.de?username=52454&passwort=85545 das funktioniert leider nicht

    Ich vermute, dass es an dem & Zeichen liegt. Ich bin jetzt leider kein Linux Experte und hoffe, auf diesem Wege eine Lösung zu bekommen. Danke im Voraus.

    Antworten
    1. Hans

      Habe es selbst herausgefunden: die Webadresse muss in Anführungszeichengesetzt werden, dann klappt auch die Parameterübergabe an die Webseite.

      also so: „http://www.testseite.de?username=52454&passwort=85545“

      Antworten
  4. Hans

    Eine Sache funktioniert nicht so, wie angegeben. Nach dem Start von xinit …. soll man ja mit STRG-ALT-F1 und danach CTRL-C wieder auf die Konsole zurückkommen. Nach dem Drücken von STRG-ALT-F1 wird aber ein X-Server Fehler ausgegeben und die Tastenkombination CTRL-C ist nicht möglich. Gibt es da eine Abhilfe? Im Moment wechsele ich dann auf STRG-ALT F2, um Eingaben zu tätigen.

    Ansonsten macht das Script genau das, was es soll.

    Antworten
    1. hermann Beitragsautor

      Kann ich dir so gerade nicht sagen, bei mir hatte es funktioniert. Leider habe ich das gerade nicht mehr aufgebaut und einen Rasbperry habe ich auch nicht zur Verfügung.

      Antworten
  5. Henning

    Hallo!

    Erstmal danke für dieses Tut, es macht so ziemlich genau das, was ich gesucht habe!
    Es funktioniert auch sehr gut, aber leider nur auf meinem 22″ Monitor. Starte ich den Pi an einem TV, bleibt er nach Ausführung des Scripts schwarz, nur der Mauszeiger ist zu sehen, der dann verschwindet.
    Fahre ich den Pi an dem Monitor hoch und stöpsel dann den TV an, wird die Website angezeigt.
    Nur stimmt die Auflösung dann auch nicht mehr.
    Leider habe ich wenig Ahnung von linuxbasierten BS, weiß nicht, wie man Monitore konfiguriert oder die Auflösung konfiguriert… falls das überhaupt Ursache des Fehlers ist.
    Irgend ein Tipp oder eine Idee? Wäre sehr dankbar!

    Antworten
    1. hermann Beitragsautor

      Ich denke wenn du mit dem Monitor startest wird die Auflösung etc für den Monitor angepasst und beim Anschluss an den Fernseher bleiben die ursprünglichen Einstellungen erhalten.
      Wenn du das Script nicht automatisch startest, kannst du dann auf der Kommandozeile alles sehen?
      Was für einen Fernseher verwendest du?
      Funktioniert es nur bei einer bestimmten Seite nicht oder generell?

      Antworten
  6. Benny Neugebauer

    Vielen Dank für diese tolle Anleitung! Der „Fullscreen“-Mode im Midori-Browser funktioniert prima! Jetzt muss ich es nur noch hinkriegen, dass der Pi nicht mit Raspbian im Desktop-Mode startet. Wie groß ist euer „sd-image“? Es wäre klasse, wenn ihr das bereitstellen könntet.

    Antworten
  7. Michael

    Hallo

    Super Anleitung !!!

    Eine Frage od. Problem habe ich doch.
    Beim Neustart läuft alles wie gewollt.

    Nur nach einer Zeit (unbek.) zeigt der Midori-Browser nichts mehr an.
    Wie kann ich ein Reload (zb. 3600 min) hin bekommen.

    Antworten
  8. Wolfi

    After a bit of struggling everything worked out great! The Raspberry starts and almost emediatly starts the midi browser and opens the desired website.
    However I wanted to combine this with the concerto digital signage thing. For that to work though I need the raspberry pi/midori browser to safe cookies even after a reboot. Is that possible?

    Antworten
  9. Manu

    Moin,
    ich hab in der Küche einen MiniNotebook mit Debian 9 ink. 25Zoll TFT.

    A) Leider Startet das Script nicht, ich hab es in Crontab eingetragen -Keine Funktion, dann unter RC, auch hier keine Besserung.

    B) Bringt er den Fehler midori – Anzeige kann nicht geöffnet werden 🙁

    Ps.: Das System fährt hoch, und der Autologin ist auch hinterlegt.

    Hast du vll ne Idee ?

    Liebe Grüße aus Köln

    Antworten
      1. Manu

        händisch geh es, jedoch bringt er dann die Fehlermeldung, das es Probleme mit de Anzeige gibt.
        Ich denke, das es damit zutun habe, das ich noch en Monitor am VGA Anschluss dran habe. Am Monitor sollte ja dann auch die Webseite geöffnet werden. Muss ich irgend eine Variable eintragen, das der Browser auf den VGA Ausgang gelegt wird ?

        Viele Grüße

        Antworten

Schreibe einen Kommentar zu hermann Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert