IR-Receiver bei jedem VDR-Neustart mit höherem Input-Device

  • Hi,


    habe das Problem vereinzelt hier im Forum gefunden (z.B. im Mahlzeit-Thread), aber noch keine Lösung dafür:


    Jedesmal, wenn ich den VDR neu starte, krallen sich die IR-Receiver ein höheres Input-Device - die davor bleiben leer. Negative Auswirkungen scheint das nicht zu haben, dennoch hätte ich gerne gewusst, ob es dafür einen (einfachen) Fix gibt.


    Konfiguration: sidux 2007-04 mit Kernel 2.6.23 (per dist-upgrade bzw. sxmi) und den e-tobi-Paketen für den VDR. 1xFF und 1xNova-Budget.


    Hier noch ein Beispielauszug aus der /var/log/messages mit drei Neustarts:

    Code
    Jan  3 13:53:50 vdr kernel: input: DVB on-card IR receiver as /devices/pci0000:00/0000:00:08.0/0000:02:08.0/input/input6
    Jan  3 13:57:50 vdr kernel: input: DVB on-card IR receiver as /devices/pci0000:00/0000:00:08.0/0000:02:08.0/input/input8
    Jan  3 14:02:02 vdr kernel: input: DVB on-card IR receiver as /devices/pci0000:00/0000:00:08.0/0000:02:08.0/input/input10
    Jan  3 14:04:30 vdr kernel: input: DVB on-card IR receiver as /devices/pci0000:00/0000:00:08.0/0000:02:08.0/input/input12


    Besten Dank im Voraus für jegliche sachdienliche Hinweise :)


    JK

    yaVDR 0.5.0a
    Intel Core2Duo E6750, Asus P5Q,
    Gainward GT 240 512MB GDDR5, Hauppauge HVR-4000 & Nova-S2-HD, 4 GByte RAM
    an Panasonic TX-P42GW10 und Onkyo TX-SR508

  • Vermutlich ist das alte input-Device noch nicht freigegeben gewesen, daher wurde ein neues angelegt. Bei den input-devices kann man sich ja eh nie auf die Reihenfolge verlassen.


    Ich lasse bei mir mittlerweile udev die Zuordnung machen. Folgende Zeile ist bei mir in /etc/udev/local.rules:

    Code
    SUBSYSTEM=="input", SYSFS{../name}=="DVB on-card IR receiver", SYMLINK+="input/event-remote", MODE="0664", GROUP="video"


    Dazu kommt ein symlink von /etc/udev/rules.d/010_local.rules nach ../local.rules.


    So bald nun eine DVB-Karte mit IR geladen wird, wird unter /dev/input/event-remote ein symbolischer Link auf das eigentliche input-Device angelegt, unabhängig davon, welches gerade aktuell ist. Das remote-Plugin wird dann entsprechend mit -i /dev/input/event-remote aufgerufen.


    Gruß,


    Udo


  • Fix gibt es keinen, die Nummer des input-Devices wird jedoch auch nirgends benötigt. Die Fernbedienung wird über das event-Device angesprochen, welches sich nicht ändern sollte...


    Der Grund für das Hochzählen liegt wohl darin, daß das Device vom Input-Layer erst freigegeben werden kann, wenn es nicht mehr verwendet wird. Dummerweise bindet sich auch der Tastaturtreiber an ein FB-Devices, so daß es immer eine Referenz bleibt... :schiel


    Aber wie gesagt, nicht wirklich ein Problem.


    CU
    Oliver

  • Zitat

    Original von Urig
    Vermutlich ist das alte input-Device noch nicht freigegeben gewesen, daher wurde ein neues angelegt. Bei den input-devices kann man sich ja eh nie auf die Reihenfolge verlassen.


    Das ist ein anderes Problem, liegt IMHO an der indeterministischen Initialisierungsreihenfolge durch udev.


    Zitat


    Ich lasse bei mir mittlerweile udev die Zuordnung machen. Folgende Zeile ist bei mir in /etc/udev/local.rules:

    Code
    SUBSYSTEM=="input", SYSFS{../name}=="DVB on-card IR receiver", SYMLINK+="input/event-remote", MODE="0664", GROUP="video"


    Dazu kommt ein symlink von /etc/udev/rules.d/010_local.rules nach ../local.rules.


    So bald nun eine DVB-Karte mit IR geladen wird, wird unter /dev/input/event-remote ein symbolischer Link auf das eigentliche input-Device angelegt, unabhängig davon, welches gerade aktuell ist. Das remote-Plugin wird dann entsprechend mit -i /dev/input/event-remote aufgerufen.


    Ab Remote-Plugin Version 0.4.0 geht das auch einfacher. Vgl. README:

    Code
    ...
    vdr -P"remote -i /dev/input/by-path/pci-0000:02:06.0--event-ir"
        select input device by pci slot (udev support required)
    ...


    CU
    Oliver

  • Danke für die Tipps.


    Eine feste Zuweisung ist zumindest bei sidux nicht (mehr) notwendig, wie ich gestern selbst erst festgestellt habe:


    Das entsprechende FF-IR-Device ist immer unter /dev/input/ir zu finden, weshalb ich jetzt das in dem Remote-Plugin-Parametern angegeben habe. Längerfristig werde ich wohl eher auf Olivers Tipp zurückgreifen.


    Aber über die udev-Sache hatte ich auch vorher nachgedacht und im Wiki unter http://www.vdr-wiki.de/wiki/index.php/Remote-plugin nachgelesen, weil ich bis dahin nichts über den /dev/input/ir-Link wusste. Hier bin ich aber etwas ins straucheln geraten, da es zwei Varianten gibt, mit Urigs jetzt sogar drei:

    Code
    KERNEL=="event*", SYSFS{name}=="DVB on-card IR receiver", NAME="input/%k", SYMLINK="input/ir"

    und

    Code
    KERNEL=="input*", ATTRS{name}=="DVB on-card IR receiver", SYMLINK+="input/ir"


    Zu meinem allgemeinen Verständnis: Woher weiß ich, welche Variante für Debian/sidux/Ubuntu richtig ist, und was passiert, wenn weiter unten in den rules z.B. steht:

    Code
    KERNEL=="event[0-9]*",          NAME="input/%k"

    ? Gibt´s da Konflikte?


    Gruß
    Jörg

    yaVDR 0.5.0a
    Intel Core2Duo E6750, Asus P5Q,
    Gainward GT 240 512MB GDDR5, Hauppauge HVR-4000 & Nova-S2-HD, 4 GByte RAM
    an Panasonic TX-P42GW10 und Onkyo TX-SR508

    Einmal editiert, zuletzt von JK1974 ()

  • Zitat

    Originally posted by JK1974
    Hier bin ich aber etwas ins straucheln geraten, da es zwei Varianten gibt, mit Urigs jetzt sogar drei:

    Code
    KERNEL=="event*", SYSFS{name}=="DVB on-card IR receiver", NAME="input/%k", SYMLINK="input/ir"

    und

    Code
    KERNEL=="input*", ATTRS{name}=="DVB on-card IR receiver", SYMLINK+="input/ir"


    Zu meinem allgemeinen Verständnis: Woher weiß ich, welche Variante für Debian/sidux/Ubuntu richtig ist, und was passiert, wenn weiter unten in den rules z.B. steht:

    Code
    KERNEL=="event[0-9]*",          NAME="input/%k"

    ? Gibt´s da Konflikte?


    Vermutlich funktionieren alle. udev-Regeln kann man unterschiedlich angehen. udev-Regeln gelten jeweils für bestimmte Kernel Devices (hier event* oder input*, was vermutlich das gleiche ist) und bestimmte Eigenschaften (hier mit vorgegebenem Namen), und setzen die Eigenschaften, unter denen das Device in /dev angelegt wird. KERNEL=="event*", NAME="input/%k" wird zum Beispiel event4 unter /dev/input/event4 anlegen.


    Der Unterschied zwisachen ATTRS{name} und SYSFS{name} ist Geschmackssache. Das erste liest die Device-Attribute direkt, wie sie von udevinfo -a -p /sys/class/input/input0 ausgegeben werden, das zweite liest den Inhalt der Datei /sys/class/input/input0/name.


    Es können auch mehrere Regeln für ein Device angegeben werden. NAME= ist oben vermutlich nicht nötig, da die Default-Rule das auch erledigt.


    Zum Syntax von udev-Rules kannst du hier mal rein schauen:
    http://reactivated.net/writing_udev_rules.html



    Zitat

    Originally posted by UFO
    Ab Remote-Plugin Version 0.4.0 geht das auch einfacher. Vgl. README


    Sicher, aber dieser Weg erfordert das heraussuchen des PCI-Devices, und funktioniert nur, wenn die Karte nicht in einen anderen PCI-Slot gesteckt wird. Dafür funktioniert sie noch stabil, wenn mehrere FF-Karten im System sind.


    Gruß,


    Udo

  • Auf Ubuntu Gutsy lief mein VDR bereits ohne Probleme. Wegen Umstrukturierung meines Plattenplatzes war jetzt eine Neuinstallation meines gesamten Systems fällig und siehe da, der VDR als solcher läuft unter Verwendung der offiziellen sources.list mit "apt-get install" out of the box. Aber! was jetzt nicht mehr geht ist das Plugin "remote" meiner Hauppauge Nexus. Sobald dieses Plugin installiert ist, verabschiedet sich der VDR und es gibt kein Fernsehbild mehr. Fehlermeldung: /dev/input/event0 Permission denied. Ich wühle schon den ganzen Sonntag herum und werde auch teilweise fündig. Bei e-tobi habe ich den Hinweis gefunden, dass bei dieser Fehlermeldung der VDR als root laufen soll. Gesagt, getan, leider ohne Erfolg, auch dann läuft schon ohne aktiviertes remote-plugin der VDR nicht mehr.


    Kann mir jemand weiterhelfen?


    Helmut

  • Und ich wieder...


    Nachdem ich dachte, das mit /dev/input/ir würde automatisch und korrekt funktionieren, gab´s dann doch nach ein paar Tagen die Ernüchterung: Auch hier wurden die Infrarot-Empfänger immer mal wieder vertauscht. Zu allem Überfluss wollten die udev-Tipps hier alle nicht funktionieren, bis ich gestern den Fehler gefunden habe.


    Daher für alle sidux-User:
    In die local.rules kommt z.B. Folgendes rein:

    Code
    KERNEL=="event*", ATTRS{name}=="DVB on-card IR receiver", SYMLINK+="input/ir"


    Dann noch den Link von /etc/udev/rules.d/010_local.rules nach ../local.rules anlegen (Befehl ln -s - für alle Einsteiger :)) - soweit noch wie bereits erläutert.


    Der springende Punkt bei sidux:
    In der Datei /etc/udev/rules.d/z60_udev-config-sidux.rules die erste Zeile auskommentieren:

    Code
    # KERNEL=="event*",ATTRS{name}=="*dvb*|*DVB*|* IR *",SYMLINK="input/ir"


    Die sorgte nämlich dafür, dass immer /dev/input/ir angelegt, der Eintrag in der local.rules aber ignoriert (da wohl quasi ersetzt) wurde.


    Zudem habe ich noch in der /etc/udec/persistent-input.rules eine Zeile auskommentiert:

    Code
    # ATTRS{name}=="*dvb*|*DVB*|* IR *",	ENV{ID_CLASS}="ir"


    Bleibt noch eine Frage für den Fall, dass ich mal zwei gleiche Karten einbaue (z.B. 2x TT-budget 3200 :)):
    ls -la /dev/input/by-path listet mir Folgendes auf:

    Code
    lrwxrwxrwx 1 root root 9 2008-01-28 22:31 pci-0000:00:02.1-usb-0:2:1.0-event-joystick -> ../event1
    lrwxrwxrwx 1 root root 6 2008-01-28 22:31 pci-0000:00:02.1-usb-0:2:1.0-joystick -> ../js0
    lrwxrwxrwx 1 root root 9 2008-01-28 22:31 platform-i8042-serio-0-event-kbd -> ../event0
    lrwxrwxrwx 1 root root 9 2008-01-28 22:31 platform-i8042-serio-1-event-mouse -> ../event3
    lrwxrwxrwx 1 root root 9 2008-01-28 22:31 platform-i8042-serio-1-mouse -> ../mouse0
    lrwxrwxrwx 1 root root 9 2008-01-28 22:31 platform-pcspkr-event-spkr -> ../event2


    Keine Spur von IR-Devices. Ist das eine Sache der Kernel-Konfiguration?

    yaVDR 0.5.0a
    Intel Core2Duo E6750, Asus P5Q,
    Gainward GT 240 512MB GDDR5, Hauppauge HVR-4000 & Nova-S2-HD, 4 GByte RAM
    an Panasonic TX-P42GW10 und Onkyo TX-SR508

    Einmal editiert, zuletzt von JK1974 ()

Jetzt mitmachen!

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