Kodi und Zugriff auf /dev/dvb/*

  • Hallo zusammen,


    weiß jemand, wie man Kodi vom Zugriff auf die DVB Geräte abhalten kann?


    Läuft dies (für Bilder/Musik), bekomme ich vom VDR:


    Code
    1. Aug 13 21:27:29 roadrunner vdr: [2573] switching device 1 to channel 11 S19.2E-1-1019-10302 (arte HD)
    2. Aug 13 21:27:29 roadrunner vdr: [2573] dvb tuner: power-up - opening frontend 0/0
    3. Aug 13 21:27:29 roadrunner vdr: [2573] ERROR: can't open DVB device frontend 0/0
    4. Aug 13 21:27:29 roadrunner vdr: [2614] ERROR: frontend 0/0: Ungültiger Dateideskriptor

    Mache ich Kodi aus, kann der VDR sofort wieder auf die temporär abgeschalteten Geräte zugreifen... (und aufnehmen).


    Stefan

  • In https://linuxtv.org/pipermail/vdr/2016-June/029094.html und den folgenden Mails gab es schon mal eine ähnliche Problembeschreibung für den Energiespar-Patch für den VDR in Verbindung mit dem vnsiserver (mit aktivem Client).

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Habe das nochmal untersucht...

    Offenbar scheint vdr-plugin-externalplayer die Geräte an das Script durchzureichen, was dann seinerseits Kodi aufruft. Macht man bei Fehlermeldung

    ERROR (dvbdevice.c,1413): /dev/dvb/adapter0/dvr0:
    Das Gerät oder die Ressource ist belegt

    ein lsof, kommt:


    Code
    1. root@roadrunner:~# lsof /dev/dvb/adapter0/dvr0
    2. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
    3. sh 2535 vdr 38r CHR 212,5 0t0 1473 /dev/dvb/adapter0/dvr0
    4. start-kod 2536 vdr 38r CHR 212,5 0t0 1473 /dev/dvb/adapter0/dvr0
    5. sudo 2551 root 38r CHR 212,5 0t0 1473 /dev/dvb/adapter0/dvr0


    start-kodi.sh ruft per sudo kodi auf. Paßt also.
    Jemand eine Idee, wie man die offenen Filehandles im Kodi Startscript sauber schließt?


    Grüße,

    Stefan

  • Lass mal versuchsweise das externalplayer-Plugin weg, starte KODI auf einem anderen Weg (Shell, irexec oder ähnliches) und schau, ob das Problem dann immer noch auftritt - nicht, dass dein Start-Skript (was steht da drin) oder das Plugin das Problem verursachen. Warum KODI mit sudo aufgerufen werden muss ist mir auch nicht ganz klar.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Da ich Kodi nur für Bilder, Musik und Sachen, die der VDR nicht abspielen kann, nehme, hab ich das jetzt einfach so gemacht:


    Code
    1. {
    2. MenuEntry = "Medien";
    3. Command = "echo '/usr/bin/start-kodi' | at now";
    4. OutputMode = none;
    5. InputMode = normal;
    6. }


    Dann kehrt das ExternalPlayer-Plugin sofort zurück und die /dev/dvb/*/dvr0 bleiben frei. Ist also das Plugin... warum auch immer.


    "Sudo" ist im Spiel, um die "User"-Rechte schön da zu halten, wo sie hingehören.


    start-kodi sieht so aus:



    Grüße,

    Stefan

  • Dafür brauchst du kein externalplayer sondern die "commands.conf" sollte ausreichen.

    Und um das "at now" zu umgehen kannst du das Bash-Script einfach komplett in Klammern setzen (öffnende Klammer oben, schließende unten) und hinter die schließende ein "&" setzen. Skript beginnt also mit einer Zeile die "(" enthält und endet in einer Zeile mit ")&". Ergebnis ist, dass alles in einer im Hintergrund ausgeführten Subshell läuft.

  • Ob das Vorteile hat muss jeder selber wissen. Ich finde es einfach sauberer wenn das aufgerufene Skript einfach "forkt".

    Wegen commands.conf: Ich hatte in der Vergangenheit auch schonmal Probleme mit "externalplayer" und ungepflegt ist das Ding auch. Wenn es mit "Bordmitteln" möglich ist, verzichte ich also persönlich lieber auf zusätzlichen potentiell fehlerhaften Code.