[Workaround] Ab Kernel 3.5 evtl. doppelter Tastendruck bei inputlirc & mceusb notwendig ...

  • Hi,


    auf einem meiner VDRs habe ich das Problem, das mit Kerneln > 3.2.0 ich alle Tasten 2x drücken muß (mceusb). Das ist zuverlässig aber sehr nervig und scheinbar bei mir ein einzigartiges Problem. Bei lirc konnte man das verhalten mittels "toggle_bit_mask" in der lircd.conf beeinflussen.


    Nun da wir input-/eventlirc nutzen müssen, stehe ich vor dem Problem, das es hier nichts entsprechendes gibt, oder ich finde es schlicht nicht. Hat hier jemand ein Tip für mich?


    Ich möchte das wenn ich eine Taste drücke diese doppelt im inputlirc Stack ausgegeben werden ...


    Regards
    fnu

    HowTo: APT pinning

    2 Mal editiert, zuletzt von fnu ()

  • Das einfachste wäre es erstmal im entsprechenden Decoder Modul (rc_core, das Modul was rc6 decodiert) ne Debugmeldung einzubauen um zu schauen ob hier die Tastendrücke korrekt interpretiert werden. Der Code hier ist nicht so komplex -> https://git.kernel.org/cgit/li…media/rc/ir-rc6-decoder.c


    Klingt jetzt evtl. etwas übertrieben, aber meiner Erfahrung nach ist das am Ende einfacher erstmal hier anzufangen (schauen ob der Kernel sinnige Sachen liefert) als blind in irgendwo der langen Kette rumzusuchen wo da was falsch läuft ;)


    Mit nem raw lirc Empfänger kannst du auch gut schauen welche Pulse deine FB sendet (und dann mit der Interpretation im Code vergleichen), evtl. sendet die ja schon Fehlerhaft?


    cu

  • Keine_Ahnung


    Eigentlich ist schon klar was falsch läuft, analysiert habe ich das schon ziemlich lange. Es gab hier auch entsprechende (Filter-)Änderung von der RedHat Saftnase die dafür verantwortlich zeichnet, leider will er nicht verraten wo im Code ich das wieder zurück ändern könnte.


    Bisher konnte ich bei Kernel 3.2.0 verbleiben, nur für die neue Zotac GT 630 geht das nimmer, sonst gibts kein Ton via HDMI ...


    Also nochmal ich suche den Hinweis, wie ich mit inputlirc Tasten doppelt ausgeben kann wenn ich sie drücke, keine Analyse Tips? Bei lircd konnte man es doch auch beeinflussen ...


    Regards
    fnu

    HowTo: APT pinning

  • Also nochmal ich suche den Hinweis, wie ich mit inputlirc Tasten doppelt ausgeben kann wenn ich sie drücke, keine Analyse Tips?


    Kannst du mal mit evtest auf dem Kernel Input Device für den mceusb-Empfäger schauen (ohne inputlircd), ob da zumindest die Scancodes für die Tasten korrekt bei einem einzelnen Tastendruck ausgegeben werden?


    Da ich beim CIR-Empfänger das entgegengesetzte Problem habe, dass zu viele KEY-Events für einen Scancode generiert werden, habe ich da ein kleines Python-Skript dazwischen gehängt, dass allein die Scancodes auswertet und auf Wunsch einen Repeat-Filter dazwischen hängt.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Kannst du mal mit evtest auf dem Kernel Input Device für den mceusb-Empfäger schauen (ohne inputlircd), ob da zumindest die Scancodes für die Tasten korrekt bei einem einzelnen Tastendruck ausgegeben werden?


    Ja, habe ich schon in 2012 gemacht gehabt evtl. erinnerst Du Dich, über das Problem hatten wir vor einiger Zeit immer mal wieder gesprochen gehabt ...


    Mit lircd wurden traditionell bei mceusb die Tasten zweimal im System ausgegeben, wie bei vielen anderen FBs auch. Nun muß ich eine Taste 2x drücken, damit in "irw" das entsprechende Kommando 1x auftaucht.

    HowTo: APT pinning

  • Und was kommt bei evtest bei einem Tastendruck? Garnichts?

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Und was kommt bei evtest bei einem Tastendruck? Garnichts?


    Genau das was kommen soll ... das wird danach irgendwo noch gefiltert ...

    HowTo: APT pinning


  • Genau das was kommen soll ... das wird danach irgendwo noch gefiltert ...


    Versteh ich nicht ganz. evtest geht also "normal", nur input/eventlirc nicht? Eventuell mit der -r Option spielen?

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Versteh ich nicht ganz. evtest geht also "normal", nur input/eventlirc nicht?

    Was ist daran unverständlich?


    Eventuell mit der -r Option spielen?

    Diese Option wäre gegen etwaiges Tastenprellen, war z.B. bei der L4M Merlin immer nötig. Es ermöglicht mir nicht die Taste als "double issue" auszugeben, sondern verhindert dies ...

    HowTo: APT pinning

  • Ja, habe ich schon in 2012 gemacht gehabt evtl. erinnerst Du Dich, über das Problem hatten wir vor einiger Zeit immer mal wieder gesprochen gehabt ...


    Ja, ich habe aber nicht mehr genau im Kopf wie das damals ausgesehen hat und weiß mittlerweile ein bisschen mehr darüber was da so an Daten kommt und wie man das so auswerten kann, dass man das Verhalten bekommt, das man erwartet...


    Mal zum Vergleich ein CIR-Empfänger:


    Man sieht schön die MSC_SCAN Events mit dem Scancode der Taste (das ist das was der Treiber vom Empfänger bekommt) und die durch die durch die bescheidenen Mechanismen in rc-core generierten KEY-Events, die nicht ganz so recht dazu passen.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Dabei suche ich nur nach einer Möglichkeit inputlirc anzuweisen, die Keys doppelt auszugeben, die Codes stimmen doch, wie oft denn noch?


    Gehe ich auf der selben Maschine, mit der selben HW auf Kernel 3.2.0 zurück, habe ich das korrekte Verhalten, ab 3.5.0 nicht. Nur, benötige ich jetzt für die neue Zotac GT 630 min. Kernel 3.8.0 ...


    Bei lircd konnte man das Verhalten anpassen, mittels "toggle_bit_mask 0x800000[0|1]", was nur bei Spezialfällen nötig war, was meiner ja hier klar wäre ...

    HowTo: APT pinning

  • Vielleicht doppelt in die entsprechende Keymap eintragen? Keine Ahnung ob das geht und was dann passiert.


    Oder mittels ir-keytable versuchen:


    Code
    -D, --delay=DELAY
        Sets the delay before repeating a keystroke
    -P, --period=PERIOD
        Sets the period to repeat a keystroke


    So beispielsweise

    Code
    ir-keytable -D 1000 -P 1000 -c -p RC-6 -w /etc/rc_keymaps/rc6_mce

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

    Einmal editiert, zuletzt von TheChief ()

  • Dabei suche ich nur nach einer Möglichkeit inputlirc anzuweisen, die Keys doppelt auszugeben, die Codes stimmen doch, wie oft denn noch?


    Das ist doch gar nicht der Punkt... inputlircd macht ja mit einem KEY-Event das hier (in Zeile 59 im Spoiler bzw. 336 in der inputlircd.c schreibt er den Tastendruck an die Clients raus):


    Eventuell hilft es das doppelt zu machen (unter der Voraussetzung, dass die KEY-Events so gesendet werden, dass sie korrekt ausgewertet werden können). Wenn man die Scancodes direkt auswertet kann man das unabhängig von den mitunter unpraktischen Mechanismen für die Generierung von KEY-Events durch rc-core umsetzen.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • hat das eigentlich zu was geführt oder hast Du aufgegeben?

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Nein, nicht aufgegeben, bin aber gestern lieber noch eine Runde durch den Schwarzwald gepfiffen ... ^^


    Das Problem ist existent, muß also gelöst werden. Bin mir aber nimmer sicher das doppelt senden per inputlirc was bringt, weil das ja ab einem gewissen Entwicklungsstand in Kernelmodul für rc_core/mceusb gefiltert wird. Vmtl. muß ich eher dort ansetzen ...

    HowTo: APT pinning

  • Bin eben nicht sicher. Wenn das event bei evtest ankommt, müsste es doch schon durch mceusb durch sein. Aber wer weiß, bin auf die Lösung gespannt.

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Vmtl. muß ich eher dort ansetzen ...


    Natürlich ist es schöner das Problem in Treiber anzugehen - falls das nicht klappen sollte und du aber schon beim ersten Tastendruck einen Scancode bekommst

    Code
    Event: time 1364695268.840121, type 4 (EV_MSC), code 4 (MSC_SCAN), value 800f0422

    kann ich ein Python-Skript anbieten das den auswertet und daraus anhand einer bestehenden keytable ein KEY-Event macht.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • So, hab mal wieder ein wenig gesucht ohne weiteres Ergebnis.


    Am Beispiel des "OK" Buttons was bei mir mit Kernel 3.5 && 3.8 passiert, sieht bei allen anderen Tasten gleich aus, die Events sind alle korrekt:


    Code
    Kernel 3.2.0 inputlirc mit mceusb#/> sudo evtest /dev/input/by-id/usb-Philips_eHome_Infrared_Transceiver_PH00Xi62-event-if00----> hier erster und einziger Tastendruck "OK", Event wird sofort ausgelöstEvent: time 1374940017.124689, type 4 (EV_MSC), code 4 (MSC_SCAN), value 8011525cEvent: time 1374940017.124691, type 1 (EV_KEY), code 352 (KEY_OK), value 1Event: time 1374940017.124692, -------------- SYN_REPORT ------------Event: time 1374940017.230688, type 4 (EV_MSC), code 4 (MSC_SCAN), value 8011525cEvent: time 1374940017.230689, -------------- SYN_REPORT ------------Event: time 1374940017.364687, type 4 (EV_MSC), code 4 (MSC_SCAN), value 8011525cEvent: time 1374940017.364688, -------------- SYN_REPORT ------------Event: time 1374940017.614274, type 1 (EV_KEY), code 352 (KEY_OK), value 0Event: time 1374940017.614274, -------------- SYN_REPORT ------------


    Code
    Kernel 3.8.0 inputlirc mit mceusb:#/> sudo evtest /dev/input/by-id/usb-Philips_eHome_Infrared_Transceiver_PH00Xi62-event-if00----> hier erster Tastendruck "Ok"Event: time 1374938533.492559, type 4 (EV_MSC), code 4 (MSC_SCAN), value 8011d25cEvent: time 1374938533.492559, -------------- SYN_REPORT ------------Event: time 1374938533.599504, type 4 (EV_MSC), code 4 (MSC_SCAN), value 8011d25cEvent: time 1374938533.599504, -------------- SYN_REPORT ------------Event: time 1374938533.732436, type 4 (EV_MSC), code 4 (MSC_SCAN), value 8011d25cEvent: time 1374938533.732436, -------------- SYN_REPORT ----------------> hier zweiter Tastendruck "Ok", nun kommt der EventEvent: time 1374938534.992798, type 4 (EV_MSC), code 4 (MSC_SCAN), value 8011525cEvent: time 1374938534.992798, type 1 (EV_KEY), code 352 (KEY_OK), value 1Event: time 1374938534.992798, -------------- SYN_REPORT ------------Event: time 1374938535.099744, type 4 (EV_MSC), code 4 (MSC_SCAN), value 8011525cEvent: time 1374938535.099744, -------------- SYN_REPORT ------------Event: time 1374938535.233677, type 4 (EV_MSC), code 4 (MSC_SCAN), value 8011525cEvent: time 1374938535.233677, -------------- SYN_REPORT ------------Event: time 1374938535.485465, type 1 (EV_KEY), code 352 (KEY_OK), value 0Event: time 1374938535.485465, -------------- SYN_REPORT ------------


    Regards
    fnu

    HowTo: APT pinning

  • Die Vorschläge brachten keine Verbesserung?

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Die Vorschläge brachten keine Verbesserung?

    Wie sollte Deiner Meinung nach hier die Situation sich bessern? Die Ursache liegt doch schon im Kernelmodul, das für die Events verantwortlich ist.


    Selbst mein ursprünglicher Ansatz inputlirc so zu verbiegen das die Tasten zweimal gesendet werden erscheint in der Tat sinnlos, daher habe ich auch den Threadnamen geändert.


    Regards
    fnu

    HowTo: APT pinning

Jetzt mitmachen!

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