Posts by HiassofT


    That works! Thanks for all your help. Back up in post #3 I mentioned that I had removed the KEY_ prefix from the codes downloaded from lirc-remotes download | SourceForge.net.


    Ah, sorry, I had missed that before...

    But I'm glad you got it working, and thanks a lot for the feedback!

    As for key naming: using non-standard key names is deprecated for quite some time now. Lircd still accepts arbitrary key names, but eg irrecord will refuse key names that aren't standard when creating a new lircd.conf.

    The standard naming scheme makes it a lot easier for programs to support remotes, especially via lirc sockets. Before people could eg configure the volume keys to generate VOLUME_UP, VOLUMEUP, VOLUP etc which led to quite a mess :)

    so long,

    Hias


    This is quite certainly the culprit. You should use KEY_UP, KEY_DOWN etc in lircd.conf, not only "UP", "DOWN", ...

    Can you change your lircd.conf so that the keynames match the officially supported ones?
    See linux/input-event-codes.h at master · torvalds/linux · GitHub

    BTW: You can also get a list of supported keynames by running "irrecord -l"

    so long,

    Hias

    In LE9 / Milhouse builds I'd recommend sticking to the stock configuration: only enable lirc in settings, and setup lircd.conf and lirc_options.conf (with driver and device) in .config, leave everything else as it is.

    In general there's no need to change the lircd socket used by kodi. LE setup (with eventlircd running in background) will take care of bridging the remote events into kodi.

    If something's not working as expected with that setup please report here, we'll then have a look at it and try to fix it.

    so long,

    Hias

    Did you enable lircd in LE settings?

    Just did a quick test, Milhouse build 0508 on RPi3, with some FTDI serial dongle, a lircd.conf file in .config and this lirc_options.conf and it worked fine:

    lircd and lircd-uinput started up fine:

    Code
    349 root       2:54 /usr/sbin/lircd -O /storage/.config/lirc_options.conf --nodaemon --release /storage/.config/lircd.conf
      350 root       0:00 /usr/sbin/lircd-uinput -O /storage/.config/lirc_options.conf

    But of course lircd was logging errors because there was no UIRT2 adapter connected:

    so long,

    Hias

    Usually you have manually switch the screen to 16:9/anamorphic mode. Check the manual of your screen if there's some setting in a menu, a switch or something like that.

    Automatic switching to anamorphic mode in (PAL) TVs relies on information transmitted in the video signal during vertical blank (or in one of the cut-off overscan lines, can't remember) but AFAIK RPi doesn't generate these signals.

    I'm using my RPi 3 on a 16:9 CRT TV, connected via composite, and had to manually put my TV into anamorphic 16:9 mode as well.

    so long,

    Hias

    Enable debug logging in kodi and check kodi.log if it reported errors about the keyboard.xml file. Also check if the remote presses actually show up as keyboard events. If they show up as lirc events in the log, eventlircd is still translating the events.

    BTW: If you change anything it's best to reboot, this is the easiest way to make sure all new config files are picked up.

    so long,

    Hias


    To debug I created a ./config/lirc_options.conf which was identical to the one in /etc/lirc
    but changing
    output = /run/lirc/lircd.socket2

    and only /run/lirc/lircd.socket was created (no "2").


    The socket is the one thing you shouldn't change in lirc_options.conf - it's managed by systemd. Actually lircd is a socket managed service, systemd creates the socket and when the first client, lircd-uinput in this case, connects to it systemd will start lircd - that's exactly the same setup as in other linux distributions.

    I'd also recommend to keep eventlircd running, this picks up the input events generated by lircd-uinput, translates these again into lirc events and feeds them to the standard lirc socket which is used by kodi.

    You could change the kodi startup to use the /run/lirc/lircd.socket directly, but then kodi can't be controlled by other IR remotes (eg USB IR receivers which send out input events).

    Yes, the setup is rather awkward, but as kodi doesn't play too well with linux input events it's currently the only way to support all remotes in kodi.

    so long,

    Hias

    Just did a quick test here with my justboom remote and ran into an interesting issue, kodi didn't detect any button presses at all if eventlircd was bypassed.

    lsof clearly showed that kodi was using the input event device, but nothing at all showed up in kodi log (debugging enabled)

    Code
    LibreELEC:~ # lsof | grep /dev/input
    1350 /usr/lib/kodi/kodi.bin /dev/input/event0
    1350 /usr/lib/kodi/kodi.bin /dev/input/event1
    LibreELEC:~ # evtest
    No device specified, trying to scan all of /dev/input/event*
    Available devices:
    /dev/input/event0: Logitech K400
    /dev/input/event1: gpio_ir_recv
    Select the device event number [0-1]: ^C

    As I was pretty sure it worked with my hauppauge remote before I dug into that and could make it work if I added a (dummy) keymap entry for KEY_NUMERIC_0 - looks like this is enough to make kodi detect the remote as a keyboard (maybe kodi thinks this is a game controller otherwise - don't know for sure).

    Here's the working .config/rc_keymaps/justboom I've used for testing:

    With this keymap longpress-OK worked out of the box with kodi, default kodi keymap contains an entry to map longpress-enter to context menu.

    BTW: I needed to restart kodi after changing the keymap with ir-keytable -w ... on-the-fly, kodi only seems to test for "keyboard/non-keyboard" when it accesses the input device the first time.

    Snippet from default kodi keyboard.xml:

    Code
    <enter>Select</enter>
    <enter mod="longpress">ContextMenu</enter>

    And also visible in kodi.log :)

    Code
    17:36:39.358 T:1962061824 DEBUG: Keyboard: scancode: 0x1c, sym: 0x000d, unicode: 0x0000, modifier: 0x0
    17:36:39.891 T:1962061824 DEBUG: Previous line repeats 1 times.
    17:36:39.891 T:1962061824 DEBUG: OnKey: long-return (0x100f00d) pressed, action is ContextMenu

    BTW: I think you need to have both <key ...> and <key mod="longpress"...> in keyboard.xml to make longpress working in kodi. Also, the ~500ms delay for the first key-repeat showing up in evtest/ir-keytable is normal - this is the initial repeat delay:

    so long,

    Hias


    Is it possible to use longpress? Having an extra set of commands would be very handy.

    Not as long as Kodi is using lirc input.

    Currently eventlircd translates linux input events (as generated by gpio-ir) into lirc events which are then read by kodi. This is done so that button translation can be done for a few remotes and because kodi doesn't support several buttons (like KEY_OK or KEY_CHANNELUP/DOWN) in "keyboard mode".

    You can disable eventlircd by creating an empty /storage/.config/udev.rules.d/98-eventlircd.rules file, then remote button presses will show up as keyboard events in kodi and longpress works.

    If you do this you also have to install a custom rc_keymap and change the KEY_OK mapping to KEY_ENTER - kodi without an "OK" button won't be too much fun :)

    so long,

    Hias


    This is all really strange. My MCE remote (via harmony) stopped yesterday. have been trying to get it back to work for an hour now (Hope I haven't messed up Harmony settings now). Trying a restore first, made a kodi backup two weeks ago.

    Running 8.0.1 on Pi2 device, did not update this last week.


    Please do the checks as outlined in post #2 of this thread: thread-8016-post-48094.html#pid48094

    Also please post what kind of IR receiver you are using (USB or GPIO) and in case of a GPIO receiver which driver you are using (lirc-rpi or gpio-ir).

    so long,

    Hias

    Can you do a test with the latest Milhouse build?
    LibreELEC Testbuilds for RaspberryPi (Kodi 18.0)

    LE9 adds support for setting lircd options via /storage/.config/lirc_options.conf and thus make it a lot easier to configure the driver and device (just copy /etc/lircd/lirc_options.conf to the .config dir and change driver= and device=).

    You might also need to create a /storage/.config/lircd.conf file, by default lircd is configured to support MCE and xbox remote codes.

    BTW: with userspace lirc you won't use ir-keytable, configuration is handled by lircd.conf and lirc_options.conf.

    so long,

    Hias


    I will try this. BTW, is possible that the remote is broken, in a way that it sends different signals now? A longshot?


    As I wrote before, it could be that the controller inside the remote can be configured to different "addresses" (scancodes), either by a hardware-switch, solder-bridge or by some magic button combination (the latter should usually be reset by removing batteries). But this is just a wild guess (consumer electronics remotes often can do that, so you can control 2 TVs/VCRs/DVD-players etc in the same room without interfering), not sure if this is true for your remote at all.

    [quote]Edit: I tried it, and it didn't work. But when I read the thread you linked to, they say that since irw doesn't do anything itself (not without killing stuff, they have done some more stuff.)[/code]
    Could you be more specific what you had done?

    After creating the keytable try to read it in via ir-keytable

    Code
    ir-keytable -c -w /storage/.config/rc_keymaps/my-mce


    Then read it back and verify it's the same you created (ir-keytable will silently ignore some errors when "loading" a keytable, so it could be that some or all keys were missed):

    Code
    ir-keytable -r

    When that had worked, check if loading via rc_maps.cfg works. But first clear the current table:

    Code
    ir-keytable -c


    Then run ir-keytable in auto-load mode with your rc_maps.cfg:

    Code
    ir-keytable -s rc0 -a /storage/.config/rc_maps.cfg


    Now, again read it back (via ir-keytable -r) and verify it's the one you created.

    If all that worked so far, check if it's being picked up automatically on boot (note that this only works in LE 8.0.1 and newer, older versions didn't support this). Reboot your box and then read back the keytable and verify it's the same (or try pressing buttons and check if that works).

    If the reboot-test failed, please post your journalctl -a output.

    If you get any errors from the commands above or if the output differs from the expected one please post your keymap file, the rc_maps.cfg file and any errors/warnings you got on the console.

    so long,

    Hias


    That sounds interesting, how do I do that? Just change in the config.txt or what?

    Yes, exactly. This'll use the same gpio as lirc-rpi per default, so if you've been using lirc-rpi before your IR receiver will work with gpio-ir as well.

    Details about the gpio-ir DT parameters can be found in the overlays README (/flash/overlays/README) or here: linux/README at rpi-4.9.y · raspberrypi/linux · GitHub

    Instructions how to customize configuration via ir-keytable are in the thread linked by bubba2017: thread-7152-post-43745.html#pid43745

    BTW: gpio-ir can be used with userspace lirc as well if your remote isn't supported via in-kernel decoding.

    so long,

    Hias


    I've added device_tree_overlay=lirc-rpi to the last line of config.txt.


    FYI: I'd recommend using the gpio-ir overlay instead of lirc-rpi.

    gpio-ir uses the upstream Linux gpio_rc_recv driver and supports in-kernel decoding (aka ir-keytable configuration) - so MCE remotes (plus a few others) will work out of the box and you don't need to use userspace lirc.

    so long,

    Hias

    The puzzling thing is I have no idea how that remote could work before if it always transmitted 0x800f2xxx scancodes. These scancodes were never supported by in-kernel decoding and I also don't think they'd work when using userspace lirc.

    Googling for the scancode brought up and older post on the OE forum, there a user had a similar issue:
    OpenELEC Mediacenter - OpenELEC Forum - Rosewill RHRC-11002 MCE remote not working (1/2)

    If you can't find out what changed on your setup you could just copy /usr/lib/udev/rc_keymaps/rc6_mce to /storage/.config/rc_keymaps/my-mce, change the 0x800f0xxx codes to 0x800f2xxx, and activate that via /storage/.config/rc_maps.cfg:

    Code
    * rc-rc6-mce my-mce

    so long,

    Hias