Issue with Harmony 900 and Atric USB IR Wakeup

  • Hello all,
    I have issues with my remote control. After some hints from the VDR Portal, I am a step closer to identify the issues.
    This is where I could need some help now:

    1) Symtoms:
    Sometimes, my remote control jumps over menu entries and leaves every second entry out. Navigation is not possible anymore.
    I have this issue already a bit longer, and I was used to "fix" this with a couple of reboots. My first assumption was a hardware hickup or whatever on the wakeup board.
    I posted recently on VDR Portal and received some hints for further investigation.

    2) irw output:
    seahawk1986 asked me to check the irw output to confirm that double button presses are indeed received by the IR system.
    I went into my LibreELEC via SSH, and started irw. The output is very confusing:

    As you see, I have two different examples:

    • I press a button (here: KEY_MENU), and there is another button event "nested" inside. (here: KEY_EPG within the press and release of KEY_MENU button)
    • doubled events (here: KEY_EXIT)

    3) lircd-service(s):
    According to seahawk1986s suggestion, I wanted to stop/start lircd to see whether the hickup would be gone after reinitialization of the stack.
    And indeed, this seems to help:

    Quote


    LibreELEC:~ # systemctl |grep lirc
    eventlircd.service loaded active running Eventlirc server daemon
    lircd@ttyACM0:irman:lircd.conf.service loaded active exited Lirc with ttyACM0:irman:lircd.conf
    system-lircd.slice loaded active active system-lircd.slice


    I see that three services contain "lirc" in their name.

    In a first attempt, I stopped lircd@ttyACM0:irman:lircd.conf.service. ---> Result: Remote working as expected
    After a reboot, my issue was back.

    I wanted to stop lircd@ttyACM.... once again, but this time I received an error message "service not loaded".
    Why is is loaded at one time, and after the reboot it is not any longer? ---> Result: Remote not working


    Anyways, now I stopped the sxstem-lircd.slice service. ---> Result: Remote working as expected
    Wow. Different service stopped, but remote is now working.


    What would I have to do to get this fixed?
    - Are all the services required, or is there anything started that should not be started at all?


    Any help is appreciated. Thank you.
    Kind regards,
    Marcus


  • Just a tip, we're at 7.90.007 already. Shouldn't matter much on your topic, but it's good to know.

    Fair enough, I missed to update the signature. I am already at .007 with these issues above.


    In the meanwhile, seahawk1986 provided some further information:
    1) He assumes that LibreELEC facilitates eventlircd with the --release=_UP option.
    LibreELEC.tv/eventlircd.service at 0926869ead90661dfac2d919b40359f589083f72 · LibreELEC/LibreELEC.tv · GitHub

    2) Lircd is started with the --uinput option according to
    LibreELEC.tv/lircd_helper at c5126044200342d06d605e44d8bccff1796cbf12 · LibreELEC/LibreELEC.tv · GitHub

    But regarding to his information, this --uinput option is broken since years, and my observation matches pretty much the well known bug reports.
    Therefore, they have implemented an intermediate layer lircd2uinput (GitHub - seahawk1986/lircd2uinput: a daemon that reads from lircd-compatible sockets and outputs the key presses on an uinput device) between licrd and eventlircd.


    Question is, how does that information help me. What can I do to get this fixed?


    Regards,
    Marcus

  • I tested a bit further on the SSH console.
    1) irw /run/lircd/lircd shows the irw output I posted before.
    2) irw /run/lircd/lircd-ttyACM0 shows a different output:
    # irw /run/lircd/lircd-ttyACM0
    ffff005200080400 00 KEY_UP /storage/.config/lircd/lircd.conf
    ffff005000060400 00 KEY_LEFT /storage/.config/lircd/lircd.conf
    ffff004f00090400 00 KEY_RIGHT /storage/.config/lircd/lircd.conf
    ffff005000060400 00 KEY_LEFT /storage/.config/lircd/lircd.conf
    ffff0051000b0400 00 KEY_DOWN /storage/.config/lircd/lircd.conf

    The irw output shows each button once, but of cursor is still skipping entries.

    Afterwards I had a look at the services:
    LibreELEC:~/.config # systemctl |grep lirc
    eventlircd.service loaded active running Eventlirc server daemon
    lircd@ttyACM0:irman:lircd.conf.service loaded active exited Lirc with ttyACM0:irman:lircd.conf
    system-lircd.slice loaded active active system-lircd.slice


    And I switched off eventlircd:
    LibreELEC:~/.config # systemctl stop eventlircd.service

    LibreELEC:~/.config # irw /run/lirc/lircd-ttyACM0
    ffff005200080400 00 KEY_UP /storage/.config/lircd/lircd.conf
    ffff0051000b0400 00 KEY_DOWN /storage/.config/lircd/lircd.conf

    LibreELEC:~/.config # irw /run/lirc/lircd
    Cannot connect to socket /run/lirc/lircd: No such file or directory

    Et voila: the remote is now working properly. It seems that I get a working remote with lirc only instead of routing through rc-core etc. in the kernel.
    Not sure though if I am looking at the totally wrong stuff. Can someone please advise what I could do?

    Thanks.

    Regards,
    Marcus

  • So, it seems to me you're remote presses are picked up by both eventlircd and lirc, which shouldn't happen. We don't use lirc for much by default. Most of the RC stuff goes through eventlircd.

    If you want to disable lirc, you need to disable the udev rule for it, basically copy the default one

    Code
    cp /usr/lib/udev/rules.d/98-lircd.rules /storage/.config/udev.rules.d/


    then edit it

    Code
    nano /storage/.config/udev.rules.d/98-lircd.rules


    and remove the line shown here, 98-lircd.rules#L9

    then reboot

  • Hello Irusak,

    when I do it as you describe, the remote control is not working at all.
    I rebooted and checked that the lircd-Service is not running. But IR is not running.

    Funnily, I deleted the custom udevd file and rebooted a 2nd time.
    Now the remote is working without any system modification.

    What could be the reason for this surprise?

    Thanks,
    Marcus