Schwachstelle im VDR in lirc.c - Wiederholungs-Ereignisse gehen manchmal verloren

  • Hallo,
    wenn LIRC mal ein Wiederholungs-Ereignisse verliert, ignoriert VDR die folgenende Wiederholungs-Ereignisse (count>0).
    Man muss dann die Taste loslassen und erneut drücken.
    Ist mir aufgefallen weil mein LIRC in letzter Zeit oft die Signal nicht auswerten konnte. Mit erhöhen der Toleranz von 30 auf 40 (eps) tritt das Problem nicht mehr auf.
    Bei der Suche habe ich allerdings diese Schwachstelle im VDR entdeckt.
    In lirc.c in void cLircRemote::Action(void) wird "pressed" gelöscht wenn einzelne Ereignisse nicht rechtzeitig erscheinen (timeout). Danach wartet VDR auf einen neuen Tastendruck (count==0).
    Abhilfe:
    else {
    repeat = true;
    timeout = Delta * 10 / 9;
    pressed = true; <<<<<<<< neu
    }


    Damit wird das Verhalten robuster weil damit die nachfolgenden Wiederholungen (count>0) wieder ausgewertet werden.

    Grüße, Dieter :)

  • Hi,


    ich hab mich schon öfter darüber geärgert dass meine Versuche, mittels festhalten einer Taste, durch längere Menüs zu scrollen unterbrochen wurden. Ich musste dann die Taste loslassen und erneut drücken, konnte dann wieder einige Positionen weiter scrollen und irgendwann begann das Spielchen wieder von vorne. Ein rundumscrollen war so jedenfalls nicht ohne Unterbrechnung möglich.


    Ich habe deinen Vorschlag mal ausprobiert und konnte danach keine "Scrollabbrüche" mehr feststellen ! :]

    Server: VDR 2.4.1 mit Ubuntu 19.04 x64 mit vaapidevice, Kernel 5.2.9, ASRock J4105M, 2 x 4096 MB DDR4-RAM, 2 x DD Cine S2, Lirc-Serial mit One4All URC 7960
    Client: VDR 2.4.1 mit Ubuntu 19.04 x64 mit softhddevice-OpenGL oder mit KODI+vnsiserver, Kernel 5.2.5, ASRock H81M, Intel i3-4150, NVIDIA GPU GeForce GT 610 (GF119), 2 x 2048 MB DDR2-RAM, 1 x Technotrend S2-1600, SilverStone Milo ML03, ASRock Smart Remote CIR mit Logitech Harmony 650, Beamer 120'' FullHD-3D

  • Hallo Hollywood,
    dann hat dein LIRC aber auch ein Probblem (wie es bei mir war).
    Die Änderung verbessert nur das Verhalten des VDR bei Fehlfunktion von LIRC.
    Versuche mal die Toleranz in lircd.conf etwas zu erhöhen.

    Grüße, Dieter :)

  • Hi Dieter,


    ich habe die Änderung in lirc.c mal rückgängig gemacht, und nur den von dir genannten Wert in der lircd.conf geändert. Bei dem Wert 50 habe ich dann halbwegs akzeptable Ergebnisse.


    Ich habe 12 Einträge im Hauptmenü. Manchmal kann ich in diesem 5 oder auch 6 mal durchgehend rundumscrollen dann erst kommt ein Hänger, manchmal ist mit Wert 50 auch schon nach 7 Positionen Schluss. Das ist irgendwie total unregelmäßig. Mit Wert 40 gabs die Hänger meisst schon nach spätestens 2 mal rundumscrollen.

    Server: VDR 2.4.1 mit Ubuntu 19.04 x64 mit vaapidevice, Kernel 5.2.9, ASRock J4105M, 2 x 4096 MB DDR4-RAM, 2 x DD Cine S2, Lirc-Serial mit One4All URC 7960
    Client: VDR 2.4.1 mit Ubuntu 19.04 x64 mit softhddevice-OpenGL oder mit KODI+vnsiserver, Kernel 5.2.5, ASRock H81M, Intel i3-4150, NVIDIA GPU GeForce GT 610 (GF119), 2 x 2048 MB DDR2-RAM, 1 x Technotrend S2-1600, SilverStone Milo ML03, ASRock Smart Remote CIR mit Logitech Harmony 650, Beamer 120'' FullHD-3D

  • Hallo,
    50 ist schon sehr hoch. Da steigt die Gefahr von falschen Decodierungen.


    Im lirc damon in ir_remote.c gibt es diese Zeile:

    Code
    LOGPRINTF(1, "decoding failed for all remotes");


    Wenn man die aktiviert, sieht man im syslog was passiert.


    Dein Empfänger oder die IRQ-Latenzzeiten sind nicht ok.
    Früher gabs Ärger mit VIA Chipsätzen, was es heute ist, da habe ich keine Ahnung.


    RC5 ist unkritischer als RC6 oder die NEC-Varianten, weil die Zeiten länger sind.


    Ich komme immer mehr zur Ansicht dass ich einen aktiven Empfänger (mit PIC oder AVR) bevorzuge.
    Oder CIR, aber da gibt es das Nachlaufproblem (das würde ich dann finden und lösen).

    Grüße, Dieter :)

  • Oder CIR, aber da gibt es das Nachlaufproblem (das würde ich dann finden und lösen).


    Das wäre toll, wenn das mal jemand angeht, der versteht was da im Treiber passiert :)

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)


  • Das kann ich bei Gelegenheit gerne nochmal genauer überprüfen. Allerdings gefällt mir die Änderung in der lirc.c auch recht gut. Behebt zwar nicht das Übel aber die Symptome.


    Quote

    Ich komme immer mehr zur Ansicht dass ich einen aktiven Empfänger (mit PIC oder AVR) bevorzuge.
    Oder CIR, aber da gibt es das Nachlaufproblem (das würde ich dann finden und lösen).


    Da würde ich mich auch freuen, wenn du das lösen könntest. CIR nutze ich auf meinem Clienten und hab da auch mit diesem dämlichen Nachlauf zu kämpfen.



    Gesendet von meinem A510 mit Tapatalk 2

    Server: VDR 2.4.1 mit Ubuntu 19.04 x64 mit vaapidevice, Kernel 5.2.9, ASRock J4105M, 2 x 4096 MB DDR4-RAM, 2 x DD Cine S2, Lirc-Serial mit One4All URC 7960
    Client: VDR 2.4.1 mit Ubuntu 19.04 x64 mit softhddevice-OpenGL oder mit KODI+vnsiserver, Kernel 5.2.5, ASRock H81M, Intel i3-4150, NVIDIA GPU GeForce GT 610 (GF119), 2 x 2048 MB DDR2-RAM, 1 x Technotrend S2-1600, SilverStone Milo ML03, ASRock Smart Remote CIR mit Logitech Harmony 650, Beamer 120'' FullHD-3D

  • Ich habe momentan noch kein CIR. Aber beruflich befasse ich mich gerade sehr stark mit dem Kernel (Platformcode für Arm) und Kameratreibern.
    Sobald ich ein gutes Sockel 1155-Board gefunden habe (muss wohl Asrock oder Intel sein), werde ich aufrüsten. Tips zu erfolgreichen Boards sind sehr willkommen.

    Grüße, Dieter :)

  • Tips zu erfolgreichen Boards sind sehr willkommen.


    Ich habe zwei Intel DH67BL, die ohne Probleme laufen. Die Nachfolger DH77KC, DH77DE und DH77DF decken alle Mainboard-Größen ab und haben auch alle einen CIR-Port.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • In meinem Client kann ich bisher über das Mainboard ASRock B75 Pro3-M nix negatives sagen, ausser dem Nachlaufen ;)

    Server: VDR 2.4.1 mit Ubuntu 19.04 x64 mit vaapidevice, Kernel 5.2.9, ASRock J4105M, 2 x 4096 MB DDR4-RAM, 2 x DD Cine S2, Lirc-Serial mit One4All URC 7960
    Client: VDR 2.4.1 mit Ubuntu 19.04 x64 mit softhddevice-OpenGL oder mit KODI+vnsiserver, Kernel 5.2.5, ASRock H81M, Intel i3-4150, NVIDIA GPU GeForce GT 610 (GF119), 2 x 2048 MB DDR2-RAM, 1 x Technotrend S2-1600, SilverStone Milo ML03, ASRock Smart Remote CIR mit Logitech Harmony 650, Beamer 120'' FullHD-3D

  • Hallo, hast Du eine Cine C2 drin?

    Grüße, Dieter :)

  • Nein, eine Skystar2 HD.


    Gesendet von meinem A510 mit Tapatalk 2

    Server: VDR 2.4.1 mit Ubuntu 19.04 x64 mit vaapidevice, Kernel 5.2.9, ASRock J4105M, 2 x 4096 MB DDR4-RAM, 2 x DD Cine S2, Lirc-Serial mit One4All URC 7960
    Client: VDR 2.4.1 mit Ubuntu 19.04 x64 mit softhddevice-OpenGL oder mit KODI+vnsiserver, Kernel 5.2.5, ASRock H81M, Intel i3-4150, NVIDIA GPU GeForce GT 610 (GF119), 2 x 2048 MB DDR2-RAM, 1 x Technotrend S2-1600, SilverStone Milo ML03, ASRock Smart Remote CIR mit Logitech Harmony 650, Beamer 120'' FullHD-3D


  • Das scheint mir eine gute Änderung zu sein, denn sie hilft auch, wenn man z.B. die Fernbedienung nicht direkt auf den VDR ausgerichtet hat oder vielleicht etwas damit "rumwackelt" und dadurch Ereignisse verloren gehen.


    Klaus

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!