raspiVDR Server
Einen VDR als "TV-Server" fürs ganze Haus mit mehreren Clients, das scheint mir jetzt mit dem stromsparenden Mainbord Q1900M PRO3 von ASROCK möglich zu sein.- Zielvorgabe Energiebedarf
- ca 30-35W im Dauerbetrieb sollten erreichbar sein
- Zielvorgabe Kosten
- Max. 200€, das kann aber nur erreicht werden wenn teilweise vorhandene Hardware weiterverwendet wird!
Mal sehen was letzendlich wirklich erreichbar ist...
Hardware
Mainboard
- ASROCK Q1900M PRO3
- Formfaktor µATX
- CPU J1900 4-Kern-Atomprozessor mit nur 10W TDP
- Schnittstellen
- 2x SATA
- 3x USB 2.0
- 1x USB 3.0
- Steckplätze für DVB-S2 Karten
- 2x PCI (die "alten" DVB-S2 Karten sollen noch weiterverwendet werden)
- 1x PCIe 1x (eine DVB-S2 Karte mit Dualtuner soll zusätzlich angeschafft werden)
- 1x PCIe 16x (es ist noch Platz für eine NVIDIA VDPAU fähige Grafikkarte - für alle Fälle)
- Arbeitsspeicher
- 4GB DDR3 ist nach meiner Ansicht mehr als genug!
DVB-S2
- 4 Tuner sollten bei 3 geplanten Clients ausreichen
- 2x Technotrend TT-budget S2-1600 PCI Karten (aus dem "alten" VDR ausgebaut)
- 1x TBS-6982 dual Tuner PCIe Karte
restliche Hardware
- Laufwerke
- 3TB SATA 3,5'' (aus Bestand)
- DVD mit SATA? Hab ich nicht, brauch ich nicht! Installiert wird über USB-Stick
- Gehäuse
- Der Server kommt unters Dach da kann ein altes verwendet werden
- Stromversorgung 120W HEC ... (aus Bestand)
Software
Als Software für den Server benutze ich easyVDR in der Version 2.0/2.5 an dem inzwischen 3 Raspberry PI (Version 2 oder 3) als Clients hängen. Um mit easyVDR einen VDR als Server zu betreiben sind nach der Installation noch einige Änderungen am System notwendig oder sinnvoll.VDR-Plugins
Diese zusätzlichen Plugins für den VDR habe ich aktiviert:streamdev-server
Das streamdev-server Plugin wird von easyVDR bereits bei der Installation aktiviert. Es sind allerdings noch einige zusätzliche Enstellungen vorzunehmen. Das kann wahlweise über das OSD des VDR-Servers oder über die Datei /var/lib/vdr/setup.conf des VDR-Servers eingestellt werden.OSD | Auswahl | setup.conf | Wert |
---|---|---|---|
Hauptmenüeintrag verstecken | Nein | streamdev-server.HideMenuEntry | 0 |
Live-TV beim start pausieren | Ja | streamdev-server.StartSuspended | 1 |
Maximalanzahl an Clients | 10 | streamdev-server.MaxClients | 10 |
Live-TV Pufferdauer (ms) | 0 | streamdev-server.LiveBufferMs | 0 |
VDR-zu-VDR Server starten | Ja | streamdev-server.StartServer | 1 |
Port des VDR-zu-VDR Servers | 2004 | streamdev-server.ServerPort | 2004 |
Binde an IP | 0.0.0.0 | streamdev-server.VTPBindIP | 0.0.0.0 |
Priorität für alte Clients | 0 | streamdev-server.VTPPriority | 0 |
Client darf pausieren | Ja | streamdev-server.AllowSuspend | 1 |
HTTP Server starten | Ja | streamdev-server.StartHTTPServer | 1 |
Port des HTTP Servers | 3000 | streamdev-server.HTTPServerPort | 3000 |
Binde an IP | 0.0.0.0 | streamdev-server.HTTPBindIP | 0.0.0.0 |
Priorität | 0 | streamdev-server.HTTPPriority | 0 |
HTTP Streamtyp | TS | streamdev-server.HTTPStreamType | 0 |
svdrposd
Damit kann das OSD des VDR-Servers auf dem Client dargestellt werden.femon
Signalstärke und Empfangsqualität der DVB-Karten im VDR-Server kann auch über den VDR-Client dargestellt werden.peer
Aufnahmen
Der VDR-Server soll auch alle Timer die an den Clients angestoßen werden bearbeiten und die Aufnahmen für alle Clients zur Verfügung stellen. Der VDR der auf den Clients läuft, benötigt in dem Aufnahmeordner des VDR-Servers schreibenden Zugriff um- Direktaufnahmen auf dem Server abzuspeichern.
- Die Wiedergabeposition einer Aufnahme abzuspeichern.
- Aufnahmen zu löschen
Benutzer | Lesen | Schreiben | Ausführen: Datei/Ordner |
---|---|---|---|
Eigentümer: vdr | X | X | - / X |
Gruppe: vdr | X | - | - / X |
Andere | X | - | - / X |
In der Kurzfassung: Ordner werden mit den Rechten 0755 und Dateien mit den Rechteb 0644 angelegt. Was uns hier fehlt ist die Schreibberechtigung für die Gruppe vdr also die Rechte 0775 und 0664. Um das zu erreichen muss dieses Verhalten vor dem Start des VDR mit umask 0002 geändert werden. Hier bei easyVDR kann das durch einen zusätzlichen Eintrag in /etc/default/vdr erfolgen.
/etc/default/vdr
umask 0002
Achtung diese Änderung könnte bei einem Systemupdate wieder überschrtieben werden!
Sind schon älter Aufnahmen auf dem VDR-Server, dann müssen auch für diese nachträglich die Dateirechte abgeändert werden.
find /video0/ -type d -exec sudo chmod 775 {} +
find /video0/ -type f -exec sudo chmod 664 {} +
find /video0/ -type f -exec sudo chmod 664 {} +
Benutzer anlegen
Der VDR auf meinen Clients läuft unter dem Benutzer pi . Deshalb benotigt auch der VDR-Server einen Benutzer pi dem man auch noch der Gruppe vdr zuordnen muss.
sudo adduser pi
sudo adduser pi vdr
sudo adduser pi vdr
Aufnahmeordner
Damit die aufgenommenen Sendungen auch uber das Netzwerk den Clients zur Verfügung stehen, muss noch der Aufnahmeordner im lokalen Netzwerk freigegeben werden. Da die Clients auch unter Linux laufen, kann dies als NFS Freigabe erfolgen.NFS
Eine NFS-Freigabe mit easyVDR erfolgt in 2 (3) Stufen:Stufe1:
Über einen 2. PC per SSH (Linux) oder Putty (Windows) kann man sich auf dem easyVDR Server einloggen.
sudo setup startet das Konfiguratuionstool von easyVDR. Dort im Bereich Netzwerk -> NFS den NFS Server konfigurieren.
sudo setup startet das Konfiguratuionstool von easyVDR. Dort im Bereich Netzwerk -> NFS den NFS Server konfigurieren.
Stufe2:
Über das OSD am easyVDR Server die Einstellung:
.System & Einstellungen
...Einstellungen
.....System-Einstellungen
.......Netzwerk ...
.........Dienste und Fernzugriff auf diesen VDR
...........NFS-Server starten
Den Eintrag NFS Server starten auf ja setzen
.System & Einstellungen
...Einstellungen
.....System-Einstellungen
.......Netzwerk ...
.........Dienste und Fernzugriff auf diesen VDR
...........NFS-Server starten
Den Eintrag NFS Server starten auf ja setzen
Danach den easyVDR Server neu starten
Stufe 3:
Da bis einschließlich easyVDR 2.5 die Ordnerfreigabe in der Konfigurationsdatei vom NFS Server nicht richtig gesetzt wird, sollte diese Datei noch überprüft werden.
Konfigurationsdatei NFS Server /etc/exports
# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
#
###_inserted_by_easyvdr_setup-do_not_edit__###
###################-begin-####################
/media/easyvdr01/video0 *(rw,no_subtree_check)
#/media/easyvdr01/filme1 *(rw,no_subtree_check)
#/media/easyvdr01/filme2 *(rw,no_subtree_check)
#/media/easyvdr01/filme3 *(rw,no_subtree_check)
#/media/easyvdr01/mp3 *(rw,no_subtree_check)
#/media/easyvdr01/photos *(rw,no_subtree_check)
/media/easyvdr01 *(rw,no_subtree_check)
#/ *(rw,no_subtree_check)
###################--end--####################
###_inserted_by_easyvdr_setup-do_not_edit__###
Mindestens der Eintrag /media/easyvdr01/video0 *(rw,no_subtree_check) sollte freigegeben sein (also ohne die Raute # am Zeilenanfang)
# to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
#
###_inserted_by_easyvdr_setup-do_not_edit__###
###################-begin-####################
/media/easyvdr01/video0 *(rw,no_subtree_check)
#/media/easyvdr01/filme1 *(rw,no_subtree_check)
#/media/easyvdr01/filme2 *(rw,no_subtree_check)
#/media/easyvdr01/filme3 *(rw,no_subtree_check)
#/media/easyvdr01/mp3 *(rw,no_subtree_check)
#/media/easyvdr01/photos *(rw,no_subtree_check)
/media/easyvdr01 *(rw,no_subtree_check)
#/ *(rw,no_subtree_check)
###################--end--####################
###_inserted_by_easyvdr_setup-do_not_edit__###
Die nachfolgenden Infos werden z.Zeit überarbeitet
Software (alt)
Für einen VDR-Server muss es keine der speziellen VDR-Distributionen sein, das kann auch mit ein wenig Handarbeit aus einer normalen Linux Distribution gebaut werden.Der 1. Versuch
Xubuntu 14.04 verwende ich auch privat und geschäftlich, das ist auch eine solide Basis für den VDR-Server. Als Ergänzung zur Standard Installation wurde meine Festplatte so vorbereitet:- /dev/sda1 im Format ext4
- ca. 30GB für das Betriebsystem Xubuntu 14.04 Mountpoint: /
- /dev/sda2 im Format xfs
- fast der ganze Rest als Datenpartition Mountpoint: /daten
- /dev/sda3 als SWAP
- ca. 2 GB
sudo apt-get update
sudo apt-get upgrade
Zusätzlich zur Standard Installation ist die Installation dieser Pakete sinnvoll:
sudo apt-get upgrade
mc Ein Dateimanager für das Terminal openssh-server Für den Zugriff auf den VDR übers Netzwerk ssh und sftp vlc als Mediaplayer z.B. um zu Testen ob der VDR richtig läuft.
sudo apt-get install mc openssh-server vlc browser-plugin-vlc
DVB Karten
Skystar S2
Diese DVB-S2 Karten laufen nicht "out of the box", die Kernelmodule und die Firmware für diese Karten sind in der Standard Xubuntu 14.04 Distribution nicht vorhanden. Mit einem kleinen Umweg und viieel Zeit lässt sich das aber nachinstallieren, auch wenn man kein Linux Experte ist.- Wir benötigen für die Technisat Skystar S2
Die Firmware dvb-fe-cx24120-1.20.58.2.fw
Näheres zur Firmware findest du auf
http://www.forum.free-x.de/wbb/index.php?page=Thread&postID=8126#post8126
Download Link:
dvb-fe-cx24120-1.20.58.2.fw
# Kopiere die Firmware nach: /lib/firmware
sudo cp *.fw /lib/firmware
sudo cp *.fw /lib/firmware
Ein Paket media-build-experimental-dkms.deb
Das holen wir uns aus dem PPA base-unstable aus der Distribution easyVDR 2.0 http://www.easy-vdr.de
Achtung!! Es werden alle "media" Kernelmodule neu gebaut und das dauert sehr lange bei mir waren das ca. 30 min auf einer J1900 Atom CPU ohne dass eine Aktivitätsanzeige vorhanden ist
Also viel Geduld !!
Also viel Geduld !!
sudo add-apt-repository ppa:easyvdr-team/base-unstable
sudo apt-get update
sudo apt-get install media-build-experimental-dkms
sudo apt-get update
sudo apt-get install media-build-experimental-dkms
VDR
Infos zum VDR und Download der aktuellen Version bei http://www.tvdr.de. Für Fragen dazu wurde das Forum http://www.vdr-portal.de eingerichtet.Zunächst installieren wir uns die benötigten Pakete um den VDR aus den aktuellen Quellen neu zu bauen. Da VDR auch in der Standard Xubuntu Distribution enthalten ist geht das mit wenigen Zeilen im Terminal:
sudo apt-get build-dep vdr
sudo apt-get build-dep vdr-plugin-streamdev-server
sudo apt-get install build-essential ncurses-dev
Dann Suchen wir uns einen Ordner in dem wir den Quelltext vom VDR entpacken können, das kann irgendwo in deinem HOME Ordner sein:
sudo apt-get build-dep vdr-plugin-streamdev-server
sudo apt-get install build-essential ncurses-dev
mkdir source
mkdir source/vdr
cd source/vdr
Wir laden uns den aktuellenVDR aus http://www.tvdr.de und entpacken alles in den oben gewählten Ordner ../source/vdr und erstellen einen Symlink "vdr" auf den entpakten Ordner
mkdir source/vdr
cd source/vdr
Wir laden die benötigten Plugins und entpacken sie nach ...source/vdr/vdr/PLUGINS/src und erstellen für jedes Plugin wieder einen Symlink "pluginname"
cd vdr
make
Wir erstellen den Video Ordner in den die Aufnahmen des VDR gespeichert werden (Hier im Ordner /daten, dem Mountpoint der großen Partition)
make
sudo mkdir /daten/video0
# symlink nach /srv/vdr/video
# symlink nach /srv/vdr/video
sudo adduser vdr --shell /bin/false --disabled-password
sudo adduser ichbins vdr
sudo adduser vdr video
sudo make install
sudo chown -R vdr:vdr /var/cache/vdr
sudo chown -R vdr:vdr /var/lib/vdr
- /usr/local/bin/ -> VDR
- /usr/local/lib/vdr/ -> Plugins
- /usr/local/share/locale/ -> Locale
- /var/lib/vdr/ -> Conf
- /var/cache/vdr/ -> epg.data