[Gelöst] Remote-Probleme nach Reboot

  • Hallo zusammen,


    ich habe neulich meinen VDR mit Ubuntu 18.04 und dem Ansible Skript neu aufgesetzt. Das hat auch ziemlich gut geklappt. Allerdings wird der zweite Tuner meiner Hauppauge WinTV-dualHD erst ab Kernel 4.18 sauber unterstützt. Daher habe ich mittels ukuu verschiedene Kernelversionen installiert und getestet. Leider funktioniert (der mit Ubuntu 18.04 mitgelieferte) LIRC ab 4.16 nicht mehr auf dem "klassischen Wege", da sich wohl irgendwelche Schnittstellen geändert haben. Jedenfalls musste ich auf den neuen Weg mit ir-keytable und dem Kernel eigenen IR Support umstellen. Auch das hat nach einiger Fummelei geklappt. Die Kommandos der Fernbedienung werden sogar weniger hakelig verarbeitet als zuvor, alles läuft sehr, sehr "smooth".

    Nun musste ich meinen VDR rebooten und siehe da, der VDR reagierte nicht mehr auf die Fernbedienung. Auch mit "irw" wurden keine Tastendrücke erkannt - was vor dem Reboot klappte. "ir-keytable" zeigte den IR-Receiver (Serial IR type home-brew) jedoch so an wie auch vor dem Reboot. Nach einem "systemctl restart lirc" klappte es mit "irw" wieder sauber, mit dem VDR jedoch erst nachdem ich diesen ebenfalls restartet hatte.


    Daraus ergeben sich für mich zwei Fragen:

    1. Warum funktionierte der grundsätzliche Empfang der IR-Kommandos mit irw nach einem Neustart des Dienstes - ohne Änderung der Konfig

    2. Warum brauchte der VDR ebenfalls einen restart? Wenn alles einmal funktioniert kann ich den lirc beliebig oft Neustarten - wenn er wieder läuft klappt's direkt auch wieder mit dem VDR.


    Hat jemand eine Idee für dieses verhalten? Welche logs oder konfig-dateien soll ich für die Analyse bereitstellen?


    Danke schon vorab für jeden Tip!


    Viele Grüße,

    Stephan

  • Wenn du die lircd.service (oder die lircd.socket) demaskierst, kloppen die sich mit eventlircd um /run/lirc/lircd - da man lircd mit Ausnahme einiger besonderer Empfänger nicht benötigt (für den yaUsbIR Einschalter und den Atric IR-Wakeup USB konfiguriert das Ansible-Playbook lircd passend), sollten diese Units deaktiviert bleiben. Ich würde also mal folgendes probieren: systemctl mask --now lircd.service lircd.socket und dann schauen, ob es nach einen Neustart passt.


    Leider funktioniert (der mit Ubuntu 18.04 mitgelieferte) LIRC ab 4.16 nicht mehr auf dem "klassischen Wege", da sich wohl irgendwelche Schnittstellen geändert haben. Jedenfalls musste ich auf den neuen Weg mit ir-keytable und dem Kernel eigenen IR Support umstellen. Auch das hat nach einiger Fummelei geklappt.

    Eigentlich musst man nur die gewünschte serielle Schnittstelle auswählen: https://github.com/yavdr/yavdr…bionic/group_vars/all#L79 und die Raute vor der Rolle für lirc entfernen: https://github.com/yavdr/yavdr…ob/bionic/yavdr07.yml#L35

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Hallo Skyhawk,


    ich habe dein Kommando abgesetzt, aber es änderte sich dadurch gar nichts. Dann fiel mir auf, dass der service - zumindest bei mir - lirc (ohne "d") heißt. Hab dann Dein Kommando nochmal abgesetzt mit lirc statt lircd. Nach einem Reboot listete ir-keytable dann jedoch meinen homebrew receiver (Atric IR-Einschalter V5) gar nicht mehr auf. Zudem fiel mir auf, dass das serial_ir Modul gar nicht geladen war. Ein "modprobe serial_ir" sorgte dann dafür das das Modul geladen wurde, aber auch danach wurden keine Tastendrücke von irw oder dem VDR erkannt... :-(


    Viele Grüße,

    Stephan

  • Was genau hattest du denn da selbst angepasst? Wenn du wie oben beschrieben die Rolle serial-ir mit dem Playbook laufen lässt, sollte das eigentlich alles automatisiert passieren und du musst nur noch die gewünschte Keytable für den Empfänger in der etc/rc_maps.conf hinterlegen.


    Nachträglich geht das natürlich auch noch (davor am besten die eigenen Anpassungen an Lirc bzw. Systemd Units dafür und dem Laden der Module rückgängig machen) - einfach wie oben beschrieben die Raute vor der Rolle im Playbook entfernen und die gewünschte serielle Schnittstelle in der group_vars/all (oder einer selbst anzulegenden host_vars/localhost angeben, dann im Verzeichnis von yavdr-ansible den folgenden Befehl ausführen:

    sudo -H ansible-playbook yavdr07.yml -b -i 'localhost_inventory' --connection=local --tags="serial-ir"

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Hab nun das ansible skript wie angegeben aufgerufen (mit lirc masked). Nach reinem Reboot ist serial_ir geladen und der Adapter wird bei ir-keytable angezeigt.

    Code
    1. root@vdr:~# dmesg | grep serial
    2. [ 9.555515] serial_ir serial_ir.0: auto-detected active low receiver
    3. [ 9.739556] rc rc0: Serial IR type home-brew as /devices/platform/serial_ir.0/rc/rc0
    4. [ 9.739592] input: Serial IR type home-brew as /devices/platform/serial_ir.0/rc/rc0/input2
    5. [ 9.739810] rc rc0: lirc_dev: driver serial_ir registered at minor = 0, raw IR receiver, raw IR transmitter
    Code
    1. root@vdr:~# ir-keytable
    2. Found /sys/class/rc/rc0/ (/dev/input/event2) with:
    3. Name: Serial IR type home-brew
    4. Driver: serial_ir, table: rc-rc6-mce
    5. lirc device: /dev/lirc0
    6. Supported protocols: other lirc rc-5 rc-5-sz jvc sony nec sanyo mce_kbd rc-6 sharp xmp
    7. Enabled protocols: lirc rc-5
    8. bus: 25, vendor/product: 0001:0001, version: 0x0100
    9. Repeat delay = 500 ms, repeat period = 125 ms

    Mit mode2 werden auch Tastendrücke meiner VDR remote erkannt. ir-keytable -t zeigt jedoch mit der gleichen Fernbedienung nichts an :-( Hab verschiedene Protokolel (RC5,RC6,NEC) ausprobiert aber nichts klappte. Was mich wundert: Als enabled protocol wird immer zusätzlich zum händisch gewählten Protokoll auch "lirc" angegeben. Ist das korrekt so?

    Was mir zufällig auffiel: Wenn ich statt auf meiner normalen VDR FB auf einer alten Hauppauge WinTV Remote Tasten drücke, so werden bei laufendem "ir-keytable -t" die entsprechenden Scancodes erkannt und ausgegeben! Und das selbst wenn ich vorher mit ir-keytable -c die tables cleare. Aus irgendeinem Grunde scheint der meine Remote nicht zu mögen, obwohl sie mit lirc problemlos funktioniert hat. :-(

  • ir-keytable -t zeigt jedoch mit der gleichen Fernbedienung nichts an

    Das kann nur etwas anzeigen, wenn eventlircd nicht läuft, da das die Devices exklusiv öffnet - du kannst eventlircd vorübergehend so stoppen: systemctl mask --now --runtime eventlircd.{socket,service} und so wieder starten: systemctl unmask --now eventlircd.{socket,service}

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Auf welches IR-Protokoll ist die OneForAll denn eingestellt? Wie sah die lircd.conf dafür aus?

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Die angezeigten events sins wie gesagt alle von der Hauppauge Remote, keiner von der OneForAll, die meine eigentlich Remote ist

  • Hier die lircd.conf meiner OneForAll:

  • Das sieht schon nach NEC aus - es kann immer nur ein Kernel-Decoder aktiv sein, also müsstest du sudo ir-keytable -p nec -c aufrufen, dann sollten für die Hauppauge-FB keine Tastendrücke bei sudo ir-keytable -t mehr kommen, aber dafür für NEC.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Komisch, zusammen mit lirc hat es funktioniert wenn ich als Protokoll RC5 angegeben habe. In der Tat werden nun mit eingestelltem NEC Protokoll (auch bei laufendem eventlircd) Tastendrücke erkannt. :-) Ich habe die Keymap allerdings anpassen müssen, da die zuvor in der lircd.conf gespeicherten Codes anders waren. Nun ist es jedoch so, dass MANCHE Tasten am VDR ankommen (z.B. 0-9, Pfeiltasten, Volume +-) , andere aber nicht, obwohl sie mit ir-keytable -t entsprechend erkannt werden (z.B. KEY_MENU, KEY_OK, Farbtasten, etc.). Hast Du noch eine Idee woran das liegen könnte?


    1000 Danke übrigens für Deine tolle Hilfe! :-)


    Viele Grüße,

    Stephan

  • Das sieht schon nach NEC aus - es kann immer nur ein Kernel-Decoder aktiv sein ...

    Sicher?


    Also ich habe hier bei meiner Chinabox auch "serial_ir" laufen und kann das mit 2 unterschiedlichen FBs bedienen, eine mit "nec"-Protokoll und eine mit "rc-5"-Protokoll.


    Dazu musste ich damals nur beide Protokolle aktivieren (ist jetzt nur aus dem Gedächtnis, der Befehl kann auch etwas anders sein):

    ir-keytable -p nec,rc-5 -t


    Mit ir-keytable kann man dann nachschauen, welche Protokolle aktiviert sind. das sieht dann bei mir z.B. so aus:

    Code
    1. #ir-keytable
    2. Found /sys/class/rc/rc0/ (/dev/input/event5) with:
    3. Driver: meson-ir, table: rc-empty
    4. lirc device: /dev/lirc0
    5. Supported protocols: lirc rc-5 jvc sony nec sanyo mce_kbd rc-6
    6. Enabled protocols: rc-5 nec
    7. Name: meson-ir
    8. bus: 25, vendor/product: 0000:0000, version: 0x0000
    9. Repeat delay = 500 ms, repeat period = 125 ms

    Bei "Enabled protocols: rc-5 nec" sind hier die beiden benutzbaren Protokolle aufgeführt.



    In der zugehörigen /etc/rc_keymaps/remote-config müssen dann beide Protokolle in der 1. Zeile stehen:

    # table remote-config, type: rc-5,nec


    Und dazu werden dann beide ermittelten Keycodes für die einzelnen FB-Tasten in diese Datei eingetragen.

    Hier mal nur als Beispiel zuerst der rc-5-Code und dann der nec-Code, wie das in meinem Fall aussieht:

  • Ok, wieder was gelernt :)


    Aber wenn Fernbedienungen mit unterschiedlichen IR-Protokollen die selben Address- und Command-Bytes nutzen, kann es zu Kollisionen kommen.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Jemand ne Idee warum manche Tasten im VDR nicht funktionieren, andere aber schon? Das die Menü-Taste nicht funktioniert ist schon ziemlich nervig. ;-)


    Wie zu sehen ist wird KEY_MENU von ir-keytable erkannt, aber der VDR reagiert nicht darauf :-(

  • Die Tasten sollten funktionieren, sobald du eventlircd wieder startest (dann sollten die Tastendrücke auch mit irw sichtbar sein).

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Nach reboot ist eventlirc wieder da, klappt aber trotzdem nicht. Bzgl. der Menü-Taste habe ich nun gesehen, dass beim Drücken folgender EIntrag im Log erscheint:


    [softhddev]FeedKeyPress: remote 'XKeySym' not found


    Hier meine remote.conf:

  • Nach reboot ist eventlirc wieder da, klappt aber trotzdem nicht. Bzgl. der Menü-Taste habe ich nun gesehen, dass beim Drücken folgender EIntrag im Log erscheint:


    [softhddev]FeedKeyPress: remote 'XKeySym' not found

    Das ist merkwürdig, denn eigentlich sollte der X-Server alle Fernbedienungen ignorieren, die das udev-Tag für eventlircd tragen - gibt es auf deinem System eine /etc/X11/xorg.conf.d/40-ignore-eventlircd.conf ?

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Ja, gibt es:


  • Und das Kernel-Input Device für den seriellen Empfänger hat auch das udev-Attribut eventlircd_enable=true?


    Auf meinem System (wo ich kein Problem mit der Menü-Taste habe), sieht das aktuell so aus:

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)