Frage von DerHansVader, 87

Wieso wird GPIO nicht per Autostart angesteuert?

Hallo, ich habe bei meinem Raspberry Pi in die "/etc/rc.local" - Datei eine Datei eingetragen, welche ein Bild kopieren soll und dann eine LED anschalten soll. Wenn ich die Datei direkt starte, funktioniert alles problemlos. Wenn ich allerdings das Ganze per Autostart ausführen lasse kopiert es zwar aber die LED geht nicht an. Woran kann das liegen?

LG.

Expertenantwort
von guenterhalt, Community-Experte für Computer & Linux, 62

leider hast du den Code deines Scripts nicht veröffentlicht. Daher kann ich nur raten:

In der /etc/init.d/rc.local  wird die RATH-Variable auf
PATH=/sbin:/usr/sbin:/bin:/usr/bin

gesetzt. Sollten in deinem Script Aufrufe ohne volle Pfadangabe vorhanden sein, dann wird diese Programm nicht gefunden und auch nicht ausgeführt.

Im laufenden System sind auch noch andere Pfade enthalten (bei mir)

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games

enthalten.
Wenn das die Ursache ist, dann gibt es zwei Möglichkeiten:

1. schreibe dein Script zur Steuerung der LED's um und rufe das betreffenden Programm mit seinem gesamten Pfad auf.

2. erweitere in der rc.local die PATH-Variable durch die Einträge, die es dann auch im Terminal gibt (Doppelpunkte nicht vergessen! ).

Kleine Ergänzung: unter Autostart versteht man normalerweise Programme, die beim Login eines Users aufgerufen werden. Die  rc.local gilt aber systemweit, sie wird beim Booten abgearbeitet.


Kommentar von guenterhalt ,

Prüfe auch mal, ob in deinem Script auch andere Shell-Variable (environment-Varable) benutzt werde, die nur beim Login ( /etc/profile, /etc/bash.bashrc , ~/.profile , ~/.bashrc ) gesetzt werden.

Kommentar von DerHansVader ,

Wenn ich in die rc.local - Datei :

/in.sh

exit 0

schreibe. Ist das dann so richtig? Und die in.sh liegt dierekt im "Hauptverzeichnis" also denke ich, dass der Pfad doch eig. stimmt..

Kommentar von guenterhalt ,

/in.sh

Wenn in.sh die Datei ist, die die Befehle enthält, um die LED's zu schalten und sie sich direkt unter / befindet, dann ist das schon richtig.

Da, so habe ich das Verstanden, die Bilddatei durch einen Befehl in der in.sh kopiert wurde, dann wird sie doch auch aufgerufen.

Das habe ich mit Pfad- und anderen Variablen auch  nicht gemeint.
Welche Informationen aus irgendwelchen Variablen benötigt werden, weiß ich nicht.  

Schreibe doch in die in.sh die Zeile

logger $PATH

Damit wird der Inhalt beim nächsten Booten in die Datei /var/log/messages geschrieben.  Vergleich dann die geschrieben Zeile mit echo $PATH, wenn du dich einloggen kannst.

Antwort
von KnusperPudding, 68

Ich habe nur eine Vermutung - Kann mich auch täuschen.. Kann es sein, dass zum Zeitpunkt des Ansteuerns eventuell noch nicht die Funktionalität zur Verfügung steht, die die LEDs ansteuern lässt? :/ 

Kommentar von DerHansVader ,

Ja das war auch meine erster Gedanke.. aber da die Datei eigentlich als letzes ausgeführt wird müssten alle Treiber usw. schon geladen sein. :/

Kommentar von KnusperPudding ,

Ich weiß, klingt jetzt komisch.. aber .. wenn du anstatt dieser Datei eine andere Datei mal ausprobierst, die ausschließlich die LED anschaltet.. und diese dann im Autostart verwendest?

Kommentar von Rynak ,

Oder stelle testweise 10 Sekunden Verzögerung vor die LED

Kommentar von Linuxhase ,

@DerHansVader

aber da die Datei eigentlich als letzes ausgeführt wird müssten alle Treiber usw. schon geladen sein. :/

müsste?!!

sleep 5

in das Script vor dem Kommando einfügen.

Damit kannst Du eine Wartezeit eintragen um so wenigstens ausschliessen zu könen das es an nicht gestarteten Prozessen liegt. Ansonsten vermute ich auch eher eine variable Pfadangabe (oder gar keine)!

Linuxhase

Antwort
von DerHansVader, 31

Okay. Also folgendes.. Ich hab hier einfach mal ein Bsp:

Ich gehe in "/etc/rc.local"

Schreibe dort hinein:

---------------------

/in.sh

exit 0

---------------------

Die "in.sh" - Datei liegt direkt im "Hauptverzeichnis" also denke ich, dass der Pfad richtig ist. Also was mach ich falsch?

Keine passende Antwort gefunden?

Fragen Sie die Community