neulinuxer
Anmeldungsdatum: 19. April 2009
Beiträge: 31
|
Moin Ihr Lieben, bei meinem Raspberry mit raspbian (debian) bin ich schon seit mehreren Stunden dran und versuche folgenden Befehl beim Systemstart auszuführen: Eingetragen in die rc.local VOR Exit 0: In der /usr/bin/aaainitradio stehen folgende Befehle drin: | modprobe lirc_rpi gpio_in_pin=22
/usr/bin/irexec -d
|
Leider funktioniert das nicht. Der Aufruf muss immer manuell angestoßen werden, damit eine Fernbedienung funktioniert. Selbstverständlich gehen alle Befehle und das Script aus der Konsole Das Ziel ist also die Befehle ODER das Script bei Systemstart auszuführen. Was mache ich da falsch? mfg Michael Moderiert von axt: Keine Ubuntu-Support-Anfrage, daher verschoben. Tag Raspbian hinzugefügt. Bearbeitet von axt: Codeblöcke (Symbol Zahnrad auf Papier) für bessere Erfaßbarkeit hinzugefügt.
|
Benno-007
Anmeldungsdatum: 28. August 2007
Beiträge: 29240
Wohnort: Germany
|
/usr/bin/aaainitradio ist ausführbar und gehört wem?
ls -hal /usr/bin/aaainitradio
Shebang auf Bash gesetzt?
Das
&
kann auch weg, eine Fehlerquelle weniger - falls danach keine Befehle mehr folgen bzw. der Befehl selbst flott komplett durchläuft, damit der nächste drankommen kann.
|
neulinuxer
(Themenstarter)
Anmeldungsdatum: 19. April 2009
Beiträge: 31
|
Moin Benno-007, der Befehl gibt folgendes aus: -rwxr-xr-x 1 root root 329 Nov 2 19:04 /usr/bin/aaainitradio Ich gehe mal davon aus dass das OK ist, da sich aaainitradio aufrufen lässt und auch funktioniert. Das Script hat folgenden Inhalt: #!/bin/sh
#
# Fernbedienung für Radio initialisieren
#
logger "MSG1070 VOR modprobe"
modprobe lirc_rpi gpio_in_pin=22
logger "MSG1071 NACH modprobe"
#
logger "MSG1074 VOR irexec"
/usr/bin/irexec -d
logger "MSG1075 NACH irexec" rc.local wird auch ausgeführt, da im syslog die logger stehen. Der Inhalt von syslog Nov 3 13:27:43 raspberrypi logger: MSG1071 NACH modprobe
Nov 3 13:27:43 raspberrypi kernel: [ 34.812785] lirc_rpi: auto-detected active low receiver on GPIO pin 22
Nov 3 13:27:43 raspberrypi logger: MSG1074 VOR irexec
Nov 3 13:27:43 raspberrypi logger: MSG1075 NACH irexec
Wenn /usr/bin/irexec -d oder aaainitradio manuell aufgerufen wird, funktioniert die FB. Ich habe einfach keine Ahnung, warum das nicht mit rc.local funktioniert. mfg Michael
|
lubux
Anmeldungsdatum: 21. November 2012
Beiträge: 13933
|
neulinuxer schrieb: Wenn /usr/bin/irexec -d oder aaainitradio manuell aufgerufen wird, funktioniert die FB. Ich habe einfach keine Ahnung, warum das nicht mit rc.local funktioniert.
Kann es sein, dass diese Anwendung (irexec) zum Zeitpunkt ihres Startes, ein Interface mit zugewiesener IP-Adresse braucht? Wenn ja, dann versuch mal statt der rc.local, mit einem Script aus dem Verzeichnis "/etc/network/if-up.d", diese Anwendung beim Systemstart zu starten.
|
neulinuxer
(Themenstarter)
Anmeldungsdatum: 19. April 2009
Beiträge: 31
|
Moin, vielen Dank. Ich habe jetzt ein Script nach etc/network/if-up.d kopiert. Wird das automatisch ausgeführt oder wo sage ich ihm das bei systemstart er das ausgühren soll? mfg Michael
|
lubux
Anmeldungsdatum: 21. November 2012
Beiträge: 13933
|
neulinuxer schrieb: Wird das automatisch ausgeführt ...
Ja. Wenn das Script ok ist, dann wird es automatisch ausgeführt. Ob das Script das tut was Du willst, hängt auch vom Inhalt des Scriptes ab.
|
neulinuxer
(Themenstarter)
Anmeldungsdatum: 19. April 2009
Beiträge: 31
|
Moin, da steht nur /usr/bin/irexec -d drin, manuell funkionierts ja..... mfg Michael
|
neulinuxer
(Themenstarter)
Anmeldungsdatum: 19. April 2009
Beiträge: 31
|
Moin, ausprobiert, geht auch nicht. mfg Michael
|
lubux
Anmeldungsdatum: 21. November 2012
Beiträge: 13933
|
neulinuxer schrieb: ausprobiert, geht auch nicht.
Evtl. hat "/usr/bin/irexec" besondere Abhängigkeiten, die beim bzw. während des Systemstartes noch nicht erfüllt sind. Evtl. mal eruieren, um welche Abhängigkeiten es geht und in welchem Zeitraum nach dem Systemstart, diese Abhängigkeiten erfüllt werden können. Evtl. könntest Du dann (... d. h. wenn geklärt) auch "sleep ..." (... oder besser bzw. zumindest gleichwertig) im Script verwenden.
|
neulinuxer
(Themenstarter)
Anmeldungsdatum: 19. April 2009
Beiträge: 31
|
Moin, und wie kriegt man die besondere Abhängigkeiten heraus? mfg Michael
|
neulinuxer
(Themenstarter)
Anmeldungsdatum: 19. April 2009
Beiträge: 31
|
Moin, Vielen Dank an Euch. Ein Schritt weiter, aber nicht zufriedenstellend, ist folgender:
den Befehl /usr/bin/irexec -d als letztes Statement in die /home/pi/.profile eingetragen, damit wird das wenigstens nach der Anmeldung funktionieren. Aber vieleicht gibt es da noch weitere Vorschläge bzw. Ideen. mfg Michael
|
neulinuxer
(Themenstarter)
Anmeldungsdatum: 19. April 2009
Beiträge: 31
|
Moin, vielen Dank an alle die sich dem Problem angenommen haben. Nach jetzt mittlerweile 2 Tagen Suchen, scripten, testen und ausprobieren, habe ich jetzt ein - wenn auch keine zufriedenstellende - Alternative gefunden. Sollte der pi mal aus sein oder neugestartet werde, kann ohne dem befehl /usr/bin/irexec .d der Infrarotempfänger mit der Fernbedienung angesprochen werden. Leider habe ich für das Problem mit dem Befehl im Systemstart KEINE Lösung gefunden. Nun wenn der pi dann wieder hochgefahren ist, so kann mit dem Befehl ssh pi@192.168.2.40 irexec -d der befehl von jedem Rechner abgesetzt werden, damit die Fernbedienung wieder aktiviert wird. Leider keine schöne Lösung. Noch einmal vielen Dank, trotzdem wäre ich für Lösungen sehr aufgeschlossen. mfg Michael
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11179
Wohnort: München
|
neulinuxer schrieb: Moin, und wie kriegt man die besondere Abhängigkeiten heraus?
Nachdenken und ggf. den Quellcode ansehen... irexec braucht einen bestehenden lircd-Sockel von dem es lesen kann (sonst startet es nicht erfolgreich).
Wenn ich das richtig im Kopf habe reicht es unter Debian aus, wenn du den lirc-daemon sauber konfigurierst und in der /etc/lirc/hardware.conf zusätzlich einträgst, dass irexec starten soll:
START_IREXEC="true"
|
lubux
Anmeldungsdatum: 21. November 2012
Beiträge: 13933
|
neulinuxer schrieb: ssh pi@192.168.2.40 irexec -d
der befehl von jedem Rechner abgesetzt werden, ...
BTW: Nur von jedem Rechner im (W)LAN, denn die IP-Adresse 192.168.2.40 kann im Internet nicht benutzt werden (... es sei denn Du hast eine Portweiterleitung eingerichtet), ssh sollte mit dem user pi auf dem Raspberry nicht dauerhaft benutzt werden, statt der Authentifizierung über Passwort sollte die Authentifizierung über Public-Keys (... insb. im Internet) verwendet werden.
|
neulinuxer
(Themenstarter)
Anmeldungsdatum: 19. April 2009
Beiträge: 31
|
Moin, herzlichen Dank an alle, die sich Gedanken gemacht und letztendllich zu einer Lösung beigetragen haben. Dank seahawk1986 mit der /etc/lirc/hardware.con und dem Schalter START_IREXEC=true war goldrichtig, hat aber zu anfang auch nicht funktioniert. Erst die Analyse des Programms bzw. des Scriptes etc/init.d/lirc brachte die Lösung.
Diese Zeile
| if [ ! -f /etc/lirc/lircrc ] || grep -q "^#UNCONFIGURED" /etc/lirc/lircrc; then
START_IREXEC=false
|
ist dafür verantwortlich. In einer Anleitung - die ich nicht mehr herbringe - stand geschrieben die Datei lirrc als versteckte Datei im Homeverzeichnis zu erstellen. Brav wie ich bin........ Da ich in der Syntax noch unbewandert bin, aber dank meiner Programmierkenntnisse anderer Sprachen, konnte ich soviel entziffern, als das die besagte Datei in /etc/lirc gesucht wird. Irgendwann kommt folgende Zeile in dem Script: | if [ "$START_IREXEC" = "true" ]; then
log_daemon_msg "Starting execution daemon: irexec"
start-stop-daemon --start --quiet --oknodo --exec /usr/bin/irexec -- -d /etc/lirc/lircrc < /dev/null
log_end_msg $?
fi
|
Der Parameter $START_IREXEC kann aber gar nicht true sein, da die besagte Datei gar nicht da ist. Abhilfe: Aus home in /etc/lirc/lircrc, reboot und voila .... geht doch. Also nochmals vielen lieben Dank. mfg Michael
|