Viele TV Receiver laufen mit Linux und relativ schmalem Prozessor, warum also sollte sich der Raspberry Pi nicht auch als digitaler Videorekorder oder als TV Streaming Server eigenen? Mit der richtigen Hardware kann auch ein RasPi das Heimnetzwerk mit Streaming, TV Aufzeichnungen und Timeshift Wiedergabe versorgen. In diesem Artikel zeige ich euch wie wir recht preisgünstig, die richtige Hardware vorausgesetzt, aus dem RasberryPi mit Hilfe von Tvheadend einen kleinen Server für Streaming, Aufzeichnungen und zeitversetztem Fernsehen basteln. Wir verwenden als Basis das Raspbian Betriebssystem, als Alternative kann auch OpenElec verwendet werden, hier spart man sich die nicht sehr aufwändige Installation von TvHeadend.
Neuer Beiträge zum Thema
- Raspberry Pi 2 – Live TV mit TVHeadend und OpenELEC
- Die Besten Addons für OpenELEC
- Raspberry Pi 2 unter OpenELEC übertakten
Inhaltsverzeichnis
Was ist TvHeadend?
Tvheadend ist ein TV-Streaming-Server für Linux, welcher DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, IPTV und Analog-Video unterstützt. Die Konfiguration erfolgt über ein Webinterface, welches sich im Browser aufrufen lässt. Die Wiedergabe erfolgt dabei z.B. über XBMC. Es ist möglich, Tvheadend so zu konfigurieren, dass man mit jedem PC im Netzwerk das TV-Signal des TvHeadend Servers empfangen kann. Zum Beispiel kann man den RasPi mit TvHeadend perfekt als Backend für andere RasPis oder Media Center Systeme nutzen, diese holen sich dann einfach das Live Fernsehsignal oder die Aufnahmen vom Backend mit TvHeadend ab. Als FrontEnd zur Wiedergabe sind zum Beispiel Tablets, Computer, Smartphones, Linux Receiver oder ein weiterer RasPi mit XBMC denkbar.
Benötigte Hardware
Bitte achtet unbedingt darauf das ein guter und funktionierender aktiver USB-Hub und ein gutes Netzteil verwendet wird.
- Raspberry Pi Modell B (Modell B+ wird nicht benötigt)
- Samsung Netzteil mit 2A oder Apple USB Power Adapter
- USB DVB-T / DVB-C oder S2 Stick, die Sundtek sind sehr beliebt (Liste mit unterstützten Geräten)
- Aktiver USB HUB, die USB Ports des RasPi liefern nicht genügend Strom für viele Stick
- Gehäuse für den RaspberryPi
- USB-Festplatte (optional für Aufnahmen und Timeshift)
Benötigte Software
Als Betriebssystem verwenden wir Raspbian, die Streaming und Aufzeichnungsfunktion stellt uns die TvHeadend Software bereit.
- Raspbian Debian Wheezy als Betriebssystem
- TvHeadend als Streaming Server
- XBMC Media Center (Optional als Streaming Client)
Hardware zusammenstöpseln
Verbindet den USB-Hub mit dem Strom, schließt dann die Antenne (DVB-C / DVB-S2 / DVB-T) an euren USB-Stick an und steck diese in den USB-Hub. Danach kann der RasPi mit dem Hub und dann mit dem Strom verbunden werden. Es gibt auch USB-HUBs die den RasPi mit Strom versorgen können, hier gilt das gleiche Vorgehen (auf die Richtige Verkabelung achten).
Raspbian vorbereiten
Es ist natürlich wichtig das eurer RasPi aktuelle Software und Firmware hat um unnötige Probleme zu vermeiden, bevor wir starten sollte daher Raspbian aktualisiert werden. Verbindet euch mit SSH auf euren RasPi und aktualisiert das System wie folgt:
1 2 3 4 |
sudo apt-get update sudo apt-get upgrade sudo rpi-update sudo reboot |
Externen Speicher einrichten
Falls ihr gerne die Timeshift und Aufnahmefunktion mit eurem RasPi benutzen wollt benötigt ihr einen externen Speicher. Das kann zum Beispiel ein großer USB-Stick oder eine USB-Festplatte sein.
Damit Medien mit speziellen Dateisystemen eingebunden werden können müssen evtl. Treiber hierfür installiert werden.
1 |
sudo apt-get -y install ntfs-3g hfsutils hfsprogs |
Wir legen nun einen neuen Ordner im Verzeichnis „/mnt“ an. In dieses wird später das USB-Gerät gemountet. Ich nenne den Ordner „usbstorage“. Es dürfen keine Sonder und/oder Leerzeichen enthalten sein. Das Verzeichnis kann aber auch „usbdisk“ oder ähnlich benannt werden.
1 |
sudo mkdir /mnt/usbstorage |
Bevor wir den Stick oder die Platte anschließen, schalten wir die Ausgabe des Systemlogs mit dem folgendem Kommando ein („-f“ bewirkt dass alle weiteren Meldungen ausgegeben werden, ohne tail zu beenden):
1 |
tail –f /var/log/messages |
Wenn wir nun ein USB-Medium anschließen werden passende Log Einträge dazu angezeigt z.B.:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Jun 18 15:02:29 pi kernel: [ 3.015471] usb 1-1: New USB device found, idVendor=0c0b, idProduct=b136 Jun 28 16:11:51 pi kernel: [ 3.015476] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 Jun 28 16:11:51 pi kernel: [ 3.015480] usb 1-1: Product: HDT725032VLAT80 Jun 28 16:11:51 pi kernel: [ 3.015483] usb 1-1: Manufacturer: TrekStor Jun 28 16:11:51 pi kernel: [ 3.015486] usb 1-1: SerialNumber: 00000000000F0FCDX Jun 28 16:11:51 pi kernel: [ 3.022622] Initializing USB Mass Storage driver... Jun 28 16:11:51 pi kernel: [ 3.022876] scsi3 : usb-storage 1-1:1.0 Jun 28 16:11:51 pi kernel: [ 3.023077] usbcore: registered new interface driver usb-storage Jun 28 16:11:51 pi kernel: [ 3.023081] USB Mass Storage support registered. Jun 28 16:11:51 pi kernel: [ 4.024345] scsi 3:0:0:0: Direct-Access TStore HDT780 1.05 PQ: 0 ANSI: 0 Jun 28 16:11:51 pi kernel: [ 4.025337] scsi 3:0:0:0: Attached scsi generic sg1 type 0 Jun 28 16:11:51 pi kernel: [ 4.034324] sd 3:0:0:0: [sda] 625142448 512-byte logical blocks Jun 28 16:11:51 pi kernel: [ 4.037312] sd 3:0:0:0: [sda] Write Protect is off Jun 28 16:11:51 pi kernel: [ 4.074354] sda: sda1 |
Die letzte Zeile in meinem Beispiel „sda: sda1“ zeigt welchem Block Gerät (sda) und welcher Partition (sda1) das angesteckte USB-Medium zugeordnet wurde. Diese Angabe benötigen wir für das Einhängen des neuen Gerätes. Mit [Strg]+[C] kann tail beendet werden.
Nachdem wir nun den Namen des USB-Geräts kennen können wir den dieses mit folgendem Kommando einbinden. Sda1 durch den Namen des USB-Geräts und /mnt/usbstorage/ durch euren erstellten Ordner (falls ihr einen anderen Namen verwendet habt) ersetzten.
1 |
sudo mount /dev/sda1 /mnt/usbstorage |
Treiber für den TV Stick installieren
Abhängig davon welches Gerät ihr von den DVB-Empfang verwendet müssen unter Umständen noch Treiber am RasPi installiert werden. Im Falle der Sundtek Empfänger, welche ich in diesem Beispiel verwende, ist das so. Die Treiber für Linux und Infos zur Installation gibt es auf den Webseiten der Hersteller, oftmals hilft es auch google als Informationsquelle für sein spezifisches Gerät zu verwenden.
Teriberinstallation für die Sundtek DVB Sticks:
1 2 3 4 |
cd wget http://www.sundtek.de/media/sundtek_netinst.sh chmod 755 sundtek_netinst.sh ./sundtek_netinst.sh |
Nach Abschluss der Installation kann über folgenden Befehl geprüft werden ob der Stick vom RasPi erkannt wurde. Die Ausgabe sollte euren Stick anzeigen.
1 |
/opt/bin/mediaclient -e |
Wir eure Stick erkannt sollten wir, falls das Gerät mehrere DVB Standards beherrscht, noch einstellen welchen wir verwenden möchten. In meinem Fall kann der Sundtek Stick DVB-T (Terrestrisch) und DVB-C (Kabel). Für DVB-C verwendet „DVBT“ und für DVB-C „DVBC“.
1 |
/opt/bin/mediaclient --setdtvmode=DVBT |
Treiber für meinen Haupauge WinTV MiniUSB
Um diesen Stick zu betreiben wird lediglich die Firmware benötigt.
1 2 3 4 |
wget http://www.hauppauge.de/files/drivers/WinTV-MiniStick_4_3_5_30297_WHQL.zip sudo apt-get install unzip unzip WinTV-MiniStick_4_3_5_30297_WHQL.zip sudo mv driver17/hcw17dvb.1b0 /lib/firmware/sms1xxx-hcw-55xxx-dvbt-02.fw |
TvHeadend installieren
Mit Hilfe von TvHeadend machen wir unseren Rasberry Pi jetzt zum Videorekorder und Streaming Server. Als erstes fügen wir das Repository des TvHeadend Projekts zur Datei /etc/apt/sources.list hinzu, von diesem holen wir uns die notwendigen Installationspakete ab.
1 |
sudo nano /etc/apt/sources.list |
Wir fügen ans Ende der Datei das Repository über folgende zusätzliche Zeile hinzu, dazu verwenden wir den Editor nano
1 |
deb http://apt.tvheadend.org/stable wheezy main |
Gespeichert wird mit STRG-X, Enter und Y.
Jetzt aktualisieren wir noch unsere Paket-Liste via update und installieren uns den GPG Key um der Quelle zu vertrauen
1 2 |
curl http://apt.tvheadend.org/repo.gpg.key | sudo apt-key add - sudo apt-get update |
Dann installieren wir direkt das TvHeadend Paket aus dem Repository. Apt installiert uns auch direkt alle abhängigen Pakete (80MB gesamt) sodass der Installationsvorgang einige Minuten dauert
1 |
sudo apt-get install tvheadend |
Das Setup fragt uns direkt nach einem Benutzer der für die TvHeadend Administration via Webinterface eingerichtet werden soll, ich habe mich für admin entschieden mit einem sicheren Passwort entschieden.
Das Setup präsentiert uns dann noch die Information wie wir die Admin-Seite nach der Installation erreichen können. Bei mir ist das http://localhost:9981 falls ihr nach der Installation die Admin-Seite von einem anderen Rechner aufrufen möchtet könnt ihr localhost durch die IP-Adresse eures Raspberry Pi ersetzen. Also zum Beispiel
Da ich meinen RasPi „Headless“ also ohne Tastatur und Monitor betreibe habe ich die Seite von meinem Windows Rechner aufgerufen. Tippt hier in eurem Browser wobei ihr die IP-Adresse durch die eures Raspberry Pi ersetzen müsst.
Das war auch schon die Installation, TvHeadend startet nun nach jedem Neustart eures RasPi automatisch.
TvHeadend einrichten
Nachdem die Installation abgeschlossen ist kann TvHeadend über einen Browser von einem beliebigen Rechner, der sich natürlich im selben Netz befinden muss, eingerichtet werden. Wer eine Fritzbox hat kann die Weboberfläche ganz einfach über http://raspberrypi:9981 erreichen. Klappt das nicht verwendet ihr die IP-Adresse eures Raspberry Pi http://<Eure-Ip-Adresse>:9981 (anzeige via „ifconfig“). Die Anmeldung erfolgt mit dem bei der Installation angelegten Benutzer.
Um die verfügbaren Sender zu suchen, klickt man auf den Reiter „Configuration„, „DVB Inputs„ und „TV Adapters„.
Im linken Dropdown-Menü über „General„ kann nun euer DVB-T Stick ausgewählt werden. Unter „Adapter configuration„ macht man einen Haken bei „Enabled„, „Autodetect muxes„ und klickt auf „Save„.
Danach habe ich noch das passende DVB-Netz über „Add DVB Network by location“ hinzugefügt und über „Save“ gespeichert. Jetzt tauchen unter „Multiplexes“ neue Einträge auf.
Nun beginnt der Sendersuchlauf. Auf der rechten Seite kann man nun den Fortschritt der Sendersuche (Muxes awaiting initial scan) verfolgen. Eure Antenne sollte natürlich angeschlossen sein und ein gutes Signal haben.
Achtung! Das Scannen dauert unter Umständen mehrere Minuten, last dem System die Zeit den Suchlauf zu beenden.
Sollte etwas nicht klappen könnt ihr rechts unten den System Log anzeigen lassen und überprüfen wo der Fehler liegt.
Nach einer weile tauchen dann unter Services die Kanäle auf und ihr könnt diese über MAP in eure Kanal Liste übertragen.
TvHeadend Clients
Wer bereits einen TvHeadend Server aufgesetzt hat möchte sicherlich nun auch verschiedene Endgeräte mit dem TV-Stream versorgen. Als Protokolle für die Client Software haben wir die Wahl zwischen HTTP- und HTSP-Protokoll Streams.
Wer die Möglichkeit hat ein Client Software mit Home Tv Streaming Protocol Unterstützung zu verwenden sollte sich für diese Variante entscheiden, neben dem Live Stream überträgt das Protokoll unter anderem auch EPG Informationen.
Der wohl am häufigsten verwendete CLient ist der TvHeadend Client für die Media Center Distribution XBMC / Kodi. Die Einrichtung ist recht simpel
- Über die Settings-> Add-ons -> Enabled add-ons -> PVR Clients un dort das Tvheadend add-on auswählen
- Über „Configure„die Einrichtung starten
- Dort tragen wir die IP-Adresse unseres RasPi mit der TvHeadend Installation ein, ist der Server auf dem selben Pi kann 127.0.0.1 verwendet werden
Weitere Clients gibts auf der tvheadend Seite.
In den nächsten Tagen werde ich das Tutorial nochmal überarbeiten und erweitern, bis dahin viel Spaß!