Beiträge von jrie

    Er würde dann wohl immer den zuletzt angeschlossenen als /dev/irmp_stm32 nehmen.

    (Wenn ich Firmware's an meinem Produktiv-VDR teste und ständig Empfänger an- und abstecke, funktioniert mein Haupt-Empfänger manchmal hinterher vorübergehend nicht mehr, bis ich ihn ab- und anstecke.)

    Aber für den Normal-Nutzer mit nur einem irmp_stm32-Empfänger sollte der Vorteil größer sein als der Nachteil.

    Zweiter Versuch auf Ubuntu 18.04 bionic Desktop.

    Code
    1. sudo add-apt-repository ppa:yavdr/experimental-main
    2. sudo apt-get update
    3. sudo apt-get install yavdr-hardware-irmp
    4. cd /etc/irmplircd
    5. wget https://raw.githubusercontent.com/j1rie/IRMP_STM32/master/irmplircd/yaVDR/irmp.map
    6. mv irmp.map irmplircd.map

    Danach den Empfänger ab- und anstecken, und dann erkennt evtest die Tastendrücke.

    Dann

    Code
    1. sudo apt-get install eventlircd
    2. cd /lib/udev/rules.d
    3. mv 98-eventlircd.rules.disabled 98-eventlircd.rules

    Damit er die rules einliest, ist ein Neustart am einfachsten.

    Dann erkennt irw /run/lirc/lircd die Tastendrücke.


    Funktioniert jetzt sehr schön :) .


    Ein lustiger Nebeneffekt: Wenn eventlircd nicht läuft, kann man in einer Konsole mit den Pfeil-Auf/Ab Tasten der Fernbedienung rasant durch die Befehls-History scrollen ;) .


    Spricht eigentlich etwas dagegen, in der 60-irmplircd.rules ein , SYMLINK+="irmp_stm32" anzuhängen? Das sorgt dafür, dass stm32IRalarm und stm32IRconfig den Empfänger automatisch finden, ohne das man herausbekommen muss, ob irmplircd-hidraw0 oder irmplircd-hidraw1 oder irmplircd-hidraw2 oder ... richtig wäre.

    hast du eventuell das install-yavdr.sh Skript aus dem master-Zweig (der für xenial gedacht ist, wo das PPA gut befüllt ist) unter bionic ausgeführt?

    Ja, aus Versehen zuerst das, und dann, als ich meinen Irrtum bemerkt habe, das aus dem bionic Zweig, und damit kam dann die Fehlermeldung.

    Nimm mal die Zeilen für das PPA aus der /etc/apt/sources.list.d/ansible-*.list raus und probier es noch mal.

    OK. Werde ich probieren.

    Auf Ubuntu 18.04 Desktop versucht.

    Code
    1. sudo add-apt-repository ppa:yavdr/experimental-main
    2. sudo apt-get update
    3. sudo apt-get install irmplircd
    4. cd /etc/irmplircd
    5. wget https://raw.githubusercontent.com/j1rie/IRMP_STM32/master/irmplircd/yaVDR/irmp.map
    6. mv irmp.map irmplircd.map
    7. sudo apt-get install lircd2uinput
    8. sudo apt-get install eventlircd
    9. cd /lib/udev/rules.d
    10. mv 98-eventlircd.rules.disabled 98-eventlircd.rules

    Fehlermeldung:

    Code
    1. Jan 20 15:55:28 ubu dbus-daemon[608]: [system] Service file "/usr/share/dbus-1/system-services/de.yavdr.lircd2input.service" should have been named "de.yavdr.lircd2uinput.service"and will not work with system bus activation

    Ich muste von Hand:

    Code
    1. lircd2uinput-add /run/lirc/irmplircd-hidraw2

    und eventuell auch, aber da bin ich nicht mehr sicher:

    Code
    1. systemctl enable lircd2uinput.service

    Dann ging es.


    Läuft ohne Nachbessern noch nicht ganz rund.

    Ich bekomme:

    Code
    1. TASK [yavdr-common : add PPAs] **********************************************************************************************
    2. failed: [localhost] (item=ppa:yavdr/experimental-main) => {"changed": false, "item": "ppa:yavdr/experimental-main", "msg": "Failed to auto-install python-apt. Error was: 'E: The repository 'http://ppa.launchpad.net/ansible/ansible/ubuntu bionic Release' does not have a Release file.'"}
    3. failed: [localhost] (item=ppa:yavdr/experimental-vdr) => {"changed": false, "item": "ppa:yavdr/experimental-vdr", "msg": "Failed to auto-install python-apt. Error was: 'E: The repository 'http://ppa.launchpad.net/ansible/ansible/ubuntu bionic Release' does not have a Release file.'"}
    4. to retry, use: --limit @/home/jj/yavdr-ansible/yavdr07.retry
    5. PLAY RECAP ******************************************************************************************************************
    6. localhost : ok=2 changed=0 unreachable=0 failed=1

    Jetzt geht es (ich hatte was übersehen).

    Es ist ein Feature von Kodi, dass nach ein paar Wiederholungen beschleunigt wird. Das ist für das Scrollen durch lange Listen gut. Die Tastendrücke kommen jetzt so an, wie sie sollen und werden anfangs auch im richtigen Tempo umgesetzt.


    Code
    1. Install irmplircd on LibreELEC via ssh:
    2. cd ~
    3. wget https://raw.githubusercontent.com/j1rie/IRMP_STM32/master/irmplircd/LibreELEC/irmplircd.tar.bz2
    4. tar -xjvf irmplircd.tar.bz2
    5. systemctl enable irmplircd lircd-uinput
    6. shutdown -r now


    Ein Problemchen habe ich noch.

    Meine irmplircd.service:

    Meine lircd-uinput.service:

    Meine 80-irmp.rules:

    Code
    1. KERNEL=="hidraw*", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="4444", SYMLINK+="irmp_stm32", TAG+="systemd"

    Damit kann ich den Empfänger im laufendem Betrieb an- und abstecken, und es tut wie gewünscht.

    Ich lasse das über dev-irmp_stm32.device laufen, damit er den Symlink @irmp_stm32 anlegt, damit meine Konfigurationsprogramme den Empfänger automatisch finden.

    Wenn aber beim Hochfahren der Empfänger nicht dran hängt, zeigt er mir 90 Sekunden lang "A start job is waiting for dev-irmp_stm32.device". Das soll nicht so sein.

    Eigentlich dachte ich, er tut nur was, wenn das Device da ist. Aber wieso wartet er auf es, wenn es nicht da ist?

    Wie kann ich das verbessern?

    Test mit eventlircd:


    irw am irmplircd Sockel:

    1516111033.135733: 070000001300 0 KEY_RIGHT IRMP

    1516111033.476740: 070000001300 1 KEY_RIGHT IRMP

    1516111033.590703: 070000001300 2 KEY_RIGHT IRMP

    1516111033.704884: 070000001300 3 KEY_RIGHT IRMP

    1516111033.817814: 070000001300 4 KEY_RIGHT IRMP

    1516111033.931879: 070000001300 5 KEY_RIGHT IRMP

    1516111034.045748: 070000001300 6 KEY_RIGHT IRMP


    ./eventlircd -vvv -f -s /var/run/lirc/lircd2

    eventlircd[543]: input device /dev/input/event11: events of unsupported event type EV_REP will be discarded

    eventlircd[543]: input device /dev/input/event11: grabbed

    eventlircd[543]: input device /dev/input/event11: created output event device


    irw am eventlircd Sockel:

    1516111033.136306: 6a 0 KEY_RIGHT devinput

    1516111033.480819: 6a 1 KEY_RIGHT devinput

    1516111033.590948: 6a 2 KEY_RIGHT devinput

    1516111033.705035: 6a 3 KEY_RIGHT devinput

    1516111033.817966: 6a 4 KEY_RIGHT devinput

    1516111033.932029: 6a 5 KEY_RIGHT devinput

    1516111034.045983: 6a 6 KEY_RIGHT devinput

    Bei mir geht es jetzt :) .


    ./irmplircd -t ./irmp_stm32.map -r 300 -s 100

    irmplircd läuft mit 300 ms Repeat-Delay und 100 ms Repeat-Period, und da RC-5 alle 114 ms feuert, kommt dabei tatsächlich ein Delay von 342 ms und ein Repeat von 114 ms zustande.


    In der lirc_options.conf habe ich unter [lircd-uinput] release-timeout = 400 um die 342 ms zu überbrücken.

    Der Start und die ersten Meldungen von lircd-uinput:

    Das kernel repeat delay muss größer als der release-timeout sein.


    irw:

    Code
    1. 1516102345.485184:
    2. 070000001d00 0 KEY_UP IRMP
    3. 1516102345.826071:
    4. 070000001d00 1 KEY_UP IRMP
    5. 1516102345.940125:
    6. 070000001d00 2 KEY_UP IRMP
    7. 1516102346.054072:
    8. 070000001d00 3 KEY_UP IRMP


    evtest:

    Es hapert jetzt noch daran, dass lircd-uinput immer nach seinem timeout einen release absetzt, statt das nur dann zu tun, wenn innerhalb der Zeit kein weiterer Knopf gedrückt wird.

    Das muss noch geändert werden. Dazu muss ich erst mal curl_poll verstehen ...


    Mit -R kann man Repeat-Delay und Repeat-Period einstellen:

    ./lircd-uinput -R 5000,1000 -a