Autostart unter Raspbian

Ich setze sowohl Privat als auch auf der Arbeit gerne Raspberry Pi ein. Dabei ist es hin und wieder Notwendig das etwas das nicht als Service unter Systemd oder Initd vorhanden ist. Auch macht es nicht immer Sinn aus allem einen Service zu machen. Als Beispiel nenne ich da mal den Chromium Browser der im Kiosk Modus laufen soll.

Ich möchte als das nach dem Start von Raspbian mit GUI (Grafische Oberfläche) der Chromium Browser startet und eine bestimmte Webseite im Kiosk Modus anzeigt.

Bis zu einer Version von Raspbian Stretch von Ende 2018 war das über eine Autostart Datei im Userhome des Users „pi“ möglich. Dort wurden auch gerne Parameter hinterlegt um den Bildschirmschoner etc. zu deaktivieren. Anleitungen dazu findet man eigentlich reichlich.
Allerdings hat sich die Methode nun verändert.

Bisherige Methode (Wheezy, Jessie, Stretch)

Unter „/home/pi/.config/lxsession/LXDE-pi/“ gibt es eine Datei „autostart“.

nano /home/pi/.config/lxsession/LXDE-pi/autostart

In dieser Datei stehen bereits einige Befehle.

@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
@point-rpi

Hier kann man nun weitere Befehle ergänzen die dann automatisch nach der Anmeldung ausgeführt werden.

Zum Beispiel zum deaktivieren des Bildschirmschoners und den Energieeinstellungen wird folgendes ergänzt:

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

Oder zum Starten des Chromium Browser:

chromium-browser --noerrdialogs --incognito --disable-crash-reporter --disable-infobars --force-device-scale-factor=1.00 --kiosk "https://christian-brauweiler.de"

Neue Methode (Buster)

Unter dem aktuellen Raspbian Stretch gibt es den Pfad so nicht mehr. Dieser befindet sich nun unter „/etc/xdg/lxsession/LXDE-pi/autostart„.

Dazu gibt es nun eine weitere Möglichkeit. Dafür muss unter „/etc/xdg/autostart/“ eine Datei angelegt werden mit der Dateiendung „.desktop“, also zum Beispiel „chromium.desktop“.

sudo nano /etc/xdg/autostart/chromium.desktop

Diese Datei befüllen wir mit folgenden Inhalt:

[Desktop Entry]
Type=Application
Name=Chromium
Comment=Chromium Webbrowser
NoDisplay=false
Exec=chromium-browser --noerrdialogs --incognito --disable-crash-reporter --disable-infobars --force-device-scale-factor=1.00 --kiosk "https://christian-brauweiler.de"

Type, Name, Comment sollte selbsterklärend sein. Bei NoDisplay muss ich selber passen. Bei Exec kommt der Befehl hin der so auch in der Bash funktionieren muss. In meinem Beispiel ist dies halt der Chromium Browser mit einigen Parametern.
Eine Liste der Parameter finder ihr unter: https://peter.sh/experiments/chromium-command-line-switches/

Solltet ihr dort Bash Scripte aufrufen, ist darauf zu achten das diese Ausführbar sind (chmod +x) und der Pfad korrekt ist (Groß- und Kleinschreibung beachten).

Nach einem Neustart sollte nach der Anmeldung (Automatische Anmeldung ist Standardmäßig eingeschaltet) der Befehl ausgeführt werden.

34 Kommentare

  1. Hallo Christian,
    danke für diese tolle Anleitung.
    Ich nutze sie um ein auf Pygame basiertes GUI zu starten (Neue Methode).
    Meine Frontend.desktop, in /etc/xdg/autostart/ sieht folgendermaßen aus:
    [Desktop Entry]
    Type=Application
    Name=GUI
    Comment=starte Frontend
    NoDisplay=false
    Exec=/home/pi/Frontend.sh

    Das funktioniert soweit auch super.
    Leider öffnet sich das GUI auf diese Weise jedoch in einem Fenster, gibt es auch eine Möglichkeit dieses in Vollbild zu öffnen ?

    In meiner Frontend.sh findet sich folgender Code:
    #! /bin/sh -e

    xrandr -s 1920×1080
    sudo python3 /home/pi/Frontend/main.py > /dev/null 2>&1 &

    Durch xrandr ist es mir zumindest schon gelungen die gewünschte Auflösung vorzugeben.

    Freundlichen Gruß
    Dennis

  2. Hallo, läuft bei mir schon Seite Monaten! Sehr gut!
    Gibt es die Möglichkeit das ganze um ein paar Sekunden verzögert zu starten? Der Grund dafür ist das noch ein anderes Programm per Autostart gestartet wird und das Fenster dann über dem Chromium Fenster liegt.

  3. Hallo,

    ich muss vorausschicken, dass ich absoluter Anfänger bin; na gut…Also: Soweit ich weiß, ist es möglich, mit folgendem Skript „raspistill -t 0 -k -o image%03d.jpg“ und „Enter“ die Raspi-Kamera automatisch „auszulösen“ und die Bilder abzuspeichern. Ist es möglich, dass dass dieses Skrip schon beim Start automatisch „geladen“ wird, sodass nur noch „Enter“ betätigen muss, ohne die Konsole zu „laden“? Wenn ja: Wie?

    Vielen Dank!!! Heinz

    • Du machst ein Bash Script mit deinem Befehl und das Bash Script führst du dann mit dem Beispiel von oben aus. Hab es nicht ausprobiert, sollte aber so funktionieren.

    • Na ja…., wie gesagt: „ich muss vorausschicken, dass ich absoluter Anfänger bin; na gut“. Insofern kann ich mit Ihrer Antwort „Du machst ein Bash Script mit deinem Befehl und das Bash Script führst du dann mit dem Beispiel von oben aus.“ absolut nichts anfangen. Trotzdem danke….
      Heinz

    • Ganz vorkauen kann ich es dir auch nicht. Wenn du davon absolut Null Ahnung hast, ist es auch schwierig das zu erklären. Zumal wenn es nicht auf anhieb klappt auch umständlich wird das zu debuggen und zu lösen.

      Mit Bash Script meine ich folgendes:
      – Öffne ein Terminal / Bash
      – cd Desktop ENTER
      – nano raspistill.sh ENTER
      – Folgenden Code in die Datei schreiben:
      #!/bin/sh
      raspistill -t 0 -k -o image%03d.jpg

      – Strg + X
      – ENTER
      – Y ENTER

      Testen mit „bash raspistill.sh“. Wenn funktioniert, dann nach dem Beispiel oben „Neue Methode“ mit Chrome vorgehen und bei „Exec=“ schreibst du „Exec=bash /home/pi/Desktop/raspistill.sh“

      Evtl. hilft dir das weiter.

  4. Hi, ich habe alles wie oben beschrieben eingerichtet, allerdings wird das Display nach ein paar Minuten Schwarz (Bildschirmschoner oder ähnliches). Die Zeilen
    @xset s noblank
    @xset s off
    @xset -dpms
    habe ich eingetragen, aber trotzdem scheint es nicht richtig zu funktionieren.

    • Das Beispiel oben bezieht sich auf die alte Methode, die unter einem aktuellen Raspbian nicht mehr funktioniert.

      Inzwischen habe ich aber auch den neuen Pfad gefunden wo man sowas eintragen kann.

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

    • Habe vorher shutdown mit Cron getestet. Ging wunderbar. Nach Vorgehen per Anleitung funktioniert es nicht mehr. D.h. KEIN SHUTDOWN .
      Was könnte das Problem bzw. die Lösung sein ?
      Vielen Dank im Voraus. Mit freundlichen Grüssen Klaus-Dieter Brinkmann

  5. Hallo, hast du auch ein Lösung für die Oh nein-Fehlermeldung?

    Ich habe einen Raspi 4 2GB als Kiosksystem (Displaymonkey) und bei den Testläufen kommt ab und zu diese Fehlermeldung. Das Display wird in einem Kaffeeautomaten eingebaut, dann komme ich nicht immer hin und Per Putty geht nur ein Neustart.

    Hann mann diesen Fehler abfangen und den Chromium-Browser neu starten?
    Gruss Michael

  6. Hallo,
    ich bin noch auf der Suche nach einem Befehl, welcher den Bildschirmschoner unterdrückt damit der Kiosk Mode ständig angezeigt wird.
    Können sie mir helfen?
    Vielen Dank

  7. Problem gelöst, war einfacher, als gedacht…
    siehe Hinweis von hier https://unix.stackexchange.com/questions/56083/how-to-write-a-shell-script-that-gets-executed-on-login

    unter /etc/profile.d eine Datei anlegen mit Endung „sh“, z.B. welt.sh
    mit dem einzigen Inhalt: Exec=/usr/bin/python3.7 /home/pi/Desktop/HalloWelt.py
    Rechte zuweisen mit
    chmod +x /home/pi/Desktop/HalloWelt.py
    Raspi muss im Desktopmodus starten!

    Programm startet beim Boot, es liegt im Vordergrund, Tastatursteuerung/-eingaben möglich,
    habe im Python-Script ein Thread mit Tastaturabfrage (also Zeicheneingabe ohne Enter), auch das läuft bestens.
    ->alles schön 🙂

  8. Hi Christian,
    tolle Anleitung. Für mich als Neuen bestens 🙂
    Habe ein Python-Script nach der neuen Version zum auto-starten bekommen.
    Problem: das Programm läuft dann quasi im Hintergrund, nach dem Start des Pi sehe ich nur die GUI.
    Mein Programm erfordert aber Tastatureingaben. Wie komme ich an das Programm ran?
    Wenn ich mittels raspi-config einstelle, dass auf Consolenebene gestartet wird, bleibt der Autostart aus.
    Danke für alle Hinweise. Für mich als Linux-Nichtkenner bitte Idiodensicher 🙂

  9. Hallo,

    danke für den Hinweis mit dem neuen Autostart. Leider funktionieren die Flages aber nicht. Wird der Pi ungeplant ausgeschaltet und bootet wieder öffnet sich der Browser mit einem Fenster, das wissen möchte wie die Sitzung wieder hergestellt werden soll.

    Eine Idee?

    Danke
    Andreas

    • Ja, scheinbar haben sich ein paar der Schalter verändert.

      z.B.:
      –noerrordialogs zu –noerrdialogs
      –disable-session-crashed-bubble zu –disable-crash-reporter

  10. Hallo,
    deine Anleitung (neue Methode) hat super funktioniert.
    Meine Frage wäre nun, wie es möglich ist ein Auto-Refresh im Chromium einzubauen…
    Ich hoffe es gibt dafür einen simplen Befehl, der in dem Script eingebaut werden kann.

    Danke im Voraus!

    • Das geht nicht über irgendwelche Start-Parameter.

      So spontan fallen mir da nur 3 Möglichkeiten ein.
      a) Refresh in den Quellcode der Seite eintragen
      b) gucken ob es ein Addon für Chromium gibt mit dem man einen Refresh einstellen kann.
      c) einen Cronjob bauen der den Chrmium in Intervallen killt und dann neu startet.

      „C“ Eignet sich aber nur wenn der Intervall sehr groß ist…also der Refresh nur ein bis zweimal am Tag stattfinden soll. Cronjob kann eh nur auf 1 Minute runter und verursacht dann unnötig Last.

    • Danke für die schnelle Antwort. Versuche es gerade mit einem Addon.. Leider habe ich folgendes Problem:
      Sobald der Raspi bootet, startet er eine Website im Kiosk-Modus.. So wie in deiner Anleitung nunmal. Blöderweise wird dann auch ein „Rechtsklick“ blockiert. Ich muss in das Rechtsklick Menü gelangen, um die Auto Refresh Funktion anzuschalten. Woran liegt das, dass ein Rechtsklick blockiert wird?

    • Am Kiosk Modus. Du musst ohne den Kiosk Modus starten. Kann auch sein dass das Addon im Kios Modus nicht verfügbar ist.
      Ich habe sowas bisher noch nicht gebaut, daher kann ich da im Detail dann nicht helfen.

  11. Moin aus Hamburg! Ich habe folgendes Problem: Wenn ich bei der URL, die aufgerufen werden soll, eine Dateiendung – also bspw. http://xy.de/test.php“ – eingebe, mir dann Google aufgerufen wird. Wenn ich aber nur xy.de eingebe, wird die entsprechende Domain auch aufgerufen. Wie lässt sich das lösen dass ich auch eine Dateiendung in der URL aufrufen kann?
    Liebe Grüße, Henrik

    • Kann ich nicht reproduzieren. Wenn ich ne info.php auf einer domain aufrufe, dann wird das ganz normal angezeigt. Ich würde einen Tipfehler vermuten.

    • Zur Not mit einem Tiling Window Manager wie i3 oder sway, wobei es wahrscheinlich auch noch schlankere WM dafür gibt.

  12. Wie kann ich via Autostart zwei Verschiedene Webseiten auf zwei Monitor jeweils packen. Sozusagen den Bildschirm teilen ?

    Gruß Max

    • Puh da muss ich passen. Ist jetzt auch nicht unbedingt ein „Autostart“ Thema sondern eher was für den XServer der die grafische Oberfläche darstellt.

    • Hi, prinzipiell wie vorher auch mit unclutter.
      Inzwischen habe ich auch noch herausgefunden das die „autostart“ Datei im alten Pfad einfach unter einen neuem Pfad zu finden ist.

      Fast der gleiche Pfad wie vorher, aber statt /home/pi/.config/… in /etc/xdg/…

      Da findet sich so eine „autostart“ Datei wie früher.

  13. Wie kann ich vor Ort (ich habe ein LCD mit touch) den Vollbildmodus wieder beenden, gibt es dazu eine Tastenkombination?

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.