Ubunto Karmic: lirc startet unzuverlässig

  • Und das erachtest du als Fix ? Manch einer will halt wissen wo es her kommt und das Problem beheben.


    Ich habe einen Bug in Ubuntu aufgemacht dafür:
    https://bugs.launchpad.net/ubuntu/+source/lirc/+bug/499588

  • Ich habe jetzt die erste Zeile aus der 85-lirc.rules deaktiviert, aber das ist eigtl. auch nur ein Workaround, da bei USB-Empfängern beim Hotpluggen das Skript nicht mehr funktionieren wird.


    Der PC, wo das benötigt wird, steht bei meinen Großeltern als Mediacenter (ja, sie haben nur Linux...), deswegen meine Frage, ob das denn funktioniert hat oder nicht, damit ich das bei meiner Oma nicht umsonst ändere. Jetzt ist es getan und ich werde berichten, wenn sich meine Oma wieder beschweren sollte, dass die Fernbedienung nicht mehr geht ;-)


    Trotzdem würde ich auch ein Upstart Skript bevorzugen, aber leider keine Zeit mich da einzuarbeiten :-(

  • Das Problem scheint ja eine Race Condition zu sein.


    Meine These:
    Es tritt nur auf wenn die module noch nicht geladen sind. Dann werden sie vom init skript geladen, udev feuert und restartet lirc gleich nochmal. Evtl sollte man es auf USB beschränken ?


    Code
    1. #These rules are currently only adapted for a single lirc device.
    2. #They are mainly used for hotplugability of the USB devices
    3. #So that the user won't have to restart the lircd process.
    4. #
    5. #If a user has multiple lirc devices, and removes one of them
    6. #The other will stop working as well. This is a side effect
    7. #of both this udev script as well as the lirc architecture
    8. #Of chaining lircd processes.
    9. ACTION=="add", KERNEL=="lirc[0-9]" , BUS=="usb", RUN="/etc/init.d/lirc restart udev" ACTION=="remove", KERNEL=="lirc[0-9]", BUS=="usb", RUN="/etc/init.d/lirc stop udev"


    Kann das jemand mit dem Problem mal bitte ausprobieren und bestätigen ? Bei USB Geräten müssten die Treiber automatisch geladen werden und somit die Race Condition nicht auftreten. Bei nicht USB Geräten würde die Rule nicht feuern.


    Das Upstart Skript sehe ich jetzt nicht als Heilsbringer an, nur ein Nice-To-Have.

  • Hallo,


    die von mir vorgeschlagene Lösung

    Quote

    a) ACTION=="add", KERNEL=="lirc[0-9]", RUN="/etc/init.d/lirc restart udev in 85-lirc.rules entfernen:

    hat bei mir nicht funktioniert. Lircd ist dann zwar gelaufen, hat aber nicht auf die Fernbedienung reagiert. Ich vermute, der Grund ist, daß die Module nicht synchron geladen werden und noch nicht 'vollständig' geladen waren, als lircd gestartet wurde (?).


    Ich habe jetzt in /etc/init.d/lirc nach

    Code
    1. if [ "$LOAD_MODULES" = "true" ] && [ "$START_LIRCD" = "true" ]; then
    2. load_modules $2 $REMOTE_MODULES $TRANSMITTER_MODULES $MODULES
    3. fi

    Code
    1. if [ "$2" != "udev" ] ; then
    2. exit 0
    3. fi

    eingefügt. Seither (bisher) keine Fehler.


    Markus

    Client1: ASUS P5QC, Dual Core 3G, Cine S2, Ext. Board von TBE, Xubuntu 20.04, VDR 2.6x

    Client2: RPI3

    Server: RPI4, Sundtek SkyTV Dual 2x

  • Quote

    Original von steffen_b
    Ich habe einen Bug in Ubuntu aufgemacht dafür:
    https://bugs.launchpad.net/ubuntu/+source/lirc/+bug/499588


    Hallo steffen_b,


    vielen Dank für den Bug Report, ich habe dort gerade ergänzt, dass der Fehler auch mich betrifft.
    Es gibt einen weiteren Fehler:
    https://bugs.launchpad.net/ubuntu/+source/lirc/+bug/460027
    der vermutlich damit zusammenhängt: Wenn der von udev initiierte Restart nicht sauber funktioniert, gibt es natürlich auch beim Start von Lirc Probleme.


    Markus

    Client1: ASUS P5QC, Dual Core 3G, Cine S2, Ext. Board von TBE, Xubuntu 20.04, VDR 2.6x

    Client2: RPI3

    Server: RPI4, Sundtek SkyTV Dual 2x

  • Quote

    Und das erachtest du als Fix ? Manch einer will halt wissen wo es her kommt und das Problem beheben.


    Sorry, sollte ja keine Lösung des eigentlichen Problems darstellen.

    RPI3, DVB-Sky S960, VDR 2.4.4, Raspbian Jessie, Onkyo AV Receiver, Panasonic Plasma.

  • MarkusE : Nur kurz - weil ich weiss das du Interesse hattest:


    im yavdr svn ist jetzt ein upstart job für setserial (setserial-minimal nicht volle Funktionalität) und einer für Lirc (ohne Part für die TRANSMITTER) - ist im wesentlichen das init skript - nur umgestellt. Die udev-rules müssen dafür disabled werden (die zeigt eh auf das initscript und das geht nicht gut - echtes hotplug ist ja eh nicht drin mit lirc).


    HTH!