Client-/Server-Installation - Best Practice in 2025?

  • Der PC im Wohnzimmer ist groß und verbraucht viel Strom, deshalb soll eine Client-/Server-Installation her. Es gibt nur einen Client, weitere sind nicht geplant.

    Vorhanden sind:

    Sat-Empfang: SATIP-Tuner mit 8 Tunern
    VDR-Server: MLD 6.5 VM auf einem NAS, Aufnahmeverzeichnis kommt über NFS vom NAS
    VDR-Client: VDRSternELEC auf RPI4

    Das funktioniert soweit ganz gut, aber ein paar Fragen sind für mich offen:

    Client:

    Hier kann entweder streamdev-client oder satip für live TV genutzt werden - besser ist?
    Im Moment habe ich per satip einen Tuner konfiguriert, Vorteile sind femon und EPG lokal - Nachteile?
    Wie bekommt der Client die EPG-Daten wenn stremdev-client verwendet wird - per epgsync-plugin?
    Der rpi4 hält dauerhaft den SATIP-Tuner aktiv, ist es möglich den Empfang (per FB) zu stoppen/starten?

    Server:

    Wie bekommt das Backend Änderungen am Aufnahmeverzeichnis durch den Client mit (z.B. löschen einer Aufnahme)?
    Die vom aktuellen VDR kopierten Aufnahmen hat der Server erst nach Neustart des VDR gesehen.

    Weitere Tipps oder auch Dos and Don'ts im Sinne von Best Practice?

    1. Gen VDR: MSI 651p, TT FF & Budget, graphLCD, GraphTFT, LNB-Sharing Patch / Flachantenne
    2. Gen VDR: Thermaltake DH102, TT 6400HD, SaTiX-S2 / Quattro LNB, Multischalter, Noname 65cm Spiegel
    3. Gen VDR: SM Cube S8, TT 6400HD, DD MaxS8, Atric IR-Wakeup USB / SCR LNB, DigiDish 45
    4. Gen VDR: SM ST-780, RTX3050 Softdevice, vtuner, Atric IR-Wakeup USB / DD Octopus Net, SCR LNB, Satman 65
    5. Gen VDR: Client: Argon One M.2, PI4, MLD 6.5 / Server: VM, MLD 6.5 / DD Octopus Net, SCR LNB, Satman 65

  • Ich hab so ein setup.

    Rpi5 als Aufnahmeserver, Rpi4 als Client. Aufnahneverzeichnis des Servers ist per Samba eingebunden. Alle Timer triggern Aufnahmen des Servers. Der Server führt über den "-r" Parameter ein Skript aus, das für started, after und edited jeweils die .update Datei setzt und chmod/chown für die Aufnahmedateien ausführt. Ebenso markad bei "after". Dadurch wird ein Neueinlesen auch für die Clients getriggert. Zusätzlich kann die Aufnahme gleich abgespielt werden, auch wenn der Server noch aufnimmt. Aber ich glaube, das geht nur mit Samba.

    Der Satip Server - hier ein Kathrein - gibt dem Server 4 Tuner, dem Client 2 (vor PiP war es nur einer). Allerdings nutze ich nicht das satip-plugin sondern vtuner-ng. Das legt das device schlafen, wenn es nicht mehr benutzt wird. Beim satip-plugin hat soch in letzter Zeit wohl auch was getan, aber da bin ich nicht auf Stand. Auf den Clients ist MinUserInactivity aktiviert, was dafür sorgt, dass bei einem Tuner während der Idle-Zeit ein epg Scan durchgeführt werden kann. Bei 2 Tunern passiert das eh.

    Ich würde sagen, es läuft perfekt und wüsste nicht, was ich anders haben wollte. Server und Client laufen 24/7.


    Edit: streamdev-server nutze ich nicht (mehr). Solange du genug Tuner hast, würde ich darauf verzichten. So bleibt dein Client unabhängig vom Server und es gibt eine Fehlerquelle weniger.

    Meine VDRs

    (SatIP Server) --- Kathrein Exip 418 ---
    (Server) --- HW: RPI5 --- SW: RPiOs, VDR 2.7.7 mit streamdev, satip/vtuner-ng, live, epgsearch, markad ---
    (Client 1) --- HW: RPI4 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (Client 2) --- HW: Radxa Rock 4 Plus - RK3399 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (WIP) --- Tanix TX6, RPi5, RPi4, Odroid N2+, WetekPlay2 --- SW: VDR*ELEC mit softhddevice-drm-gles --

    Edited 2 times, last by rell (December 27, 2025 at 9:28 PM).

  • Bin auf vtuner umgestiegen und habe zwei Tuner an den Client zugewiesen.
    Mit EPGPauseAfterScann und EPGScannMaxChannel ist der zweite Tuner dank vtuner nur sehr kurze Zeit belegt.
    Den Bonus PIP nehme ich gerne mit.

    Der Tip mit dem "-r" Parameter löst das Problem mit den Aktualisierungen des Aufnahmeverzeichnisses nur zum Teil, Löschen von Aufnahmen wird damit nicht erkennt.

    Was mich stört ist der ständig aktive Tuner auf dem Client. Mit dem dynamite-Plugin wäre das evtl. lösbar, aber weder bei VDR*ELEC noch bei MLD 6.5 ist das dabei.
    Das sind im RPI und SATIP-Tuner so ca. 10W Unterschied (gemessen mit Fritz!DECT) zu inaktiven Tuner, die würde ich 7/24 gerne vermeiden.

    1. Gen VDR: MSI 651p, TT FF & Budget, graphLCD, GraphTFT, LNB-Sharing Patch / Flachantenne
    2. Gen VDR: Thermaltake DH102, TT 6400HD, SaTiX-S2 / Quattro LNB, Multischalter, Noname 65cm Spiegel
    3. Gen VDR: SM Cube S8, TT 6400HD, DD MaxS8, Atric IR-Wakeup USB / SCR LNB, DigiDish 45
    4. Gen VDR: SM ST-780, RTX3050 Softdevice, vtuner, Atric IR-Wakeup USB / DD Octopus Net, SCR LNB, Satman 65
    5. Gen VDR: Client: Argon One M.2, PI4, MLD 6.5 / Server: VM, MLD 6.5 / DD Octopus Net, SCR LNB, Satman 65

  • Kann man das mit VDR Hausmitteln machen?

    Code
    EPG scan timeout = 24
    EPG pause after scan = yes

    setzen, dann sollte bei einem 2 Tuner-System immer 24h bis zu einem neuen Scan gewartet werden?

    Bei

    Code
    Min. user inactivity = 

    bin ich mir nicht sicher, ob nur versucht wird, das shutdown-Skript auszuführen (bei mir nicht vorhanden), oder auch das replay gestoppt wird und die tuner freigegeben werden...

    Alternativ könntest du das Ausgabedevice detachen, dann sollten alle Tuner frei werden. Detach/Attach geht allerdings momentan nur über svdrp.

    Meine VDRs

    (SatIP Server) --- Kathrein Exip 418 ---
    (Server) --- HW: RPI5 --- SW: RPiOs, VDR 2.7.7 mit streamdev, satip/vtuner-ng, live, epgsearch, markad ---
    (Client 1) --- HW: RPI4 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (Client 2) --- HW: Radxa Rock 4 Plus - RK3399 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (WIP) --- Tanix TX6, RPi5, RPi4, Odroid N2+, WetekPlay2 --- SW: VDR*ELEC mit softhddevice-drm-gles --

  • Der Tip mit dem "-r" Parameter löst das Problem mit den Aktualisierungen des Aufnahmeverzeichnisses nur zum Teil, Löschen von Aufnahmen wird damit nicht erkennt.

    Löscht du so oft, dass das praxisrelevant ist? Einen Aufnahmescan kannst du ja jederzeit selbst anstoßen...

    Meine VDRs

    (SatIP Server) --- Kathrein Exip 418 ---
    (Server) --- HW: RPI5 --- SW: RPiOs, VDR 2.7.7 mit streamdev, satip/vtuner-ng, live, epgsearch, markad ---
    (Client 1) --- HW: RPI4 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (Client 2) --- HW: Radxa Rock 4 Plus - RK3399 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (WIP) --- Tanix TX6, RPi5, RPi4, Odroid N2+, WetekPlay2 --- SW: VDR*ELEC mit softhddevice-drm-gles --

  • Wie bekommt das Backend Änderungen am Aufnahmeverzeichnis durch den Client mit (z.B. löschen einer Aufnahme)?
    Die vom aktuellen VDR kopierten Aufnahmen hat der Server erst nach Neustart des VDR gesehen.

    Nochmal zum Verständnis. Wer kopiert hier Aufnahmen? Wer löscht wie und wo Aufnahmen?

    Meine VDRs

    (SatIP Server) --- Kathrein Exip 418 ---
    (Server) --- HW: RPI5 --- SW: RPiOs, VDR 2.7.7 mit streamdev, satip/vtuner-ng, live, epgsearch, markad ---
    (Client 1) --- HW: RPI4 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (Client 2) --- HW: Radxa Rock 4 Plus - RK3399 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (WIP) --- Tanix TX6, RPi5, RPi4, Odroid N2+, WetekPlay2 --- SW: VDR*ELEC mit softhddevice-drm-gles --

  • Kopiert wird - nach der initialen Übertragung der Aufnahmen vom aktuellen VDR - nichts.

    Gelöscht wird auf dem Client nach dem ansehen einer Aufnahme und zum aufräumen per live-Plugin auf dem Server.
    Ob das praxisrelevant ist wird sich zeigen, go live ist heute.

    1. Gen VDR: MSI 651p, TT FF & Budget, graphLCD, GraphTFT, LNB-Sharing Patch / Flachantenne
    2. Gen VDR: Thermaltake DH102, TT 6400HD, SaTiX-S2 / Quattro LNB, Multischalter, Noname 65cm Spiegel
    3. Gen VDR: SM Cube S8, TT 6400HD, DD MaxS8, Atric IR-Wakeup USB / SCR LNB, DigiDish 45
    4. Gen VDR: SM ST-780, RTX3050 Softdevice, vtuner, Atric IR-Wakeup USB / DD Octopus Net, SCR LNB, Satman 65
    5. Gen VDR: Client: Argon One M.2, PI4, MLD 6.5 / Server: VM, MLD 6.5 / DD Octopus Net, SCR LNB, Satman 65

  • nach der initialen Übertragung der Aufnahmen vom aktuellen VDR

    Aber was heißt das? Es nimmt doch immer nur der Server auf, oder? Was muss denn dann wohin übertragen werden?

    Meine VDRs

    (SatIP Server) --- Kathrein Exip 418 ---
    (Server) --- HW: RPI5 --- SW: RPiOs, VDR 2.7.7 mit streamdev, satip/vtuner-ng, live, epgsearch, markad ---
    (Client 1) --- HW: RPI4 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (Client 2) --- HW: Radxa Rock 4 Plus - RK3399 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (WIP) --- Tanix TX6, RPi5, RPi4, Odroid N2+, WetekPlay2 --- SW: VDR*ELEC mit softhddevice-drm-gles --

  • Wenn ich VDRs recording.c richtig lese, wird die .update Datei auch angelegt, wenn Aufnahmen gelöscht wurden. Das passiert aber zeitverzögert, d.h. die zu löschende Aufnahme wird erstmal markiert. Ein Lösch-Thread sucht periodisch (default - 1min) nach markierten Aufnahmen und löscht die dann nach 5min (default). So in etwa sollte das ablaufen.

    Meine VDRs

    (SatIP Server) --- Kathrein Exip 418 ---
    (Server) --- HW: RPI5 --- SW: RPiOs, VDR 2.7.7 mit streamdev, satip/vtuner-ng, live, epgsearch, markad ---
    (Client 1) --- HW: RPI4 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (Client 2) --- HW: Radxa Rock 4 Plus - RK3399 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (WIP) --- Tanix TX6, RPi5, RPi4, Odroid N2+, WetekPlay2 --- SW: VDR*ELEC mit softhddevice-drm-gles --

    Edited once, last by rell (December 28, 2025 at 12:54 PM).

  • Aber was heißt das? Es nimmt doch immer nur der Server auf, oder? Was muss denn dann wohin übertragen werden?

    Die alten Aufnahmen vom aktuellen VDR sind von dort per scp auf das NAS (und damit auf den neuen VDR Server) kopiert worden.

    1. Gen VDR: MSI 651p, TT FF & Budget, graphLCD, GraphTFT, LNB-Sharing Patch / Flachantenne
    2. Gen VDR: Thermaltake DH102, TT 6400HD, SaTiX-S2 / Quattro LNB, Multischalter, Noname 65cm Spiegel
    3. Gen VDR: SM Cube S8, TT 6400HD, DD MaxS8, Atric IR-Wakeup USB / SCR LNB, DigiDish 45
    4. Gen VDR: SM ST-780, RTX3050 Softdevice, vtuner, Atric IR-Wakeup USB / DD Octopus Net, SCR LNB, Satman 65
    5. Gen VDR: Client: Argon One M.2, PI4, MLD 6.5 / Server: VM, MLD 6.5 / DD Octopus Net, SCR LNB, Satman 65

  • Ich habs zwar immer noch nicht verstanden ;) , aber wenn du manuell was am video-Verzeichnis änderst, d.h. wenn du dorthin Dateien kopierst, musst du die .update Datei manuell "touchen". Eine "automatische" Überwachung mit VDR-Boardmitteln gibt es imho nicht.

    Meine VDRs

    (SatIP Server) --- Kathrein Exip 418 ---
    (Server) --- HW: RPI5 --- SW: RPiOs, VDR 2.7.7 mit streamdev, satip/vtuner-ng, live, epgsearch, markad ---
    (Client 1) --- HW: RPI4 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (Client 2) --- HW: Radxa Rock 4 Plus - RK3399 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (WIP) --- Tanix TX6, RPi5, RPi4, Odroid N2+, WetekPlay2 --- SW: VDR*ELEC mit softhddevice-drm-gles --

  • Gibt bei der MLD 6.5 das neue satip-Plugin nicht die Tuner der octopus frei, wenn sie nicht benötigt werden? Zumindest habe ich das so verstanden. Wenn man auf dem Client den epgscan abschalten würde, dann würde der ja beim Ansehen von Aufnahmen vom Server keinen Tuner belegen. Der Server allerdings schon, wenn er 24/7 laufen soll.

    VDR1: Asus q1900 Pro M, 2GB, Cine2 Dual DVB S2,Atric USB, yaVDR 0.6 stable, Gehäuse Modushop CD21
    VDR2: RaspBerry Pi4 mit MLD 6.5
    Ausgemustert: VDR: Lintec Senior Gehäuse,Technotrend 1.6, Siemens D1215 Mainboard mit Celeron 1000,Pabst Lüfter, EasyVDR 0.5, KäptnKoma Display 260x64,Schäfer Front (ausgemustert)

  • Ich switche mittels SD-Kartentausch zwischen VDR*ELEC und MLD 6.5 hin und her, deshalb kann ich bestätigen, das auch unter MLD 6.5 mit dem SATIP-Plugin die Tuner freigegeben werden.

    1. Gen VDR: MSI 651p, TT FF & Budget, graphLCD, GraphTFT, LNB-Sharing Patch / Flachantenne
    2. Gen VDR: Thermaltake DH102, TT 6400HD, SaTiX-S2 / Quattro LNB, Multischalter, Noname 65cm Spiegel
    3. Gen VDR: SM Cube S8, TT 6400HD, DD MaxS8, Atric IR-Wakeup USB / SCR LNB, DigiDish 45
    4. Gen VDR: SM ST-780, RTX3050 Softdevice, vtuner, Atric IR-Wakeup USB / DD Octopus Net, SCR LNB, Satman 65
    5. Gen VDR: Client: Argon One M.2, PI4, MLD 6.5 / Server: VM, MLD 6.5 / DD Octopus Net, SCR LNB, Satman 65

  • Wenn ich VDRs recording.c richtig lese, wird die .update Datei auch angelegt, wenn Aufnahmen gelöscht wurden. Das passiert aber zeitverzögert, d.h. die zu löschende Aufnahme wird erstmal markiert. Ein Lösch-Thread sucht periodisch (default - 1min) nach markierten Aufnahmen und löscht die dann nach 5min (default). So in etwa sollte das ablaufen.

    Nach zwei Tagen Praxistest:

    Wie, nach dem Blick von zell in den Code, nicht anders zu erwarten bekommen die beiden VDR gegenseitig das Löschen von Aufnahmen (zeitnah) mit.
    Zusammen mit dem touch der .update Datei durch das Script im "-r" Parameter ist das Handling der Aufnahmen zwischen Client und Server kein Problem.

    1. Gen VDR: MSI 651p, TT FF & Budget, graphLCD, GraphTFT, LNB-Sharing Patch / Flachantenne
    2. Gen VDR: Thermaltake DH102, TT 6400HD, SaTiX-S2 / Quattro LNB, Multischalter, Noname 65cm Spiegel
    3. Gen VDR: SM Cube S8, TT 6400HD, DD MaxS8, Atric IR-Wakeup USB / SCR LNB, DigiDish 45
    4. Gen VDR: SM ST-780, RTX3050 Softdevice, vtuner, Atric IR-Wakeup USB / DD Octopus Net, SCR LNB, Satman 65
    5. Gen VDR: Client: Argon One M.2, PI4, MLD 6.5 / Server: VM, MLD 6.5 / DD Octopus Net, SCR LNB, Satman 65

  • Fazit nach ca. zwei Wochen:

    Client/Server ist absolut praxistauglich, aber wie sieht nun die Best Practice aus? Für mich ist folgendes Setup raus gekommen:

    Server:

    MLD 6.5 in einer VM. Der VDR läuft ohne dummydevice, damit hat der VDR kein Ausgabeplugin und belegt keine Tuner wenn er nicht gerade aufnimmt oder das EPG scannt. Aufnahmeverzeichnis kommt per NFS vom NAS. Hier ist der Tip von rell wichtig, mit dem Parameter „-r“ die .update Datei zu setzen, sonst sieht der Client die Änderungen nicht. Hier sind die Plugins live und epgsearch installiert.

    Client:

    VDR*ELEC auf einem Raspberry PI4. Der Client hat zwei "eigene" Tuner und ist damit was live TV und EPG angeht unabhängig vom Server. Hier ist das femon Plugin installiert. Der Client gibt permanent das TV wieder und hält damit den SATIP Tuner aktiv. Ich habe es nicht geschafft das innerhalb des VDR zu unterbinden. Die Lösung besteht nun darin, den VDR mit der Power Taste der FB zu beenden ohne den PI in den shutdown zu schicken. Mittels triggerhappy wird der VDR durch die Power Taste der FB dann wieder gestartet.

    Bei beiden VDR sind EPG Parameter EPGPauseAfterScann und EPGScannMaxChannel gesetzt, damit die Tuner nicht permanent mit dem Scan des EPG belegt sind.

    SVDRP-App:

    Zur Nutzung muss auf dem Client noch epgsearch installiert werden – da das nur im Hintergrund gebraucht wird, kann man den Hauptmenü Eintrag ausblenden und gut ist.

    1. Gen VDR: MSI 651p, TT FF & Budget, graphLCD, GraphTFT, LNB-Sharing Patch / Flachantenne
    2. Gen VDR: Thermaltake DH102, TT 6400HD, SaTiX-S2 / Quattro LNB, Multischalter, Noname 65cm Spiegel
    3. Gen VDR: SM Cube S8, TT 6400HD, DD MaxS8, Atric IR-Wakeup USB / SCR LNB, DigiDish 45
    4. Gen VDR: SM ST-780, RTX3050 Softdevice, vtuner, Atric IR-Wakeup USB / DD Octopus Net, SCR LNB, Satman 65
    5. Gen VDR: Client: Argon One M.2, PI4, MLD 6.5 / Server: VM, MLD 6.5 / DD Octopus Net, SCR LNB, Satman 65

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!