Ubunto Karmic: lirc startet unzuverlässig

  • Hallo,


    seit ich Karmic einsetze, startet lirc nicht mehr zuverlässig.
    Also, normalerweise funktioniert es.
    Aber, manchmal, nicht.

    Code
    irw


    liefert dann

    Code
    connect: Connection refused

    .
    Im Log sind Einträge wie

    Code
    Dec  6 09:25:05 vdr1 lircd-0.8.6[1981]: Connection refused
    Dec  6 09:26:20 vdr1 lircd-0.8.6[1981]: failure connecting to localhost

    .
    Es geht wieder, wenn ich

    Code
    sudo /etc/init.d/lirc stop
    sudo /etc/init.d/lirc start

    eingebe.


    Habt ihr das auch? Hängt das mit Upstart zusammen? Wie müsste

    Code
    /etc/init.d/lirc

    aussehen, damit es zuverlässig mit Upstart arbeitet?


    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

  • Hi,


    Code
    connect: Connection refused


    Selbe Meldung krieg ich hier unter Karmic wenn ich nen svdrpsend.pl Befehl absetzen will
    z.B: bringt schon der Befehl

    Zitat

    svdrpsend.pl "MESG Wie gehts"


    obige Fehlermeldung.


    Lösung hab ich aber keine.
    Klappt denn bei dir so ein Befehl ?


    Gruss
    Bert

    Hardware: Intel Core i9-9900K, ASUS ROG Maximus XI Hero, MSI GeForce GTX 1050 Ti (vdpau), Dvbsky S952 V3 mit 2X DVB-S2 Tuner
    Multibootsystem (yavdr-ansible auf Ubuntu-20.04, Kubuntu-20.04 Focal Fossa, Win10)
    yavdr-ansible, Ausgabe über Nvidia vdpau


  • Es ist äußerst unwahrscheinlich dass es da einen Zusammenhang gibt. Irritierend ist auch, dass es unter Karmic gar kein svdrpsend.pl gibt, sondern nur svdrpsend. Wo hast du den Skript svdrpsend.pl denn her?


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • Zitat

    Original von MarkusE
    Im Log sind Einträge wie

    Code
    Dec  6 09:25:05 vdr1 lircd-0.8.6[1981]: Connection refused
    Dec  6 09:26:20 vdr1 lircd-0.8.6[1981]: failure connecting to localhost

    .


    Wir haben das Problem auch beobachtet, allerdings hatten wir den init.d-Skript in einen Upstart-Skript umgeschrieben und dadurch den lirc vermutlich noch früher gestartet. Wenn ich die Fehlermeldung so sehe, dann vermute ich mal, dass das loopback device zu dem Zeitpunkt noch nicht oben ist. Um das zu prüfen, kannst du ja mal testweise

    Code
    ifconfig lo >/tmp/ifconfig.log


    In den Lirc-Start-Skript vor dem Start von lircd einbauen.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • Hi,


    Zitat

    Es ist äußerst unwahrscheinlich dass es da einen Zusammenhang gibt. Irritierend ist auch, dass es unter Karmic gar kein svdrpsend.pl gibt, sondern nur svdrpsend. Wo hast du den Skript svdrpsend.pl denn her?


    Na ja das Script ist ja beim Vdr Source dabei.


    Wie du ja aus dem Thread schon weisst;
    menu.c:2510: error: invalid conversion from ‘const char*’ to ‘char*’
    hab ich mir ja unter Karmic irgendwie so nen Vdr- Mix von Quellen gebaut > mit dem ich aber
    eh nicht zufrieden bin, da es da segfaults bei zumindest audiorecorder und skinelchi Plugin gibt
    und wer weiss wo noch.


    Was mich sehr stört ist das ich sowohl in Karmic als auch in Jaunty ab und zu
    beim Shutdown so nen laufenden Kurzton Alarm bekomme (in etwa wie ein Bios Alarm)
    weiss nicht wo das herkommt.
    In Sidux jedenfalls hatte ich das bisher noch nie, also denke ich die Hardware is ok.


    Wie auch immer ich will den Thread hier nicht weiter hjacken werd aber dann doch mal über die Install deines Repos nachdenken.


    Gruss, Bert

    Hardware: Intel Core i9-9900K, ASUS ROG Maximus XI Hero, MSI GeForce GTX 1050 Ti (vdpau), Dvbsky S952 V3 mit 2X DVB-S2 Tuner
    Multibootsystem (yavdr-ansible auf Ubuntu-20.04, Kubuntu-20.04 Focal Fossa, Win10)
    yavdr-ansible, Ausgabe über Nvidia vdpau

  • Hallo Gerald,


    vielen Dank für den Hinweis, ich habe mal

    Code
    echo "Start Lirc" > /tmp/lirc.log
    date >> /tmp/lirc.log
    ifconfig lo >> /tmp/lirc.log
    ls -la /dev/lircd >> /tmp/lirc.log
    ls -la /var/run/lirc/lircd >> /tmp/lirc.log


    in /etc/init.d/lirc eingefügt. Beim nächsten mal, wenn lirc nicht startet (also hoffentlich nie :) ) melde ich mich wieder.



    Bert: svdrpsend "MESG Wie gehts"
    funktioniert bei mir fehlerfrei.


    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

  • Hallo,


    inzwischen hatte ich einen Fehlstart und verschiedene fehlerfreie Starts.
    Der einzige Unterschied:


    Beim fehlerfreien Start existieren weder

    Code
    /dev/lircd

    noch

    Code
    /var/run/lirc/lircd

    (?). Beim fehlerhaften Start existiert

    Code
    srw-rw-rw- 1 root root 0 Dec 10 04:07 /var/run/lirc/lircd

    ! Den Debug-Code habe ich übrigens vor

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

    eingefügt. Tritt der Fehler also auf, wenn Module zu früh geladen werden? Welches Programm legt denn /var/run/lirc/lircd an?


    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

  • Ich hatte das Problem auch mit Karmic. Ich verwende die Medion X10 Fernbedienung mit vdr-sxfe. Ich habe die Ursache für das Problem auch nicht gefunden dann habe ich einfach mal diese Zeilen in die /etc/rc.local eingetragen. Seitdem läuft es immer zuverlässig nach jedem Start. Ist natürlich sehr unsauber, aber vielleicht kommt ja noch eine bessere Lösung...


    modprobe ati_remote
    rmmod ati_remote
    /etc/init.d/lirc restart


    greets - Foppel

  • Zitat

    Original von MarkusE
    inzwischen hatte ich einen Fehlstart und verschiedene fehlerfreie Starts.


    Was ist denn nun mit der Ausgabe von "ifconfig lo"?


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • Zitat


    Was ist denn nun mit der Ausgabe von "ifconfig lo"?


    Gerald


    Hallo Gerald, die sieht eigentlich immer gleich aus, etwa so:


    Code
    lo        Link encap:Local Loopback
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:16436  Metric:1
              RX packets:2 errors:0 dropped:0 overruns:0 frame:0
              TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:100 (100.0 B)  TX bytes:100 (100.0 B)


    oder:

    Code
    lo        Link encap:Local Loopback
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:16436  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)


    Scheint sich nur in den RX und TX packets zu unterscheiden. Ist das wichtig?


    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

  • Zitat

    Original von MarkusE
    Scheint sich nur in den RX und TX packets zu unterscheiden. Ist das wichtig?


    Nö. Da lag ich mit meiner ursprünglichen Vermutung also falsch, schade.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • Zitat

    Originally posted by MarkusE
    inzwischen hatte ich einen Fehlstart und verschiedene fehlerfreie Starts.
    Der einzige Unterschied:


    Beim fehlerfreien Start existieren weder

    Code
    /dev/lircd

    noch

    Code
    /var/run/lirc/lircd


    ...
    Tritt der Fehler also auf, wenn Module zu früh geladen werden? Welches Programm legt denn /var/run/lirc/lircd an?


    Also wenn er fehlerfrei startet, startet er, wen nicht dann nicht ^^ Entbehrt nicht unbedingt jeder Logik ;)


    /var/run/lirc/lircd ist der Socket den lirc bereitstellt und auf den dann andere Programme zugreifen. /dev/lircd war das früher deswegen wird ein Link gesetzt von dem Socket dahin. Sprich wenn lircd läuft gibts auch den Socket.

    VDR User: 87 - LaScala LC14B - LG/Phillipps 6,4" VGA Display | Asrock H61/U3S3 | G630T | 1x 16GB Mobi Mtron 3035 1x WD 750GB 2,5" |1x L4m DVB-S2 Version 5.4

  • Hallo,


    ein paar mehr Ergebnisse:


    a) Das mit der Existenz von '/var/run/lirc/lircd' ist nicht reproduzierbar. Manchmal geht's auch, wenn diese existiert.


    b) /etc/init.d/lirc wird zwei mal aufgerufen. Beim ersten Aufruf existiert am Anfang weder '/var/run/lirc/lircd' noch '/dev/lircd'. Am Ende Beide. Verstehe ich.
    Beim Zweiten Aufruf existiert am Anfang nur '/var/run/lirc/lircd', nicht aber '/dev/lircd'. Verstehe ich nicht: Wer hat '/dev/lircd' gelöscht? Und warum wird /etc/init.d/lirc zum Zweiten mal aufgerufen? Am Ende des zweiten Aufrufs existieren wieder '/var/run/lirc/lircd' und '/dev/lircd'.


    Das hier in b) beschriebene Verhalten trat so bei den letzten Starts auf. lirc hat da immer funktioniert.


    Weiß jemand, warum /etc/init.d/lirc zwei mal aufgerufen wird und zwischendurch '/dev/lircd' verschwindet?


    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

  • Hallo,


    in /etc/init.d/lirc

    Code
    start-stop-daemon --start --quiet --oknodo --exec /usr/sbin/lircd -- $REMOTE_LIRCD_ARGS < /dev/null
    log_end_msg $?
    if [ -S "$REMOTE_SOCKET" -a "$OLD_SOCKET" != "$REMOTE_SOCKET" ]; then

    Das ist ein Bug: Die erste Zeile startet /usr/sbin/lircd als Daemon, also im Hintergrund. /usr/sbin/lircd legt $REMOTE_SOCKET an. Ob das allerdings bereits bei dem if Statement geschehen ist oder später, ist Zufall. Anders ausgedrückt, ob das if Statement wahr oder falsch ist, ist Zufall!
    Ich habe also das if Statement so:

    Code
    if [  "$OLD_SOCKET" != "$REMOTE_SOCKET" ]; then

    geändert.


    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

  • Hallo,


    das zweite mal wird /etc/init.d/lirc anscheinend von udev gestartet. Der zweite Parameter $2 ist dann udev. Warum udev das startet und wie ich das verhindern kann, habe ich nicht herausgefunden.
    Beim zweiten Start wird zwar das erneute Laden der Module verhindert (was sicherlich sinnvoll ist),

    Code
    start-stop-daemon --start --quiet --oknodo --exec /usr/sbin/lircd -- $REMOTE_LIRCD_ARGS < /dev/null

    wird aber ein zweites mal aufgerufen. An sich sollte das kein Problem sein, da lirc prüft, ob es bereits läuft, und sich in diesem Fall selbst beendet. Andererseits möchte ich nicht ausschließen, dass diese Prüfung in manchen Fällen schief geht und sich beide lirc beenden (da beide das jeweils andere lirc sehen). Dies würde dann zu dem von mir im ersten Post beschriebenen Fehler führen.
    Ich habe daher /etc/init.d/lirc so geändert, dass beim zweiten Aufruf (von udev) nichts gemacht wird.


    Ob der Fehler damit wirklich behoben ist, wird die Zeit zeigen.


    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

  • Sehr gute Analyse - so wie ich das sehe hat irgendetwas eine rule in /etc/udev/rules.d/ installiert, nach meinem simplen Verständnis. Kannst du mal ein grep -r lirc /etc/udev/ machen und schauen ob das was zurückgibt ?


    Anscheinend soll das beim anstecken eines lirc empfängers lirc starten.

    VDR User: 87 - LaScala LC14B - LG/Phillipps 6,4" VGA Display | Asrock H61/U3S3 | G630T | 1x 16GB Mobi Mtron 3035 1x WD 750GB 2,5" |1x L4m DVB-S2 Version 5.4

  • Hallo,


    ich habe in /etc/udev/rules.d/ nachgesehen, da steht nichts von lirc. Allerdings in /lib/udev/rules.d/85-lirc.rules:

    Code
    ACTION=="add", KERNEL=="lirc[0-9]", RUN="/etc/init.d/lirc restart udev"
    ACTION=="remove", KERNEL=="lirc[0-9]", RUN="/etc/init.d/lirc stop udev"

    Und damit ist auch alles klar:


    1 /etc/init.d/lirc wird gerufen
    2 in /etc/init.d/lirc werden die Module geladen.
    3 Durch das Laden der Module wird udev aktiv
    4 udev ruft /etc/init.d/lirc restart udev
    5 Nun läuft also /etc/init.d/lirc 2 mal gleichzeitig :evil:
    6 intern wird /etc/init.d/lirc stop gerufen, was lirc killt
    7 dann wird intern /etc/init.d/lirc start udev gerufen. Dabei wird (immerhin) ein erneutes Laden der Module verhindert


    Und nun kann es natürlich mal passieren, dass dabei kein lirc übrigbleibt.
    Lösungen sehe ich folgende:


    a) ACTION=="add", KERNEL=="lirc[0-9]", RUN="/etc/init.d/lirc restart udev in 85-lirc.rules entfernen:
    Warum sollte an dieser Stelle /etc/init.d/lirc noch mal gerufen werden?
    b) /etc/init.d/lirc so umschreiben, dass bei Aufruf ohne udev nur die Module geladen werden und bei Aufruf mit udev nur lircd gestartet wird.


    Am besten wäre natürlich, lirc gleich auf upstart umzustellen. Gerald, Du hast das doch mal probiert. Kannst Du mir deine dafür verwendeten Dateien zukommen lassen? Ich würde dann versuchen, das stabil zu bekommen.


    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

  • Zitat

    Original von MarkusE
    Lösungen sehe ich folgende:


    a) ACTION=="add", KERNEL=="lirc[0-9]", RUN="/etc/init.d/lirc restart udev in 85-lirc.rules entfernen:
    Warum sollte an dieser Stelle /etc/init.d/lirc noch mal gerufen werden?
    b) /etc/init.d/lirc so umschreiben, dass bei Aufruf ohne udev nur die Module geladen werden und bei Aufruf mit udev nur lircd gestartet wird.


    Hallo Markus,


    ich habe bei mir exakt das gleiche Problem wie Du unter Karmic. Hast Du schon Lösung a) ausprobiert, ob sie erstmal läuft?


    Danke & viele Grüße
    Wladimir

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!