Posts by HiassofT

    A very quick update before heading off to bed:

    I could reproduce the issues on Raspbian (kernel 4.9.9, kodi 17, probably any I2S soundcard that's an I2S slave) as well if I remove console=serial0 from cmdline.txt. Likewise adding that to the LE cmdline.txt prevents crashing.

    Just outputting sound via ALSA (eg running speaker-test -c 2 while kodi is setup for HDMI audio out) hasn't crashed so far.

    To crash the RPi0 we need no serial console (probably no serial device open at all) and kodi 17 switching audio out from HDMI to ALSA (short screen blank) and back to HDMI (hard crash).

    so long,

    Hias

    milhouse just tested with build 0211 and Justboom, same result (short blank screen when selecting audio device, crash when audio device was closed).

    Then I did another test with the Cirrus card instead of the Justboom, in this case it worked.

    Might sound odd, but an educated guess leads me to the conclusion something odd might be going with the kernel clock framework:

    Justboom DAC is configured as an I2S slave (RPi configures it's internal clocks), Cirrus is an I2S master (it drives the I2S clock and the RPi I2S driver skips changing the RPi clocks).

    Screen glitches when changing the RPi clocks have been reported before, and if the clocks are configured wrong (eg turned off completely) lockups can happen as well.

    Now to find out what exactly is happening, and why it only happens with the LE kernel not the official one. I guess we need Dom's and Phil's help.

    BTW: I could be wrong, this is just an educated guess.

    so long,

    Hias

    Can you try a clean install of 7.95.3 on a separate SD card and see if this works?

    Do you have any local config/settings installed in /storage/.config/udev.rules.d, /storage/.config/rc_keymaps or autostart.sh? If yes, remove them, they could be interfering.

    Also please post the output of these 2 commands on your non-working setup (without your ir-keytable in autostart):

    Code
    dmesg | paste
    ir-keytable -v -a /etc/rc_maps.cfg -s rc0 2>&1 | paste

    so long,

    Hias

    Could you try setting the audio configuration to Fixed, for example 96kHz and see if you still get clicks?

    The driver for the WM5102 soundchip (which comes from the upstream linux kernel) is designed to be run at a fixed internal clock rate which is a multiple of the samplerate. This means it can support 32kHz, 48kHz, 96kHz, 192kHz (or 44.1, 88.2, 176.4kHz) without needing to change the internal clock. But switching between these 2 families, eg from 44.1kHz to 48kHz is tricky: the internal clock needs to be reconfigured which can cause glitches.

    Muting the outputs is also a little bit tricky and the S/PDIF output doesn't have a mute setting at all - so it's not really easy to mute all outputs.

    So, I'm aware of possible problems but currently don't have a solution for that that'd work for all configurations.

    I have to add that I've been using the card with S/PDIF-out and Line-out and so far didn't experience any loud clicks yet.

    so long,

    Hias

    Something really odd is going on with the RPi0. I haven't soldered on the GPIO connector so I did a quick test with dtoverlay=rpi-dac (this will work even without a soundcard installed) and could reproduce the issue with the 7.95.2 build:

    When selecting the ALSA soundcard in settings my monitor went blank for a very short time, then came back immediately. GUI and ssh were still working.

    Then (maybe when the sounddevice was closed after the 1min idle time, didn't time it) the screen went completely black.

    Still, ssh working fine and nothing in dmesg or kodi log (didn't have kodi debug logging active though).

    At this point I tried running "tvservice -s" and it just locked up. Same with "vcdbg log msg". Seems like the GPU has crashed.

    I thought maybe it had something to do with GPU resampling so rebooted and disabled it in audio settings. Then, when changing audio device from ALSA to HDMI the screen went black and the RPi crashed (ssh down).

    Pulled the plug, kodi came up with ALSA audio and software resampling. Changing audio to HDMI crashed the RPi0 again.

    so long,

    Hias


    One more problem - I get loud clicks between tracks when playing some albums on Tidal, or changing youtube videos..
    My speakers are pretty loud, but I think there should beno clicks at all.
    Is there a fix for this?
    I tried to set the option 'keep audio device alive' to 'always' , but no difference


    Do you also get these clicks when playing local music files?

    So far I haven't noticed these. There'll be a quite faint click when the audio card is turned off after the default 1min idle time, but that was it.

    You could try changing the resampling quality in system settings->audio (make sure you are in "Advanced" or "Expert" mode) an see if that makes a difference. And/or try changing the output configuration to fixed.

    Last but not least it could also be a problem with the audio/video tracks you are playing.

    so long,

    Hias

    This sounds a lot like this well known issue: lirc_rpi is sensitive to interrupt latency · Issue #906 · raspberrypi/linux · GitHub Unfortunately there's not much we can do about it.

    Since you seem to have an IR receiver integrated on your DVB receiver I'd recommend using that, ideally with the remote that came with it.

    You can use other remotes as well if they use the rc-5 protocol - for example a hauppauge remote should work. In this case you'll have to load the ir-keytable manually, eg with a "ir-keytable -w /usr/lib/udev/rc_keymaps/hauppauge" in autostart.sh

    so long,

    Hias

    Using ir-keytable on LE is rather simple: just drop your keymap in .config/rc_keymaps and it'll be automatically picked up by ir-keytable -a (run from standard udev rule).

    I'm doing this for about half a year now on RPi, have this line in config.txt

    Code
    dtoverlay=gpio-ir,gpio_pin=5,gpio_pull=1,rc-map-name=rc-hauppauge


    and placed a slightly modified hauppauge keymap in rc_keymap.

    If you've done this before it's a piece of cake on LE as well :)

    so long,

    Hias

    Unfortunately not yet. Kodi still can't cope with a several linux input keycodes, eg KEY_OK, KEY_CHANNELUP etc, they all result in XBMCK_UNKNOWN.

    But there's a workaround: you can use a custom lircd.conf file (if you are using userspace lirc) or a custom rc-keymap (if you are using in-kernel decoding) and substitute the problematic keycodes with working ones (eg KEY_ENTER instead of KEY_OK). Then you can disable eventlircd, kodi will see the linux input events and long-press works.

    You'll also have to make sure the kodi http://remote.xml/keyboard.xml match the codes you are using, so that's mainly a solution for more experienced users.

    so long,

    Hias

    Just verified: the tools/lirc-make-devinput from the lirc source is picking up headers from the build host and due to cross-compiling the generated input_map.inc won't overwrite the shipped input_map.inc files (as a normal build would do) - so there's another risk of differing files during compilation.

    I'm already working on a patch, will drop you a line tomorrow after I ran some tests.

    so long,

    Hias


    Hmm, I had now tested the 7.95.2 image from website and this image is working...
    A clean build of the tag 7.95.2 does not work...

    Which OS are you running on your build system?

    Could you check the build files - here with Debian Jessie (and ancient kernel headers) it looks like this:

    Code
    hias@tv:~/rpi/libreelec-8.0$ grep -r -l KEY_RIGHT_UP build.LibreELEC-RPi2.arm-7.95.2/lirc-0.9.4c/.armv7ve-libreelec-linux-gnueabi/
    hias@tv:~/rpi/libreelec-8.0$ grep -r -l KEY_RIGHT build.LibreELEC-RPi2.arm-7.95.2/lirc-0.9.4c/.armv7ve-libreelec-linux-gnueabi/
    build.LibreELEC-RPi2.arm-7.95.2/lirc-0.9.4c/.armv7ve-libreelec-linux-gnueabi/lib/input_map.inc
    build.LibreELEC-RPi2.arm-7.95.2/lirc-0.9.4c/.armv7ve-libreelec-linux-gnueabi/lib/.libs/input_map.o
    build.LibreELEC-RPi2.arm-7.95.2/lirc-0.9.4c/.armv7ve-libreelec-linux-gnueabi/lib/.libs/liblirc.so.0.0.0

    The lirc build might be picking up headers from the build host, that could explain the differences.

    so long,

    Hias

    Thanks for the feedback, I was just able to reproduce this too (by doing a hard reset from the libreelec setttings addon).

    But this is another, one-off thing that most certainly doesn't have anything to do with the KEY_RIGHT issue.

    It's not a race between lircd and lircd-uinput, the condition is not on the socket (IIRC it was some time before, but that's not the case here).

    Although annoying, just do another reboot and it should be fine. Let's ignore that for now and focus on the KEY_RIGHT issue. Anything odd at systemctl status or input grabbing would be interesting to look at.

    so long,

    Hias


    I found another problem, which breaks some tests. When start with a new image (over img.gz), the complete remote is not working in first boot. (lircd-uinput is not running, condition file does not exist). after the second boot, all services are up and remote is working.
    This is independent from the LEFT/RIGHT-key problem, but some test, i had to repeat.
    :sick:


    This is very interesting info - I've suspected before that the lircd systemd config is racy and could lead to such things.

    If lircd-uinput is scheduled to start before lircd has created the socket the ConditionPathExist (on the socket) will fail and lircd-uinput won't start. The upstream systemd config does this differently, the socket is create via an independent systemd config (lircd.socket): LIRC / Git / [0d26f0] /systemd

    Could you please try to reproduce this and when it happens grab the systemctl status of the services? the boot log would also be interesting:

    Code
    systemctl status lircd@lirc0
    systemctl status lircd-uinput@lirc0
    systemctl status eventlircd
    journalctl -a | paste

    It could be that we have another race between eventlircd and kodi grabbing the event input device. If kodi grabs it before eventlircd the button presses should show up as keyboard input instead of LIRC input in kodi.log and systemctl status eventlircd will contain an error message that the input device has already been grabbed by another process. So far I haven't seen this in the wild but could provoke it manually by stopping and then starting eventlircd while kodi is running.

    so long,

    Hias
    [hr]
    Please check another thing in addition to the stuff I just posted:

    With lsof and grep we can quickly verify who grabbed which input device. So if there's a race between kodi and eventlircd we should be able to verify it:

    First find out which event device is which physical/virtual device:

    Code
    LibreELEC:~ # grep . /sys/class/input/event?/device/name
    /sys/class/input/event0/device/name:Logitech K400
    /sys/class/input/event1/device/name:lircd-uinput
    /sys/class/input/event2/device/name:eventlircd

    Now run lsof to see which process is using which input device:

    Code
    LibreELEC:~ # lsof | grep /dev/input/event
    268     /usr/sbin/eventlircd    /dev/input/event1
    436     /usr/lib/kodi/kodi.bin  /dev/input/event0
    436     /usr/lib/kodi/kodi.bin  /dev/input/event2


    Here we see that kodi is using event0 (my logitech keyboard) and event2 (eventlircd, for receiving BTN_events) while eventlircd is reading from lircd-uinput. That's fine so far.

    But if I restart eventlircd while kodi is running kodi will grab the lircd-uinput device, and eventlircd can't grab it and errors out. So eventlircd is bypassed.

    Code
    LibreELEC:~ # systemctl stop eventlircd
    LibreELEC:~ # systemctl start eventlircd
    LibreELEC:~ # lsof | grep /dev/input/event
    436     /usr/lib/kodi/kodi.bin  /dev/input/event1
    436     /usr/lib/kodi/kodi.bin  /dev/input/event0


    And we can see eventlircd status is failed:

    Of course we shouldn't manually restart eventlircd while kodi is running as this will provoke issues - this was just to illustrate the error scenario that could happen when there's a race between eventlircd and kodi grabbing the lircd-uinput device.

    so long,

    Hias