staging.inyokaproject.org

[Raspbian] Systemstart

Status: Gelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

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:

1
/usr/bin/aaainitradio &

In der /usr/bin/aaainitradio stehen folgende Befehle drin:

1
2
modprobe lirc_rpi gpio_in_pin=22
/usr/bin/irexec -d

Leider funktioniert das nicht.

Der Aufruf

1
irexec -d

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

/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: 14402

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: 14402

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: 14402

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: 11278

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: 14402

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

1
2
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:

1
2
3
4
5
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

Antworten |