autostart.sh Programm IREXEC

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • 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?

  • 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

    Code
    cd ~


    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.

    Einmal editiert, zuletzt von WinterUnit16246 (9. November 2016 um 22:41)

  • 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
    end

    begin
    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 found

    Ist das nen folge Fehler von der fehlenden lircd.service?

    Einmal editiert, zuletzt von Igge (9. November 2016 um 22:58)


  • Der Befehl hier (systemctl status lircd.service) bringt das. Also ist da kein lircd Service gestartet.

    Code
    lircd.service
      Loaded: not-found (Reason: No such file or directory)
      Active: inactive (dead)
    Code
    dpkg -l | grep lircd
    -sh: dpkg: not found


    Mach noch mal folgendes.... um mal zu sehen, obs da überhaupt was ähnlich oder verwandt aussehendes gibt, wo man mal weiter recherchieren könnte.

    Code
    systemctl -l | grep ircd
    systemctl -l | grep lirc

    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.

    Code
    Ist das nen folge Fehler von der fehlenden lircd.service?


    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.

    Einmal editiert, zuletzt von WinterUnit16246 (10. November 2016 um 15:18)

  • 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.slice


    und 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.slice


    Ja. 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.slice

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

    Code
    systemctl -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.

    Einmal editiert, zuletzt von WinterUnit16246 (10. November 2016 um 21:20)


  • 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.

    Code
    irexec &

    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

    Einmal editiert, zuletzt von Igge (10. November 2016 um 21:47)

  • Code
    /usr/bin/irexec --daemon

    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.

    Einmal editiert, zuletzt von WinterUnit16246 (11. November 2016 um 09:35)

  • Servus,
    nein. Das hier funktioniert nicht. Bingt aber auch keine Fehlermeldungen.

    Code
    /usr/bin/irexec --daemon


    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.

    Code
    /usr/bin/irexec &

    Einmal editiert, zuletzt von Igge (11. November 2016 um 20:57)


  • 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.

    Code
    /usr/bin/irexec &

    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
    nano /storage/.config/system.d/irexec.service

    " Enabled" ist diese Unit bereits. Du solltest sie nur einmal "reloaden"

    Code
    systemctl daemon-reload

    Probiere, was beim manuellen Start passiert und poste mal die Ausgaben:

    Code
    cd /storage/.config/system.d
    systemctl start irexec.service
    systemctl status irexec.service

    Wenn es gestartet wird, einmal rebooten und prüfen, was draus geworden ist:

    Code
    systemctl reboot
    systemctl status irexec.service

    Einmal editiert, zuletzt von WinterUnit16246 (12. November 2016 um 11:04)

  • hier der code inklusive der Ausgabe.

    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.

    Einmal editiert, zuletzt von Igge (12. November 2016 um 19:37)

  • Code
    systemctl status irexec.service
    
    
    ● irexec.service - 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

    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....

    Einmal editiert, zuletzt von WinterUnit16246 (12. November 2016 um 20:26)

  • 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!