Posts by seahawk1986

    Lassen sich die Tuner dann vom VDR nicht mehr umschalten oder was genau meinst du mit "frei gegeben"? Der VDR selbst ist ja eigentlich nicht dafür ausgelegt mit einem Tuner etwas anderes zu machen als damit endlos zu empfangen, sobald er damit erstmalig einen Kanal getuned hat.

    streamdev bekommt AFAIK nur mit, dass es keine Daten mehr an den Client raus schreiben kann bzw. die Verbindung unterbrochen wurde und das ändert nichts daran, dass der VDR weiterhin auf den Kanal bzw. Transponder getuned bleibt, bis jemand etwas anderes von ihm verlangt.

    Kann es von dieser Zeile kommen ?

    Möglich, wenn sich head beendet, weil es genug Zeilen gelesen hat, aber grep noch einen Schwung Daten hat, die es in die Pipe schreiben will, bevor es merkt, dass die zu ist. Versuch die Zeile mal so umzuformen:

    done < <(grep -av "^:" ${CHANNELS_CONF} | tail -n +1 | head -n "$MAXCHANNELS")

    2. Ich rufe das script mit & (in den Hintergrund) aus der rc-local auf ...

    Damit ist auf einem Ubuntu 20.04 nicht garantiert, dass das Skript gestartet wird, wenn der VDR schon läuft - systemd-rc-local-generator arbeitet anders als das von SysV-Init bekannte Verhalten das rc.local Skript als letztes beim Boot-Vorgang auszuführen. Sowas würde ich in eine Systemd-Unit packen, die von der Systemd-Unit, die den VDR startet (üblicherweise die vdr.service) abhängt und nach deren Start ausgeführt wird.


    3 Außerdem würde ich das mit dem untersch. delay auch bei SVDRP einbauen, weil das Problem mit der Verzög./mcli ja das Gleiche ist !

    Das macht mein Skript so hoffentlich richtig (oben habe ich den falschen Key für den Assoziativen Array benutzt):

    Ev. hat es damit zu tun, dass ich über /network/interfaces die IP statisch vorgegeben habe und netplan außen vor ist ???

    Was genau hast du da konfiguriert? Fehlt dir da eventuell ein Loopback für lo? Bei der gezeigten streamdevhosts.conf erübrigen sich die Regeln zu den Subnetzen davor eigentlich, wenn du die letzte Zeile mit 0.0.0.0/0 drin hast.


    Auf meinem System sieht das so aus:

    Code
    1. $ sudo netstat -tlpen4 | grep vdr
    2. tcp 0 0 0.0.0.0:6419 0.0.0.0:* LISTEN 666 36791 1227/vdr
    3. tcp 0 0 0.0.0.0:2004 0.0.0.0:* LISTEN 666 36677 1227/vdr
    4. tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN 666 36678 1227/vdr
    5. tcp 0 0 0.0.0.0:8002 0.0.0.0:* LISTEN 666 36484 1227/vdr
    6. tcp 0 0 0.0.0.0:8008 0.0.0.0:* LISTEN 666 36480 1227/vdr
    7. tcp 0 0 0.0.0.0:34890 0.0.0.0:* LISTEN 666 37081 1227/vdr

    Bitte um Euren Input dazu ...

    Du musst halt im Array TMP auf das Feld für die CAID schauen und wenn das nicht 0 ist (genau genommen muss man nach potentiell Komma-Getrennten Werden > 15 schauen (http://vdr-wiki.de/wiki/index.php/Channels.conf#CAID), aber ich tue mal so, als ob man das nicht braucht) ist einen anderen Delay nutzen - also z.B. so:

    Ich weiß ja nicht, wie streamdev-server auf deinem System konfiguriert ist (und ob der VDR das überhaupt geladen hat). Falls streamdev-server aktiv ist und auf Port 3000 lauscht, müsste man im Log sehen, warum er den Zugriffsversuch auf den Stream für ORF 1 HD abgelehnt hat.

    Das sleep $ZAPDELAY braucht es aber auch beim streamdev und ev. auch das in den Hintergrund senden mit &.

    wget läuft für $ZAPDELAY und wird dann von timeout gekillt (vgl. Zeile 41) - und wenn das durch ist, macht er den nächsten Kanal. Ich sehe nicht, warum man wget da in den Hintergrund senden sollte.

    MegaV0lt könnte man nicht den SVDRP Aufruf wo du die Kanäle aufrufst gegen die streamdev Abfrage tauschen ?

    Da braucht es eigentlich nur eine Fallunterscheidung, welche Methode zum Kanal umschalten genutzt werden soll - mal grob:


    Macht Sinn, wenn das Skript auf einem Client ohne VDR läuft, weil da hat man dann auch kein svdrpsend. Aber warum sollte man das auf einem Client laufen lassen ?

    Ich denke die Intention hinter dem Umschalten mit streamdev statt per svdrp ist, dass der gerade gewählte Sender nicht verändert wird (zumindest, wenn man in den Einstellungen des Plugins festgelegt hat, dass die Client das Live-TV des Servers nicht pausieren darf - https://projects.vdr-developer…sions/master/entry/README).

    es geht aktuell nur per vdr-plugin-delsys.

    Alternativ müsste auch das vdr-plugin-dynamite funktionieren, falls sich das mit den anderen Plugins nicht beißt (in den PPAs für focal ist das verfügbar).

    Wie kann ich in meiner yavdr ansible Installation das Plugin richtig übersetzen?

    Für das reguläre VDR-PPA könnte man das z.B. so machen:

    Code: ~/.quiltrc
    1. # see https://wiki.debian.org/UsingQuilt#Encapsulated
    2. d=. ; while [ ! -d $d/debian -a `readlink -e $d` != / ]; do d=$d/..; done
    3. if [ -d $d/debian ] && [ -z $QUILT_PATCHES ]; then
    4. # if in Debian packaging tree with unset $QUILT_PATCHES
    5. QUILT_PATCHES="debian/patches"
    6. if ! [ -d $d/debian/patches ]; then mkdir $d/debian/patches; fi
    7. fi

    eintragen, oder gäbe es da einen besseren Ort?

    Das müsste sich über einen Upstart-Job lösen lassen (die Dokumentation zu Upstart gibt es hier: http://upstart.ubuntu.com/cookbook/) - also grob sowas:

    Code: /etc/init/on-shutdown.conf
    1. description "Start on shutdown after vdr has been stopped"
    2. start on yavdr-shutdown # see https://github.com/yavdr/yavdr-utils/blob/stable-0.5/templates/etc/init.d/yavdr-shutdown/10_main
    3. script
    4. rsync -av --quiet /etc/vdr/ /srv/backups/vdr_bkp/etc_vdr
    5. end script

    Kannst Du mir bitte noch erläutern, warum das keine gute Idee ist, mit den GUI Programmen?

    Abhängig vom Programm können z.B. Dateien, die root gehören, in deinem Home-Verzeichnis landen (dagegen hilft sudo -H), versehentlich Prozesse gespawned werden, die in deiner Session aber nicht unter deinem Benutzer (sondern root) laufen usw. - das kann nervige Folgefehler verursachen.


    Mittlerweile gibt es auch Programme, die sich gar nicht mehr als root starten lassen (findet man vor allem unter KDE) und wenn Wayland als Display-Server eingesetzt wird, müssen die Clients im Kontext des Benutzers laufen, der die Session hat.

    Muss ich denn den X-Server vor dem Start von softhddrm stoppen?

    Ja, es darf keinen anderen DRM-Client geben, der gerade als Master fungiert (ich weiß auch nicht wie gut das "Loslassen" der Clients mittlerweile funktioniert, angeblich darf ab Kernel 5.8 ein DRM-Client seinen Master-Status ohne Root-Rechte abgeben) - also am besten yavdr-xorg.service, xlogin@vdr.service und x@vt7.service maskieren und den Rechner neu starten, dann sollte softhddrm beim Start der DRM-Master werden können.

    Es ist generell keine besonders gute Idee GUI-Programme als root zu starten, insbesondere wenn die im Hintergrund auf polkit setzen.


    Du brauchst also einen Dienst wie den polkit-gnome-authentication-agent-1 aus dem Paket policykit-1-gnome, der in der Session für deinen Benutzer laufen muss, damit er bei Bedarf die Authentifizierung durchführen kann.


    Also z.B. wenn du als Nutzer, der in der Gruppe sudo ist, auf dem System angemeldet bist:

    Code
    1. sudo apt install policykit-1-gnome
    2. export DISPLAY=:0
    3. /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1 &
    4. gparted

    Ah, da muss man statt dem local-fs.target (das beim Booten erreicht wird) das umount.target (das beim Herunterfahren erreicht wird) nutzen - so klappt es auf meinem Testsystem:

    Kann ich das durchzappen auf einen Tuner beschränken und die Zeit, wann er das machen soll, steuern?

    Der VDR sucht sich beim Umschalten immer den "günstigsten" Tuner für einen Kanal, man kann das soweit ich weiß nicht direkt steuern, welcher Tuner auf welchem Kanal unterwegs sein soll, sobald der VDR mehr als einen Tuner unter seiner Kontrolle hat.


    Normalerweise lohnt es sich schon eine kontinuierliche EPG-Aktualisierung im Hintergrund zu haben, da epgd sonst kurzfristige Programmänderungen (also z.B. sowas wie ein eingeschobener ARD Brennpunkt) möglicherweise nicht rechtzeitig mitbekommt. Falls man das nicht will, könnte man alternativ periodisch einen extra VDR-Prozess mit epg2vdr starten, der so konfiguriert ist, dass er nur einen Tuner bekommt und dann die Aktualisierung durchzieht (einen EPG-Scan kann man gezielt mittels svdrpsend SCAN anstoßen, wenn der Tuner gerade nicht anderweitig belegt ist (z.B. durch eine Aufnahme)).