Den zweiten Teil der ExecStart find ich nicht. Bei mir gibt es im etc Ordner keinen conf.d Ordner.
Ich hab mal nach lircrc gesucht. Die einzige Datei, die ich Namens lircrc gefunden habe ist storage Ordner und das ist eine .lircrc
In der wird die Verknüpfung zwischen dem Tastendruck und der ausführbaren .sh Datei hergestellt.
Was ich noch gefunden habe ist im etc Ordner einen Ordner Namens lirc mit einer lircd.conf.rpi Datei und einer lircd.conf.xbox Datei.
Hilft das irgendwie weiter?
autostart.sh Programm IREXEC
-
Igge -
4. November 2016 um 12:53 -
Erledigt
-
-
autostart.sh Programm IREXEC? Schau mal ob du hier fündig wirst!
-
Warum hast Du die anderen Ausgaben nicht gepostet?
Möglicherweise ist es wirklich die fehlende Conf. Die man-page beschreibt eindeutig, wie man erst mal eine Anfangs-Conf anlegt:
Code[b]irexec[/b] executes commands on an IR signal decoded by lircd, the LIRC daemon. It uses an lircrc config file where the [i]config = [/i]entries are executed. E. g., given the following config file snippet begin prog = irexec button = KEY_RED config = echo "KEY_RED" end
Was jetzt noch vage ist, ist die Definition von ~ in der Pfadangabe zur Conf in der service-unit. Wenn man diese Conf nicht in ein vages Homedir gemäß ~ anlegen würde, könnte man das besser mit einem absoluten Pfad in der service-unit regeln. Möglicherweise würde das das Problem lösen. Soll es aber über ~ sein, muss man ggf. halt experimentieren und mal schauen, wo man mit
tatsächlich landet. Das ließe sich ja dann in einen absoluten Pfad übersetzen. Ansonsten weiss ich nicht, welche User eingerichtet sind und ob der Standarduser der gleiche ist (root), der die systemstarts durchführt. Ist der Standarduser ein anderer als root, sind ~/ im Normalbetrieb und ~/ bei Systemstart zwei unterschiedliche Homedirs. -
ich hab da nix gepostet weil ich nicht weiter gemacht habe. Macht ja auch wenig Sinn wenn ich die falsche Datei dort einbinde. Dieses Config File hab ich schon erstellt. das ist bei mir unter /storage und heißt einfach nur .lircrc und sieht so aus. Dann pack ich das da mal an die zweite Stelle der ExecStart.
.lircrc:
begin
button = KEY_F1
prog = irexec
config = ./Hyperion-off.sh
endbegin
button = KEY_F2
prog = irexec
config = ./Hyperion-on.sh
end
Automatisch zusammengefügt:
Der Befehl hier (systemctl status lircd.service) bringt das. Also ist da kein lircd Service gestartet.
lircd.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)und der hier (dpkg -l | grep lircd) bringt das.
-sh: dpkg: not foundIst das nen folge Fehler von der fehlenden lircd.service?
-
Mach noch mal folgendes.... um mal zu sehen, obs da überhaupt was ähnlich oder verwandt aussehendes gibt, wo man mal weiter recherchieren könnte.
Zwei Ratschläge für die Zukunft.... Du solltest immer die vollständigen erbetenen Ausgaben posten, einschließlich des Befehls, der die Ausgabe durchführt. Und zweitens, bitte immer alle geforderten Ausgaben posten, selbst dann, wenn Du meinst, dass das unnötig ist. Das ist nämlich nie unnötig, sondern hilft immer dabei, sich ein Gesamtbild zu machen.... es sei denn, es handelt sich um seitenlange Ausgaben, die sollten natürlich passend auszugsweise gekürzt sein.
dpkg not found ist für mich wichtig, da ich jetzt weiss, dass entweder kein Debian-Derivat läuft oder das es keinen Paket-Manager gibt. Ich nehme aber mal an, dass es ursprünglich Raspian ist , die Entwickler aber das Paket-Management irgendwie abgeschaltet haben. Und damit sind wir beim nächsten Problem: kein Socket.
Ja, das ist wohl der fehlende Socket.... zumindest vermute ich das. Und wegen der Kombination dieser beiden Feststellungen kann ich mich jetzt nur noch ausklinken. Ich habe keine Ahnung, wie man unter LibreElec ohne Paket-Manager fehlende Software installiert. Jetzt könnte man höchstens noch mal prüfen, ob vielleicht pacman oder yum als Tools fürs Paketmanagement vorhanden sind.... ich glaubs aber eher nicht. Vielleicht sind fehlende Pakete auch einfach nur zu downloaden, an richtiger Stelle zu entpacken und entsprechende Starts einzurichten. Auch das ist möglich. *hmmmm*Meiner unmaßgeblichen Meinung nach funktionert das nicht, weil der Socket-Layer anscheinend nicht installiert ist. Und das lässt sich imho wohl nur mit mehr Sachkenntnis lösen, als ich das jetzt hier ohne "Objekt" habe. Machbar ist sicher ne Menge, aber ab hier wärs für mich nur trockenschwimmen. Tut mir leid.
-
Ok.
Der Befehl (systemctl -l | grep ircd) gibt das aus:
eventlircd.service loaded active running Eventlirc server daemon
lircd@lirc0:default:lircd.conf.rpi.service loaded active exited Lirc with lirc0:default:lircd.conf.rpi
system-lircd.slice loaded active active system-lircd.sliceund der Befehl (systemctl -l | grep lirc) gibt das aus:
sys-devices-platform-lirc_rpi-lirc-lirc0.device loaded active plugged /sys/devices/platform/lirc_rpi/lirc/lirc0
eventlircd.service loaded active running Eventlirc server daemon
lircd@lirc0:default:lircd.conf.rpi.service loaded active exited Lirc with lirc0:default:lircd.conf.rpi
system-lircd.slice loaded active active system-lircd.sliceJa. Danke dir nochmal für deine Hilfe. Was ich an dem ganzen System nur nicht verstehe ist, warum funktioniert das alles wenn ich es per Hand starte aber nicht wenn es automatisch gestartet werden soll?
MfG Igge
-
Der Befehl (systemctl -l | grep ircd) gibt das aus:eventlircd.service loaded active running Eventlirc server daemon
lircd@lirc0:default:lircd.conf.rpi.service loaded active exited Lirc with lirc0:default:lircd.conf.rpi
system-lircd.slice loaded active active system-lircd.sliceVersuch bitte solcherart Ausgaben in allgemein akzeptierter Form zu posten, und zwar in Code-Tags ... und immer die Ausgabe einschließlich dem Befehl. Das ist dann optisch deutlich vom normalen Posting-Text und den Textzitaten getrennt, sieht dann so aus und ist damit wesentlich besser lesbar:
Codesystemctl -l | grep ircd) eventlircd.service loaded active running Eventlirc server daemon lircd@lirc0:default:lircd.conf.rpi.service loaded active exited Lirc with lirc0:default:lircd.conf.rpi system-lircd.slice loaded active active system-lircd.slice
Was ich an dem ganzen System nur nicht verstehe ist, warum funktioniert das alles wenn ich es per Hand starte aber nicht wenn es automatisch gestartet werden soll?Das war mir neu... dann muss es auch über die Unit funktionieren. Poste mal alle manuellen Schritte die zum erfolgreichen manuellen Start führen.... aber wirklich vom Terminalfenster alle Ausgaben, und zwar unzerrissen und ohne eigene Kommentare dazwischen.... aber auch nix anderes dazwischen ... wirklich nur die korrekten Befehle, mit denen das Programm danach erfolgreich läuft.
-
Das war mir neu... dann muss es auch über die Unit funktionieren. Poste mal alle manuellen Schritte die zum erfolgreichen manuellen Start führen.... aber wirklich vom Terminalfenster alle Ausgaben, und zwar unzerrissen und ohne eigene Kommentare dazwischen.... aber auch nix anderes dazwischen ... wirklich nur die korrekten Befehle, mit denen das Programm danach erfolgreich läuft.Das hatte ich allerdings schon in meinem ersten Post geschrieben. Das mit dem Code ist einfach.
Meldungen vom System kommen da keine. Mehr muss ich nicht eingeben und schon geht es. Geht halt nur nicht wenn ich es versuche irgendwo rein zu schreiben um es beim hochfahren automatisch zu starten.
MfG
-
Funktioniert das auch? Wenn nicht die Pfadangabe prüfen. Gegebenenfalls auch die Fehlermeldung posten.
Bitte anschließend, wenn es erfolgreich war, die vollständige Zeile posten, einschließlich Pfad. Wenn das wie in deinem Beispiel funktioniert, geht das auch bei Systemstart.
-
Servus,
nein. Das hier funktioniert nicht. Bingt aber auch keine Fehlermeldungen.Das hier funktioniert. Das hab ich aber auch schon versucht sowohl in deine irexec.service als auch in die autostart.sh rein zu schreiben. Ging aber nicht beim starten.
-
Dann habe ich noch eine letzte Idee, mit der ich es versuchen würde.... aber wichtig: KEINE konkurrierenden Prozesse generieren. Wenn da noch was in der autostart.sh enthalten sein sollte, MUSS das deaktiviert werden. Sonst wirst Du nie erfahren, ob sich der Prozess nicht vielleicht durch 2 Starts einfach gegenseitig behindert.
Code
Alles anzeigen[Unit] Description=Start irexec at boot After=network-online.target [Service] Type=simple ExecStartPre=/bin/sleep 10 ExecStart=/usr/bin/irexec & [Install] WantedBy=multi-user.target
" Enabled" ist diese Unit bereits. Du solltest sie nur einmal "reloaden"
Probiere, was beim manuellen Start passiert und poste mal die Ausgaben:
Wenn es gestartet wird, einmal rebooten und prüfen, was draus geworden ist:
-
hier der code inklusive der Ausgabe.
Code
Alles anzeigensystemctl status irexec.service ● irexec.service - Autostart von irexec als Daemon Loaded: loaded (/storage/.config/system.d/irexec.service; enabled; vendor preset: enabled) Active: inactive (dead) since Sat 2016-11-12 19:29:53 CET; 1min 12s ago Process: 595 ExecStart=/usr/bin/irexec & (code=exited, status=0/SUCCESS) Process: 502 ExecStartPre=/bin/sleep 10 (code=exited, status=0/SUCCESS) Main PID: 595 (code=exited, status=0/SUCCESS) Jun 22 17:58:23 LibreELEC systemd[1]: Starting Autostart von irexec als Daemon... Nov 12 19:29:53 LibreELEC systemd[1]: Started Autostart von irexec als Daemon. Nov 12 19:29:53 LibreELEC irexec[595]: irexec: could not open config file & Nov 12 19:29:53 LibreELEC irexec[595]: irexec: No such file or directory
Gehen tut es auf jeden Fall nicht. Mal ne dumme Fage, hattest du nicht gesagt das bei Type das symple nicht funktioniert? Hab die irexec.service jetzt so umgeschrieben.
-
Der Fehler ist eindeutig: irexec findet während des Boots seine Config nicht und interpretiert den Hintergrund-Ampersand als Conf, was natürlich falsch ist.... aber beim manuellen Start wird sie gefunden. Warum? Wo ist der Unterschied? Ich nehme an, in den Shellvariablen, die zum Zeitpunkt des Boots nicht gesetzt sind.... soll heissen, vielleicht fehlt einfach nur sowas wie ein gesetzter PATH im Environment.
Zwei Möglichkeiten sehe ich.... erstens, in der Manpage des installierten irexec nachsehen, was dort zur config steht, prüfen, ob die als Parameter übergeben werden kann. Dann feststellen, wo die tatsächlich liegt und prüfen, wie man sie als Commandline-Parameter korrekt übergibt.... und danach dann die Service-Unit anpassen. Alternativ das benötigte Environment in der Service-Unit setzen. Ist beides Frickelkram, aber durchaus machbar.
Leider kann man das nur sinnvoll tun, wenn man selber am PC sitzt... jetzt hier per Ferndiagnose ohne eine äquivalente Installation wäre ein Treffer ein reiner Glückstreffer.
Tut mir leid.... ich bin am Ende....
-
Gab es hierzu noch Ergebnisse? Ich Kämpfe mit denselben Problem.
Ich werde morgen nochmal versuchen die letzten Schritte hier nachzuvollziehen aber ich tu mir noch ziemlich schwer..
-
Jetzt mitmachen!
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!