Linux verständniss Lirc

  • Hallo zusammen.
    Ich bräuchte hilfe.
    Ich versuche gerade Linux zu verstehen, am beispiel von Lirc.



    Ich habe easyvdr mit einer Gnome oberfläche installiert.
    Atric Ir-einschalter als empfänger.
    Soweit funktioniert auch alles.


    Jetzt will ich das ganze verstehen.
    Ich habe sowohl eine fertige lircd.conf am laufen gehabt, aber auch eine selber aufgenommen. Beide funktionierten.


    fertige lircd.conf (als beispiel den Go oder Info knopf)
    Go 0x00000000000017FB


    eigene lircd.conf (gleiches beispiel)
    Go 976 783 1868 .......


    Hier ist auffällig, das die beiden codes (der eigene ging über 4 zeilen) nichts gemeinsam haben, aber beide funktionieren. Was das soll wüsst ich auch gerne.


    Nur mit dieser Lircd.conf kann überhaupt erst die remote.conf erstellt werden.


    Hier wird das Go aus der lircd.conf "umbenannt" in LIRC.Info und das i in XKeySym.Info
    (Lirc steht wohl für lirc und xkeysym für mein keyboard das i hab ich beim anlernen angelernt)


    Aber wo finde ich die verbindung zwischen der /etc/lircd.conf und der /etc/vdr/remote.conf?
    Und wo die verbindung zwischen der remote.conf und dem auszuführenden Befehl im VDR?


    Meine Suche brachte mich unter anderem nach /usr/local/src/VDR
    Aber die Skripte sind sehr umfassend und mein linuxisch ist nicht gerade gut.


    aber in der keys.c (im genannten pfad) sind die Tasten angegeben.
    Hier wird aus Info plötzlich kInfo


    Mein bisher größtes script das auch funktioniert (sehr stolz ;) ) ist folgendes
    #!/bin/sh


    shutdown -h now


    (Gnome besitzt keinen power off knopf. zwar ist vdr in der lage den rechner runter zu fahren, aber ich wollte mein beeindruckendes wissen doch auch mal einsetzen.)


    Um beim Thema zu bleiben.
    Das verständniss dieser vielen verzwickungen möchte ich gerne haben um dann mal zu gucken wie die befehle von der tastatur über den comport in den lirc in die remote in den vdr kommen, damit ich dann mal ganz einfach den "knopf" Go in mein shutdown script einfügen kann.
    (es geht nur darum das das mal funktioniert. Der sinn dahinter ist keiner auser es zu verstehen. )


    Der nächste schritt wäre dann ein skript mit ner tastatur kombi wie "Alt + Tab" oder dem befehl zum minimieren maximieren auf den knopf zu legen.
    Fertige klamotten gibts mit sicherheit aber hier gehts ums verstehen.


    Ich danke euch schonmal.


    Gruß


    ckay

    VDR1: Asus p5n7a-vm, E5200, nexus-s nova-s | yavdr 0.5
    Clienten: Android-Androvdr, Win7 Xbmc


    Hardware eingemottet: siemens scovery260 256Mb Ram; hauppauge nexus-s 2.1; Samsung HD400LD 400 GB | easyvdr

  • Zitat

    Original von ckaytwo
    Aber wo finde ich die verbindung zwischen der /etc/lircd.conf und der /etc/vdr/remote.conf?
    Und wo die verbindung zwischen der remote.conf und dem auszuführenden Befehl im VDR?


    http://www.vdr-wiki.de/wiki/index.php/Remote.conf


    Beispiel:


    lircd.conf:
    Volume+ 0x000000000000102A


    remote.conf:
    LIRC.Volume+ Volume+


    Die Tasten bzw. Befehle, die vdr kennt, sind im wiki schon gelistet. Ihre Funktion ist in der MANUAL-Datei in den vdr-Sourcen bechrieben

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • Zitat

    Original von ckaytwo
    Hier ist auffällig, das die beiden codes (der eigene ging über 4 zeilen) nichts gemeinsam haben, aber beide funktionieren. Was das soll wüsst ich auch gerne.

    Wahrscheinlich wurde beim Anlernen der Code der FB (steht oben in der lircd.conf) nicht richtig erkannt und "raw" angelernt.
    Das ist zwar nicht ideal, funktioniert aber auch.

    Gruss
    SHF


  • Danke für die antworten. Wie kann ich vermeiden das der Falsche Code angelernt wird?


    0x00000000000017FB ist die reaktion auf die aktion Knopf drücken.
    Also ist das die Ausgabe eines Programms, moduls ....?!
    Dann kommt lirc ins spiel.
    Wenn eingang "0x00000000000017FB" dann ausgabe "Go"


    Soweit komm ich ja noch mit. Wobei es ja noch irgendwo was geben muss das sagt: Wenn 0x00000000000017FB kommt dann guck mal bitte in die lircd.conf und geb mir was dahinter steht.


    Ebenso werden ja auch sicherlich die signale von tastatur und co verarbeitet.


    Nun muss es doch möglich sein, unabhängig von eingabegerät jedoch vorzugsweise von fb mit lirc, dies in en skript zu packen.


    (die genauen befehle der skripts sind mir noch unbekannt, jeoch kann ein skript ja genau wie exel mit wenn/dann arbeiten. Heisst dann aber glaub ich if/then )


    Der aufbau eines skript müsste dann doch in etwa so aussehen:


    #!bin/bash


    wenn "Go" aus datei "/etc/lirc.conf" dann "shutdown -h now"


    oder bin ich da total auf dem Holzweg?

    VDR1: Asus p5n7a-vm, E5200, nexus-s nova-s | yavdr 0.5
    Clienten: Android-Androvdr, Win7 Xbmc


    Hardware eingemottet: siemens scovery260 256Mb Ram; hauppauge nexus-s 2.1; Samsung HD400LD 400 GB | easyvdr

  • Zitat

    Original von ckaytwo


    oder bin ich da total auf dem Holzweg?


    ich fürchte :)
    Ich kann Dir auch nicht ganz folgen.


    Der Rechner soll sich per FB abschalten? Dafür lernst Du eine Taste an, die Du als Power bezeichnest. Wenn Du die drückst, übergibt lirc an vdr das vdr-Kommando Power. vdr macht dann das, was ihm beim Starten mit der Option -s übergeben wurde. Das kann der aufruf von shutdown, powernow oder eines Scripts ein, dass vorher noch Timerdaten per ACPI ans Board übergibt.

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    2 Mal editiert, zuletzt von Dr. Seltsam ()

  • Power über vdr funktioniert gut. shutdown oder reboot habe ich nur gewählt, weil das einfache terminal befehle sind dessen ergebniss man sofort bemerkt ;)
    einfache befehle kann man ja auch über ein skript ausführen.
    Ich will solche befehle aber gerne mal mit lirc ansteuern.
    Mute hab ich aus der remote.conf gelöscht um doppelbelegung zu vermeiden.



    hab mich grad mal in lirc eingelesen.
    lirdd (Daemon) liest aus der lircd.conf die Tastenbelegung des empfangenen codes und kann sie ausgeben. Das ergebniss kann man mit irw sehen ???


    die remote.conf gibt diese Daten weiter an vdr (wie auch immer)


    Dann gibts doch aber noch lircrc. Lircrc kann die daten von lircd weiterverarbeiten.


    z.b. steht da ein auskommentierter befehl


    begin
    prog = irexec
    button = Power
    button = Power
    button = Power
    config = reboot
    end


    ok, funktioniert zwar nicht , aber so auf die art und weise hatte ich erhofft es zu schaffen.


    ich wollte mal nur einen button = Mute einsetzen, aber dennoch blieb der erhoffte reboot aus.

    VDR1: Asus p5n7a-vm, E5200, nexus-s nova-s | yavdr 0.5
    Clienten: Android-Androvdr, Win7 Xbmc


    Hardware eingemottet: siemens scovery260 256Mb Ram; hauppauge nexus-s 2.1; Samsung HD400LD 400 GB | easyvdr

  • schups

    VDR1: Asus p5n7a-vm, E5200, nexus-s nova-s | yavdr 0.5
    Clienten: Android-Androvdr, Win7 Xbmc


    Hardware eingemottet: siemens scovery260 256Mb Ram; hauppauge nexus-s 2.1; Samsung HD400LD 400 GB | easyvdr

  • Zitat

    Original von ckaytwo
    Ebenso werden ja auch sicherlich die signale von tastatur und co verarbeitet.

    Die Tastatur geht über /dev/input/eventx (wie auch der FB_Empfänger auf der FF).


    Zitat

    Wobei es ja noch irgendwo was geben muss das sagt: Wenn 0x00000000000017FB kommt dann guck mal bitte in die lircd.conf und geb mir was dahinter steht.

    Das macht alles der LIRCd, du hast konfiguriert wo der Empfänger angeschlossen ist und der LIRCd fragt den dann ab.


    Zitat

    lirdd (Daemon) liest aus der lircd.conf die Tastenbelegung des empfangenen codes und kann sie ausgeben.

    Genau.

    Zitat

    Das ergebniss kann man mit irw sehen ???

    Das ist aber eigentlich nur zum Test interessant.


    Zitat

    ich wollte mal nur einen button = Mute einsetzen, aber dennoch blieb der erhoffte reboot aus.

    Sollte eigentlich passen, schau mal hier (ganz unten) gibt es noch ein Beispiel.


    Die Wahrscheinlichste Ursache ist, dass der lircrcd nicht gestartet ist oder der Lirc-User kein Recht hat einen Reboot auszulösen.
    (Ich würde eher ein "echo "irgendwas" >> /verzeichnis/datei" nehmen, das ist praktischer ;) .)

    Gruss
    SHF


  • Danke. Die bestätigung das ich es wenigstens ein bischen verstanden habe ist mir sehr wichtig.
    Ich werde das dann mal austesten. jetzt wo du´s sagst könnte das wirklich sein. Trotz der tatsache das es nur root gibt muss ich das ausführen des scriptes immer bestätigen. Vielleicht hab ich die rechtevergabe nicht richtig gemacht. Muss ich nochmal nachlesen.


    Gruß


    ckay

    VDR1: Asus p5n7a-vm, E5200, nexus-s nova-s | yavdr 0.5
    Clienten: Android-Androvdr, Win7 Xbmc


    Hardware eingemottet: siemens scovery260 256Mb Ram; hauppauge nexus-s 2.1; Samsung HD400LD 400 GB | easyvdr

  • also... um das ganze mal ein wenig zu zerpflücken...


    vdr kennt intern nur eine begrenzete anzahl an tasten. das sind diejenigen die du in keys.c gefunden hast (kInfo, kRed, kBlue, kUp, ...)


    mit hilfe der Daten aus remote.conf werden nun die dateneingaben an den vdr in diese internen bezeichner umgesetzt.


    die remote.conf kann dabei daten für verschiedene eingabegeräte haben. möglich ist z.B. LIRC, KBD(Keyboard), XKeySym(kommt wohl von vdr-sxfe?), INPUT, ...
    um diese zuordnungen einmal zu erstellen startet der vdr einen eigenen lernprozess über das OSD. an dessen ende wird die remote.conf erzeugt.
    [das alles ist noch unabhängig von lirc]


    lirc selbst besteht typischerweise aus einem kernelmodul, das die empfänger-hardware steuert (z.B. lirc_serial) und dem lirc-daemon (lircd). dieser übersetzt anhand der lircd.conf die empfangenen daten in menschenlesbare tasten-codes.
    auch dazu gibt es mit irrecord einen anlernprozess. machmal kommt es aber dazu, das irrecord die fernbedienung nicht richtig versteht und daher die empfangenen signale nicht dekodieren kann. deshalb merkt es sich einfach das komplette signal und speichert dieses ab (=raw-modus), anstatt nur die dekodierten daten (und eine anweisung zum dekodieren) zu speichern.



    irexec ist unabhängig von vdr ein weiterer lirc-client. dieser verbindet sich mit dem lircd-prozess und wartet auf eingaben. diese werden dann passend zur .lircrc verarbeitet.
    in deinem beispiel muss man dreimal hintereinander power drücken, dann wird vom programm irexec (falls dies läuft!!) der befehl reboot abgesetzt. ich tippe mal darauf, das die nachfrage erscheint, weil du nicht /sbin/reboot aufrufts, sondern ein wrapper-script, welches noch die von dir erwähnte frage zur bestätigung stellt.

  • So. Ich habe gebastelt ;) Sehr erfolgreich durch eure hilfe.




    Es war wie befürchtet, das irexec ding war nicht gestartet.
    Es ist gar nciht so einfach die befehle dafür zu finden.


    Befehle für irexec die bei mir funktionierten:
    irexec starten: /usr/bin/irexec --daemon
    irexec stoppen: start-stop-daemon --stop --exec /usr/bin/irexec -- -d


    Änderungen in der config-datei von irexec -> lircrc werden erst nach einem neustart des irexec dingens angenommen.


    mit echo hab ich mich noch nicht beschäftigt, da es nicht auf anhib das tat was ich wollte, also hab ich die befehle eject und eject -t genutzt.


    begin
    remote = lircd.conf
    prog = irexec
    button = Mute
    config = eject
    end


    begin
    remote = lircd.conf
    prog = irexec
    button = Mute
    button = Mute
    config = eject -t
    repeat = 0
    end


    jetzt kommt folgender witz an der sache. wenn sowohl für eject als auch für eject -t nur einmal den button = Mute setzte, muss ich zweimal die taste Mute drücken damit überhaupt etwas passiert, und dann fährt er sofort widerzu.
    wenn ich es so wie oben belasse muss ich für beide befehle 2x drücken, aber es erfüllt seinen zweck. (in meinem stadium wollte ich noch keine abfragen einbauen ob offen oder geschlossen, weiss eh noch nicht wie ;) )


    mit repeat habe ich auch ausprobiert, aber kam ebenfalls zu keinem brauchbarem ergebniss. (öffnen oder schließen mit einem tastendruck)



    Die Tastatur habe ich auch gefunden, abe wie kann ich die datei anschauen? (würde gerne die tastatureingabe Alt+Tab in einem skript haben und dies mit der fernbedienung starten (oder direkt in der lircrc versuchen)




    SHF Die Codes sind RAW gewesen. Wenn man seine augen aufmacht steht das sogar in der Channels.conf drin.
    Ich hab mir ne neue gebastelt mit meinen Bezeichnungen und den RC5 codes. Jetzt reagiert die FB wesentlich schneller und auch die Reaktion von irexec hat sich geändert. Jetzt reagiert er auf jeden tastendruck. Erstaunlich was son paar zeilen machen.

    VDR1: Asus p5n7a-vm, E5200, nexus-s nova-s | yavdr 0.5
    Clienten: Android-Androvdr, Win7 Xbmc


    Hardware eingemottet: siemens scovery260 256Mb Ram; hauppauge nexus-s 2.1; Samsung HD400LD 400 GB | easyvdr

    Einmal editiert, zuletzt von ckaytwo ()

  • Zitat

    Original von ckaytwo
    (in meinem stadium wollte ich noch keine abfragen einbauen ob offen oder geschlossen, weiss eh noch nicht wie ;) )

    Ein Eintrag mit "eject -T" sollte das elegant Problem umgehen. (siehe "eject --help")


    Code
    begin
    remote = lircd.conf
    prog = irexec
    button = Mute
    config = eject -T
    repeat = 0
    end


    Zitat

    Die Tastatur habe ich auch gefunden, abe wie kann ich die datei anschauen? (würde gerne die tastatureingabe Alt+Tab in einem skript haben und dies mit der fernbedienung starten (oder direkt in der lircrc versuchen)

    Lirc kann afaik auch Kommandos von /dev/input/event entgegennehmen. Das ist soweit ich weiss ein ganz normaler Lirc-Treiber. Wie man das konfiguriert kann ich aber nicht sagen, müsste sich aber bei LIRC in der Doku finden lassen.


    Zitat

    SHF Die Codes sind RAW gewesen. Wenn man seine augen aufmacht steht das sogar in der Channels.conf drin.
    Ich hab mir ne neue gebastelt mit meinen Bezeichnungen und den RC5 codes. Jetzt reagiert die FB wesentlich schneller und auch die Reaktion von irexec hat sich geändert. Jetzt reagiert er auf jeden tastendruck. Erstaunlich was son paar zeilen machen.

    Sowas in der Art hatte ich mit "nicht ideal" gemeint ;).

    Gruss
    SHF


  • Zitat

    Lirc kann afaik auch Kommandos von /dev/input/event entgegennehmen. Das ist soweit ich weiss ein ganz normaler Lirc-Treiber. Wie man das konfiguriert kann ich aber nicht sagen, müsste sich aber bei LIRC in der Doku finden lassen.


    Das brauch ja vorerst gar nicht, obwohl das für die Zukunft vielleicht nicht ganz unwichtig ist.


    Ich möchte ja das Lirc ganz normale Tastaturbefehle an den PC schickt.
    Ich müsste mit der Lirc ausgabe (evtuell mit irecex) quasi ein imput event vorgaukeln.

    VDR1: Asus p5n7a-vm, E5200, nexus-s nova-s | yavdr 0.5
    Clienten: Android-Androvdr, Win7 Xbmc


    Hardware eingemottet: siemens scovery260 256Mb Ram; hauppauge nexus-s 2.1; Samsung HD400LD 400 GB | easyvdr

  • so. Bin jetzt nochmal an mein Problemkind gegangen (dets iso)
    Da ich aber nach grundlegende "probleme" habe, glaub ich das das hier schon richtig ist.


    Ich habe soweit alles installiert das ich mit mode2 die pulse pause signale empfange.


    nach einem manuellen neustart von lirc kann ich auch irw ohne fehlermeldung aufrufen, allerdings ohne das meine tastatur reagiert.


    per irrecord konnte ich auch eine lird.conf erstellen und nach /etc/lirc/lircd.conf kopieren.


    Woher weiss ich aber ob lirc auch dort nach der datei sucht?
    Da ich zwischnzeitlich lirc neu gesetuppt habe kann ich ja auch nicht darauf vertrauen das das noch der richtige ort ist.


    Die remote.conf hab ich geleert, aber beim booten will er nicht anlernen (was sich erklähren würde wenn lircd noch nicht mal richtig läuft)


    auf jedenfall wüsst ich ohne euch schon mal gar nicht wo ich suchen muss und ob die signale überhaupt ankommen. (da irrecord läuft geh ich davon aus das lircd funktioniert oder ist das ne falsche schlussfolgerung)


    Gruß


    ckay

    VDR1: Asus p5n7a-vm, E5200, nexus-s nova-s | yavdr 0.5
    Clienten: Android-Androvdr, Win7 Xbmc


    Hardware eingemottet: siemens scovery260 256Mb Ram; hauppauge nexus-s 2.1; Samsung HD400LD 400 GB | easyvdr

  • Zitat

    Original von ckaytwoIch möchte ja das Lirc ganz normale Tastaturbefehle an den PC schickt.
    Ich müsste mit der Lirc ausgabe (evtuell mit irecex) quasi ein imput event vorgaukeln.

    Ach sorum hast du das vor.
    Ich glaube aber nicht, dass das so einfach ist, es steht ja gar nicht fest an welches Programm dieser Tastencode gesendet werden soll.


    Da dürfte es aber eine andere Möglichkeit geben, schreib mal genauer, was du vor hast.
    Wenn es um die Umschaltung zwischen Programmen unter X geht, kann zB. KDE auch LIRC-Befehle ausführen.


    Zitat

    Woher weiss ich aber ob lirc auch dort nach der datei sucht?

    Das Startscript von LIRC (/etc/init.d/lirc ???) anschauen, Logfile anschauen (/var/log/syslog), das System nach weiteren lircd.conf durchsuchen oder det fragen.


    Zitat

    (da irrecord läuft geh ich davon aus das lircd funktioniert oder ist das ne falsche schlussfolgerung)

    Ich auch.


    Für mich sieht es danach aus, als ob Lirc nicht richtig konfiguriert ist.

    Gruss
    SHF


  • hab noch mal ein wenig rumgefummelt. was aber wohl zum erfolg geführt hat war eine fertige lircd.conf zu nehmen. Jetzt aber anderes Problem.


    irw gibt tastaturcodes raus, remote.conf gelöscht, aber das FB anlernen ist innerhalb von ner sekunde weg. so schnell bin ich nicht. Hab auch schon eine remote.conf selber erstellt. Aber ob die richtig ist.... auf jedenfall reagiert weder key noch fb.


    locate remote.conf findet übrigens nichts. Und beim neustart erstellt der vdr die datei auch nicht von alleine.


    wenn ich mit nano die remote.conf selber erstelle, muss ich dann rechte vergeben?


    kann ich den vdr dazu bewegen die fernbedienung anzulernen (ausser remote.conf löschen)


    gruß


    ckaytwo

    VDR1: Asus p5n7a-vm, E5200, nexus-s nova-s | yavdr 0.5
    Clienten: Android-Androvdr, Win7 Xbmc


    Hardware eingemottet: siemens scovery260 256Mb Ram; hauppauge nexus-s 2.1; Samsung HD400LD 400 GB | easyvdr

  • Zitat

    Original von ckaytwo
    kann ich den vdr dazu bewegen die fernbedienung anzulernen (ausser remote.conf löschen)

    Es reicht den Teil für die FB zu löschen.
    Den Keyboard-Teil, da steht irgendwas von "key" oder so am Anfang der Zeilen, kann man drin lassen.


    Zitat

    Und beim neustart erstellt der vdr die datei auch nicht von alleine.

    Das macht er beim Anlernen.


    Zitat

    wenn ich mit nano die remote.conf selber erstelle, muss ich dann rechte vergeben?

    Klar, der VDR muss Lese und Schreibzugriff haben.


    Zitat

    aber das FB anlernen ist innerhalb von ner sekunde weg. so schnell bin ich nicht.

    Dann leg halt was auf eine Taste bei der FB, das müsste klappen.

    Gruss
    SHF


Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!