DVBSky (Mystique TeCaBiX) LIRC ?

  • evtest erkennt nach sudo service lirc stop alle Tasten der zur T982 mitgelieferten Fernbedienung.
    Noch nicht klar ist mir, wie eventlircd oder Standard-LIRC (auch für andere Fernbedienungen) unter Ubuntu 14.04 LTS damit einzusetzen ist.

  • Hallo TEN,


    mit der Karte unter 14.04 treffen wohl immer die Gleichen aufeinander ...


    Versuche es mal damit, damit habe ich die Fernbedienung bei mir zum Laufen bekommen (siehe DVBSky DKMS). Es sollte keine Rolle spielen, ob der Treiber manuell oder per DKMS installiert wurde, Hauptsache es ist der von der DVBSky Seite.


    Mein System: Ubuntu 14.04, Kernel 3.13.0-43, VDR aus yavdr testing repository, DVBSky S952 (keine V3), Firmware manuell installiert, Treiber mediabuild von DVBSky via DKMS wie beschrieben, lirc installiert (kommt aus yavdr main repository) und mit "None" konfiguriert, inputlirc installiert und mit folgender /etc/default/inputlirc konfiguriert (pci Pfad muss entsprechend angepasst werden):


    Code
    # Options to be passed to inputlirc. 
    # EVENTS="/dev/input/event*" 
    EVENTS="/dev/input/by-path/pci-0000:04:00.0-event-ir" 
    OPTIONS="-g -m 0"


    Damit konnte ich im VDR die mitgelieferte Fernbedienung anlernen. Es bleibt aber natürlich noch die Frage, ob das überhaupt Sinn macht, da dieser Fernbedienung einige wichtige Tasten fehlen, um einen VDR vernünftig bedienen zu können.

  • mit der Karte unter 14.04 treffen wohl immer die Gleichen aufeinander ...
    Mein System: Ubuntu 14.04, Kernel 3.13.0-43, VDR aus yavdr testing repository, DVBSky S952 (keine V3), Firmware manuell installiert, Treiber mediabuild von DVBSky via DKMS wie beschrieben, lirc installiert (kommt aus yavdr main repository) und mit "None" konfiguriert, inputlirc installiert und mit folgender /etc/default/inputlirc konfiguriert (pci Pfad muss entsprechend angepasst werden):

    Code
    # Options to be passed to inputlirc. 
    # EVENTS="/dev/input/event*" 
    EVENTS="/dev/input/by-path/pci-0000:04:00.0-event-ir" 
    OPTIONS="-g -m 0"


    Damit konnte ich im VDR die mitgelieferte Fernbedienung anlernen. Es bleibt aber natürlich noch die Frage, ob das überhaupt Sinn macht, da dieser Fernbedienung einige wichtige Tasten fehlen, um einen VDR vernünftig bedienen zu können.

    Danke, das klappte, sogar mit /dev/input/event5 (gemäß ir-keytable) - VDR zeigt nach dem Anlernen momentan allerdings noch Doppelerkennung jeden Tastendrucks: vermutlich werden da 2 Devices parallel gelesen (da standardmäßig mit --lirc gestartet).
    Eine andere Fernbedienung würde ich gern einsetzen, wird auch von mode2 am IR-Sensor der T982 erkannt, aber wie bekomme ich die "normalen, klassischen" vom letzten VDR-System herüberkopierten Definitionen einer /etc/lirc/lircd.conf mit diesem Setup verheiratet?
    Momentan erkennt letztere nicht einmal die auf KEY_* der Kerneltabelle umdefinierte http://lirc.sourceforge.net/remotes/universal/8in1 der hier beliebten http://lirc.sourceforge.net/remotes/universal/8in1.jpg.

  • Ich starte ihn mit --lirc=/var/run/lirc/lircd. Falls damit die doppelten Tasten nicht weg gehen, versuche es doch mal mit dem pci Pfad. Das würde auch verhindern, dass die Fernbedienung nicht mehr geht wenn beim Neustart einen anderen Event vergeben wird. Der Parameter -g müsste eigentlich für einen exklusiven Zugriff sorgen und verhindern, dass der VDR (oder das Desktop) nochmals die Events direkt ausliest.

    aber wie bekomme ich die "normalen, klassischen" vom letzten VDR-System herüberkopierten Definitionen einer /etc/lirc/lircd.conf mit diesem Setup verheiratet?

    Gar nicht, inputlirc kennt keine lircd.conf. Aber das Problem müsste sich doch einfach mit "neu anlernen" im VDR lösen lassen, oder ?

  • Ich starte ihn mit --lirc=/var/run/lirc/lircd.

    Wo eingetragen falls nicht direkt in die /usr/sbin/runvdr gepatched?
    P.S.: Ursache der Doppelerkennung war der Klassiker-Bug, daß nicht nur VDR, sondern zusätzlich auch noch vdr-sxfe standardmäßig mit --lirc gestartet wird - das Ticket ist sogar von mir, Jahre alt, confirmed aber Ubuntu-üblich noch nicht mal assigned: :( https://bugs.launchpad.net/ubu…ineliboutput/+bug/1001818

    Zitat

    Der Parameter -g müsste eigentlich für einen exklusiven Zugriff sorgen und verhindern, dass der VDR (oder das Desktop) nochmals die Events direkt ausliest.

    Das funktioniert.

    Zitat

    Gar nicht, inputlirc kennt keine lircd.conf. Aber das Problem müsste sich doch einfach mit "neu anlernen" im VDR lösen lassen, oder ?

    Leider nein, da ein restartender VDR nach Entfernen der remote.conf beim Warten auf Tastendruck in den ersten Sekunden nur die mitgelieferte und nicht die bisher verwendete "tastenreichere" Fernbedienung erkennt (im Gegensatz zu mode2).

  • Wo eingetragen falls nicht direkt in die /usr/sbin/runvdr gepatched?

    Mit yavdr habe ich das Problem nicht, da wird der VDR per Default mit --lirc=/var/run/lirc/lircd gestartet. /etc/default/vdr wäre gut, falls es das bei dir gibt. Sonst kannst du es als Parameter da eintragen, wo die runvdr gestartet wird, die reicht die Aufrufparameter weiter. Also vermutlich /etc/init.d/vdr oder /etc/init/vdr.conf, je nachdem, wie das bei deiner Distribution gemacht wird.


    Leider nein, da ein restartender VDR nach Entfernen der remote.conf beim Warten auf Tastendruck in den ersten Sekunden nur die mitgelieferte und nicht die bisher verwendete "tastenreichere" Fernbedienung erkennt (im Gegensatz zu mode2

    Das ist nicht schön. Dann bleibt wohl nur noch alle Tastencodes per irw auslesen und die remote.conf von Hand erstellen.

    Einmal editiert, zuletzt von kfb77 ()

  • /etc/default/vdr wäre gut, falls es das bei dir gibt. Sonst kannst du es als Parameter da eintragen, wo die runvdr gestartet wird, die reicht die Aufrufparameter weiter. Also vermutlich /etc/init.d/vdr

    Die setzt --lirc, gerade wenn in der /etc/default/vdr nichts steht:

    Code
    if [ -n "$LIRC" ]; then
                    LIRC_OPT="--lirc=$LIRC"
                else
                    LIRC_OPT="--lirc"
                fi


    Das ist nicht schön. Dann bleibt wohl nur noch alle Tastencodes per irw auslesen und die remote.conf von Hand erstellen.

    Sie lässt sich eben nur über irrecord anlernen (sogar während inputlirc läuft), aber nicht im VDR, denn der (und ebensowenig irw unter inputlirc) erkennt ihre Tasten ja gerade nicht (sondern nur die mitgelieferte) und macht nach ein paar Sekunden einfach ohne Anlernen weiter.
    Darum das Interesse am "klassischen" LIRC ohne die Event-Geschichten, denn außer dem VDR soll an dieser Maschine ja eh nichts IR-fernbedient werden.
    Driver cx23885, table rc-dvbsky: Wird die zusätzliche Fernbedienung evtl. hierüber weggefiltert?

  • Interesse am "klassischen" LIRC ohne die Event-Geschichten, denn außer dem VDR soll an dieser Maschine ja eh nichts IR-fernbedient werden.
    Driver cx23885, table rc-dvbsky: Wird die zusätzliche Fernbedienung evtl. hierüber weggefiltert?

    Konnte mir noch nicht erschließen, wie man die Definitionen einer klassischen lircd.conf wie z.B. http://lirc.sourceforge.net/remotes/universal/8in1 für LIRC am DVBSky-T982-Empfänger & VDR erkennbar macht.
    Hat jemand Hinweise dazu?
    http://www.lirc.org/html/configuration-guide.html erklärt ",table" nicht wirklich und http://forum.kodi.tv/showthread.php?tid=101151 erscheint auch wenig passend.
    http://atterer.org/mythtv-xmbc-remote-control-without-lirc zeigt zumindest die möglichen KEY_*-Namen.


    Ich erhalte mit beiden Fernbedienungen (DVBSky und 8in1) pulse/space-Ausgaben von sudo mode2 -d /dev/lirc0, und zwar (anders als im traditionellen LIRC) selbst nachdem sudo service start sowohl für lirc als auch für inputlirc durchgeführt wurde.
    irw und ir-keytable -t zeigen aber nichts, obwohl eine /usr/share/lirc/remotes/devinput/lircd.conf.devinput besteht.


    So sieht es unmittelbar nach einem Reboot aus:

    Zitat von ps aux|grep lirc

    root 793 0.0 0.0 33108 960 ? Ss 14:01 0:00 /usr/sbin/lircd --output=/run/lirc/lircd1 --driver=devinput --listen --pidfile=/run/lirc/lircd1.pid
    root 795 0.0 0.0 35336 1104 ? Ss 14:01 0:00 /usr/sbin/lircd --output=/run/lirc/lircd --driver=devinput --device=/dev/input/event5 --connect=localhost 8765
    nobody 1275 0.0 0.0 12776 380 ? Ss 14:01 0:00 /usr/sbin/inputlircd -g -m 0 /dev/input/by-path/pci-0000:02:00.0-event-ir
    root 3526 0.0 0.0 4444 656 ? S 14:01 0:00 /bin/sh /usr/sbin/runvdr -v /var/lib/video.00 -c /var/lib/vdr -L /usr/lib/vdr/plugins -r /usr/lib/vdr/vdr-recordingaction -s -E /var/cache/vdr/epg.data -u vdr -g /tmp --port 6419 --vfat -w 60 --lirc -P "xineliboutput --local=none --primary --remote=127.0.0.1:37890" -P streamdev-server -P femon
    vdr 3582 1.2 0.7 303412 28456 ? Sl 14:01 0:00 /usr/bin/vdr -v /var/lib/video.00 -c /var/lib/vdr -L /usr/lib/vdr/plugins -r /usr/lib/vdr/vdr-recordingaction -s -E /var/cache/vdr/epg.data -u vdr -g /tmp --port 6419 --vfat -w 60 --lirc -P xineliboutput --local=none --primary --remote=127.0.0.1:37890 -P streamdev-server -P femon
    user 4870 0.0 0.0 17432 936 pts/12 S+ 14:02 0:00 grep --color=auto lirc


    Nach sudo service stop gegen inputlirc und lirc erhalte ich zumindest für die DVBSky-Fernbedienung irw-Ausgaben nach manuellem sudo /usr/sbin/lircd --output=/run/lirc/lircd --driver=devinput --device=/dev/input/by-path/pci-0000:02:00.0-event-ir bzw. /dev/input/event5
    (Nur) danach erkennt zumindest Scancodes (wenn auch keine Tasten, im Gegensatz zur DVBSky) für die 2. Fernbedienung (8in1):

    Zitat von ir-keytable -t

    1420551805.261804: event type EV_MSC(0x04): scancode = 0xc0078
    1420551805.261804: event type EV_SYN(0x00).
    1420551805.814514: event type EV_MSC(0x04): scancode = 0xc0079
    1420551805.814514: event type EV_SYN(0x00).
    1420551807.349586: event type EV_MSC(0x04): scancode = 0x100060
    1420551807.349586: event type EV_SYN(0x00).

    Auch nach http://wiki.ubuntuusers.de/Lirc ist mir aber nicht klar, wie und wohin die Tastendefinitionen für die weitere Fernbedienung aus der "alten" /etc/lirc/lircd.conf übergeleitet werden müssen, damit sie ebenfalls durch devinput (zumindest nach manuellem Start von LIRC wie oben) erkannt werden.

  • Damit die DVBSky-Tasten von irw erkannt werden, muß In der /etc/lirc/hardware.conf offenbar DISABLE_KERNEL_SUPPORT="false" stehen.
    Dementsprechend scheint ignoriert zu werden:

    Woher kommt das stattdessen tatsächlich von devinput verwendete Mapping (rc_dvbsky?) und wie kann es um eine weitere Fernbedienung aufgebohrt werden?
    Es wird doch hoffentlich nicht hart aus der media_build-bst-13/v4l/rc-dvbsky.c (via daraus kompiliertem Modul) drübergebügelt?

  • Ich hab den Thread gerade noch einmal überflogen und mir ist immer noch nicht klar warum ihr unbedingt lirc benutzen wollt.


    Ich hab den Empfänger allerdings noch nie getestet. Mach ich vielleicht mal über Weihnachten.


    Ich bin jetzt endlich mal dazu gekommen. Bei mir ist der interessante Receiver rc1:


    Hier mal eine kurze Zusammenfassung meiner Vorgehensweise. Zunächst muss die Fernbedienung natürlich ein Protokoll benutzen, welches vom Kernel dekodiert werden kann. Dazu zunächst erst einmal alle Protokolle aktivieren, die es gibt (Zeile 1) und dann schauen ob scancodes gemeldet werden (Zeile 2). Danach solange die Protokolle reduzieren, bis nur noch eines übrig ist und trotzdem noch scancode ankommen (Zeile 3-4). In meinem Fall hatte ich es mit einer Fernbedienung (vom TV) zu tun, die NEC spricht.

    Code
    $ sudo ir-keytable -c -p nec,rc-5,rc-6,jvc,sony,sanyo,lirc,rc-5-sz,sharp,xmp -s rc1
    $ sudo ir-keytable -t -s rc1
    $ sudo ir-keytable -c -p nec -s rc1
    $ sudo ir-keytable -t -s rc1


    Ich hab dann mit dem letzten Befehl alle Zahlentasten gesampled:


    Das ergibt dann folgende keymap, die ich in /etc/rc_keymaps/my_remote angelegt habe:


    Jetzt möglicherweise vorhandene, alte keycodes löschen und die neuen laden. Danach das Ganze testen:

    Code
    sudo ir-keytable -c -w /etc/rc_keymaps/my_remote -s rc1
    sudo ir-keytable -t -s rc1


    Jetzt sollten nicht nur scancodes kommen, sondern auch Tastendrücke gemeldet werden. (Key up/down)
    Um das ganze noch am Start zu automatisieren, folgendes in /etc/rc_maps.cfg eintragen:

    Code
    sudo vi /etc/rc_maps.cfg
    *       rc-dvbsky                my_remote


    und das automatische Laden testen:

    Code
    sudo ir-keytable -a /etc/rc_maps.cfg -s rc1


    Bei Archlinux wird dieser Befehl beim Auftauchen eines rc-core devices automatisch durch ein udev Regel ausgeführt:

    Code
    $ cat /usr/lib/udev/rules.d/70-infrared.rules 
    # Automatically load the proper keymaps after the Remote Controller device
    # creation.  The keycode tables rules should be at /etc/rc_maps.cfg
    
    
    ACTION=="add", SUBSYSTEM=="rc", RUN+="/usr/bin/ir-keytable -a /etc/rc_maps.cfg -s $name"


    Dabei verwende ich kein lirc. Um die Key-Events schließlich auf dem lirc socket zu melden nutze ich eventlircd.

  • Ich hab den Thread gerade noch einmal überflogen und mir ist immer noch nicht klar warum ihr unbedingt lirc benutzen wollt.


    "Wollten" wahrscheinlich die wenigsten, aber ohne die von Dir ausgetüftelten Wege konnte wohl kaum jemand auf die Möglichkeiten kommen, es ohne das im Fokus fast der gesamten Dokumenation stehende LIRC und seine durch all die Umbauten ungültig gewordenen Definitionen zu bewerkstelligen.


    Vielen Dank, :] konnte nun auch endlich mal wieder direkt an die betroffene Maschine und die LIRC-Konfiguration wie folgt umwandeln:


    Jetzt gilt's noch den VDR unter Ubuntu 14.04 LTS so umzubiegen, daß er die Kernel-Events verwendet.
    Ohne eventlircd (nicht im Standard-Repository?) schien das erst nicht zu klappen (nur CH+/- wurde erkannt, solange inputlirc aktiv ist, vgl. inputlirc mit vdr verheiraten ff), es laufen dann:

    Zitat von ps aux|grep lirc

    nobody 5874 0.0 0.0 12772 392 ? Ss 12:47 0:00 /usr/sbin/inputlircd -g -m 0 /dev/input/by-path/pci-0000:02:00.0-event-ir
    root 6226 0.0 0.0 4440 652 ? S 12:57 0:00 /bin/sh /usr/sbin/runvdr -v /var/lib/video.00 -c /var/lib/vdr -L /usr/lib/vdr/plugins -r /usr/lib/vdr/vdr-recordingaction -s -E /var/cache/vdr/epg.data -u vdr -g /tmp --port 6419 --vfat -w 60 --lirc -P "xineliboutput --local=none --primary --remote=127.0.0.1:37890" -P streamdev-server -P femon
    vdr 6240 11.6 0.8 834804 33364 ? Sl 12:57 0:00 /usr/bin/vdr -v /var/lib/video.00 -c /var/lib/vdr -L /usr/lib/vdr/plugins -r /usr/lib/vdr/vdr-recordingaction -s -E /var/cache/vdr/epg.data -u vdr -g /tmp --port 6419 --vfat -w 60 --lirc -P xineliboutput --local=none --primary --remote=127.0.0.1:37890 -P streamdev-server -P femon


    irw erkannte allerdings alle KEY_*, es war also noch ein Neuanlernen nötig nach:

    Zitat von sudo -i

    service vdr stop
    rm /var/lib/vdr/remote.conf
    service vdr start && vdr-sxfe


    Einen ewigen Bug gilt es weiterhin manuell abzustellen: https://bugs.launchpad.net/ubu…ineliboutput/+bug/1001818

  • Wo sollte denn zum Autostart folgende Zeile hin?
    ir-keytable -c -w /etc/rc_keymaps/Universal8in1 -s rc
    Sie z.B. in /etc/init.d/inputlirc order /etc/rc.local zu murksen, dürfte zur Verwendung durch das System der Kernel-Events ja "suboptimal" sein.

  • Du solltest folgenden Eintrag in /etc/rc_maps.cfg hinzufügen:

    Code
    *       rc-dvbsky                Universal8in1


    Wenn du eine vernünftige Distribution nutzt, hast du eine udev-Regel in /usr/lib/udev/rules.d/, die dann ir-keytable -a ... beim Auftauchen eines rc-core devices ausführt. Siehe den letzten Code-Schnipsel meines letzten Kommentars. Dann kannst du dir /etc/rc.local und ähnliche Geschichten sparen.

  • Du solltest folgenden Eintrag in /etc/rc_maps.cfg hinzufügen:

    Code
    *       rc-dvbsky                Universal8in1


    Wenn du eine vernünftige Distribution nutzt

    Hat stattdessen nur zu Ubuntu 14.04 LTS gereicht, ;)

    Zitat von /lib/udev/rules.d/40-ir-keytable.rules

    # Automatically load the proper keymaps after the Remote Controller device
    # creation.
    # The keycode tables rules should be at /etc/rc_maps.cfg


    ACTION=="add", SUBSYSTEM=="rc", RUN+="/usr/bin/ir-keytable -a /etc/rc_maps.cfg -s $name"

    die Universal8in1 in /lib/udev/rc_keymaps (statt /etc/rc_keymaps) erwartet, also dorthin kopiert und folgende Zeile angehängt:

    Zitat von /etc/rc_maps.cfg

    cx23885 rc-dvbsky Universal8in1


    Zitat

    hast du eine udev-Regel in /usr/lib/udev/rules.d/, die dann ir-keytable -a ... beim Auftauchen eines rc-core devices ausführt. Siehe den letzten Code-Schnipsel meines letzten Kommentars.

    Vielen Dank, das hat geholfen, :] da durch Debian etc. von Pfaden abgesehen ebenso gelöst.

  • Zitat von olebowie

    mir ist immer noch nicht klar warum ihr unbedingt lirc benutzen wollt


    Wie hindert man (bei Deinem Ansatz ohne LIRC zu laden) Xorg (bzw. acpid) daran, das Device so wegzuschnappen, daß sudo evtest bzw. sudo ir-keytables -t gar keine Tasten mehr anzeigen (statt dies wenigstens nach sudo service lirc stop zu tun) ?


    Trägt man Geräte in /usr/share/X11/xorg.conf.d/10-evdev.conf explizit zum Ignorieren ein, vermeidet das zwar obige Meldung, aber evtest und ir-keytable zeigen dennoch weiterhin keine Fernbedienungs-Tastendrücke an:

    Code
    Section "InputClass"
            Identifier "Media Center Ed. eHome Infrared Remote Transceiver"
            MatchProduct "Media Center Ed. eHome Infrared Remote Transceiver"
            MatchIsKeyboard "true"
            Option "Ignore" "true"
    EndSection
  • Dein Problem ist nicht der xserver, sondern inputlircd. Wenn du mit ir-keytable oder evtest spielen willst, musst du vorher inputlircd beenden.

    Fürs mceusb habe ich ja inputlircd gekillt und lirc sogar deinstalliert: Danach (nach Reboot) kommen keine events mehr an.
    Wird lirc mit dem System hochgefahren und dann beendet, erkennen ir-keytable und evtest die Tasten.
    Nur dann habe ich auch irsend.
    Muß ich, um ohne lirc auszukommen, das Modul rc_rc6_mce irgendwie loswerden, da die Fernbedienung ja keine RC6, sondern in /lib/udev/rc_keymaps/Universal8in1 definiert ist? :rolleyes:
    Habe diesen nicht T982-spezifischen Teil mal in http://www.vdr-portal.de/board…-unter-ubuntu-16-04-2-lts verlagert.

  • Naja Zeile 16 und 17 aus Post 36 sagen doch aber, dass inputlircd noch auf /dev/input/event9 zugreift?


    Ok, du hast inputlircd zwar gekillt, dann aber den Rechner neu gestartet. Kann es sein, dass das inputlircd bei dir beim booten automatisch mit gestartet wird und sich dann die events wieder krallt?

  • Naja Zeile 16 und 17 aus Post 36 sagen doch aber, dass inputlircd noch auf /dev/input/event9 zugreift?


    Ok, du hast inputlircd zwar gekillt, dann aber den Rechner neu gestartet. Kann es sein, dass das inputlircd bei dir beim booten automatisch mit gestartet wird und sich dann die events wieder krallt?

    Das hatte ich wohl etwas widersprüchlich gepostet:
    Klar autostartet inputlirc, dessen Prozess(e) habe ich aber zum Test jeweils gekillt,
    außerdem sogar sudo apt remove lirc angewendet und rebooted.
    D.h. nichts außer dem Kernel (evdev) selbst dürfte sich das mceusb krallen.
    Warum aber sehe ich dann gar keine Events?


    xorg sollte nicht stören, hatte aber sicherheitshalber auch dieses mal mit dem Ignore-Eintrag ferngehalten.


    In /etc/rc_maps.cfg habe ich auskommentiert:
    #* rc-rc6-mce rc6_mce
    Trotzdem sehe ich es überall noch (unten mit lirc, aber ohne ebenfalls):



Jetzt mitmachen!

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