[HOW-TO] DVB-T/C/S-Streaming auf Androiden mit Tvheadend und einem Raspberry Pi

Status
Für weitere Antworten geschlossen.
Borgkubus

Borgkubus

Stammgast
147
--- Thread geschlossen - siehe letzter Post des Threaderstellers ---

In diesem Tutorial möchte ich zeigen, wie man zu Hause mit seinen Androiden in den Genuss von Digitalfernsehen nach DVB-Standard kommt. Es gibt hierfür natürlich bereits mehr oder weniger gute Fertiglösungen, wie z.B. die DVB-T-Tuner der Firmen Elgato oder LogiLink. Diese haben jedoch den Nachteil, dass sie entweder den USB-Port blockieren (und somit kein Aufladen während des Empfangs ermöglichen) oder sich die WLAN-Verbindung schnappen und darüber das Programm streamen, sodass kein normaler Internetzugang mehr besteht. Ich stelle hier nun eine Möglichkeit vor, die relativ kostengünstig ist, einen Lerneffekt mit sich bringt, erweiterbar ist und obendrein keines der beschriebenen Nachteile hat: DVB-Streaming mit einem Raspberry Pi und Tvheadend!

Weder ich noch android-hilfe.de übernehmen die Verantwortung für Schäden, die durch Befolgung dieser Anleitung entstehen. Schadensersatzansprüche können nicht geltend gemacht werden. Bitte führt diese Anleitung daher nur aus, wenn ihr wisst, was ihr tut, IHR SEID ALLEIN VERANTWORTLICH! ;)

1. Liste der verwendeten Hard- und Software

1.1 Hardware
Raspberry Pi Model B, 512MB RAM (Rev. 2.0)
ausreichend starkes Smartphone-Ladegerät (mind. 700mA) oder entsprechendes USB-Netzteil (optimal: 5V, 1.2A oder stärker)
Standard-Netzwerkkabel (CAT.5e)
Router mit freiem LAN-Port (im Bsp.: eine Fritz!Box)
kompatibler DVB-Stick (im Bsp.: Win TV Nova-T-Stick)
SD-Karte (4GB oder mehr, optimal: Class 10)
aktiver (!) USB-Hub
optional: Gehäuse für den Pi, es gibt auch Selbstbauanleitungen z.B. mit LEGO im Netz!
optional (bei DVB-T): aktive DVB-T-Antenne

1.2 Software und Apps
SD Formatter 4.0 for SD/SDHC/SDXC
Win32 Disk Imager
Das aktuellste Raspbian-Image
PuTTY (als SSH-Client für den PC) oder alternativ (und etwas weniger komfortabel) auch JuiceSSH (als SSH-Client-App für Android)

TVHGuide
MX Player

1.3 Anmerkungen
Zum Betrieb des Pi ist ein Netzteil nötig, das mindestens 700mA liefert. Für beide USB-Ports stehen höchstens weitere 300mA zur Verfügung, sodass maximal 1A Strom aus dem Netzteil gezogen wird. Um sicherzustellen, dass dieses den Strom von 1A immer stabil liefern kann, empfiehlt es sich, ein 1,2A-Netzteil zu verwenden; stärkere Netzteile sind unnötig. Wirklich relevant ist diese Feinheit hier allerdings nicht, da wir ohnehin einen aktiven USB-Hub nutzen, der den stromhungrigen DVB-Stick versorgen wird.
!!!ACHTUNG!!! Vor dem Kauf eines DVB-Sticks sollte man sich unbedingt vergewissern, dass dieser auch kompatibel ist! Eine erste Anlaufstelle wäre z.B. diese Seite hier: Hardware Device Information - Linuxtv. Ansonsten gilt in diesem Punkt unbedingt: Google ist dein Freund!

Voraussetzung für den Fernsehempfang und die hier beschriebene Einrichtung ist, dass die Androiden und der PC per (W)LAN mit dem Router (hier: eine Fritz!Box) verbunden sind, was ja zu Hause ohnehin der Fall sein sollte.

2. Grundeinrichtung des Pis
Zuerst wird die SD-Karte mit dem SD-Formatter formatiert und anschließend mittels Win32 Disk Imager mit dem aktuellsten Raspbian-Image bespielt. Die SD-Karte wird dann in den Pi gesteckt und über das Netzwerkkabel mit dem Router verbunden. Dann stecken wir den mit dem DVB-Stick bestückten USB-Hub in einen der beiden freien USB-Ports des Pi und schließen zum Schluss das Netzteil an, sodass der RPi von allein startet.

Da wir den Pi "headless", d.h. ohne angeschlossenen Monitor und Tastatur, betreiben, nutzen wir SSH zur Einrichtung, wofür wir das Programm PuTTY benutzen. Dort geben wir im Feld "Host Name (or IP address)" die IP unseres Pis ein. (Diese erfährt man am leichtesten über das Webinterface des Routers, bei einer Fritz!Box meist erreichbar über die Adresse 192.168.178.1, dann den Punkt Heimnetzwerk -> Netzwerk aufrufen und den Eintrag "raspberrypi" suchen.) Nach einem Druck auf ENTER werden die Login-Daten abgefragt: Der Nutzername lautet standardmäßig pi, das Passwort raspberry. Jeweils mit ENTER bestätigen und schon können wir richtig loslegen.

Als erstes müssen wir den Pi über das "Raspberry Pi Software Configuration Tool" einrichten. Dazu tippen wir folgenden Befehl ein:

Code:
sudo raspi-config

Siehe auch Grafik "raspi-config.png" im Anhang.

Unter Punkt (1) wird dort zunächst das Dateisystem der SD-Karte so erweitert, dass der gesamte Speicherplatz verfügbar wird.
In (3) wird eingestellt, dass auf die Kommandozeile gebootet wird (Console Text console, requiring login)
In den Unterpunkten bei (4) können Sprache, Zeitzone und Tastatur konfiguriert werden; bei Locale sollte über die Leertaste de_DE.UTF-8 und en_US.UTF-8 aktiviert werden, als Default im nächsten Fenster dann de_DE.UTF-8. Die Zeitzone stellen wir auf Berlin um.
Abschließend sollte bei (8) unter Memory Split noch der Speicher für die GPU auf 16MB reduziert werden, sodass mehr RAM zur Verfügung steht (die Desktopumgebung benötigen wir schließlich nicht).

Verlassen wir das Konfigurationsprogramm, wird der Pi neu gestartet. (Nach jedem Reboot müssen wir uns über PuTTY wieder neu im Pi anmelden: Rechtsklick auf die Fensterleiste -> Restart Session genügt.)

Im nächsten Schritt werden nacheinander folgende Befehle ausgeführt, um die installierten Pakete und die Firmware des RPi zu aktualisieren:

Code:
sudo apt-get update
sudo apt-get upgrade
sudo rpi-update
sudo shutdown -r now

Nun wird noch der SWAP auf 1024MB erweitert:

Code:
sudo su
echo "CONF_SWAPSIZE=1024" > /etc/dphys-swapfile
dphys-swapfile setup
dphys-swapfile swapon

Zu guter Letzt geben wir dem Pi eine feste Adresse im Netzwerk, unter der er künftig immer erreichbar sein soll. Im Beispiel wählen wir 192.168.178.5. Dazu nutzen wir einen Editor namens "nano". Eingabe:

Code:
sudo nano /etc/network/interfaces

Diese Datei ergänzen wir um folgenden Inhalt:

Code:
auto lo

iface lo inet loopback
iface eth0 inet static
address 192.168.178.5
netmask 255.255.255.0
broadcast 192.168.178.255
gateway 192.168.178.1
dns-nameservers 192.168.178.1

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

STRG+O -> ENTER -> STRG+X speichert die Änderungen und schließt nano. Wichtig: Über PuTTY ist der Pi nun fortan nur noch unter der genannten Adresse 192.168.178.5 erreichbar.

3. Installation der Treiber für den Stick
Aufgrund der Vielzahl an DVB-Sticks kann ich hier nur beispielhaft auf die Installation eingehen. Achtung: Dieser Teil ist u.U. der schwierigste, wenn ihr z.B. den richtigen Treiber erst selbst finden und kompilieren müsst. Wie wir gleich sehen, haben wir es hier im Beispiel einfach (zur Erinnerung: Es handelt sich um einen WinTV Nova-T-Stick der Firma Hauppauge). Wir geben ein:

Code:
lsusb

und erhalten hier u.a. folgendes:

Code:
Bus 001 Device 005: ID 2040:7070 Hauppauge Nova-T Stick 3

Aha, es wurde offenbar schon ein Stick erkannt. Schauen wir mal, ob der Treiber richtig installiert ist:

Code:
dmesg | grep dvb

Dies liefert uns eine Liste an Kernelmeldungen, die die Zeichenkette dvb enthalten. Hier steht u.a.:

Code:
[    6.433882] dvb-usb: found a 'Hauppauge Nova-T Stick' in warm state.
[    6.544836] dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
[    7.627951] dvb-usb: schedule remote query interval to 50 msecs.
[    7.639226] dvb-usb: Hauppauge Nova-T Stick successfully initialized and connected.
[    7.676948] usbcore: registered new interface driver dvb_usb_dib0700

Glück gehabt, der Stick ist in "warm state", somit betriebsbereit; der richtige Treiber dvb_usb_dib0700 (wohl recht weit verbreitet) ist bereits in unserem Kernel enthalten. Falls hier ein "cold state" steht, müsst ihr erst noch den richtigen Treiber installieren. An dieser Stelle würde eine Anleitung aber den Rahmen sprengen, ich verweise somit auf Google. Evtl. reicht es auch schon, es mal mit einem sudo apt-get install firmware-linux-nonfree inklusive Neustart zu versuchen.

4. Installation von Tvheadend
Folgendes geben wir in PuTTY ein, um den Streaming-Server Tvheadend auf dem Pi zu installieren (hier unter Raspbian Wheezy):

Code:
sudo su
echo "deb [plain]http://apt.tvheadend.org/stable[/plain] wheezy main" >> /etc/apt/sources.list
wget [plain]http://apt.tvheadend.org/stable/repo.gpg.key[/plain] -O - | apt-key add -
apt-get update
apt-get install tvheadend

Während der Installation werden wir aufgefordert, einen Admin-Benutzernamen und ein Passwort für Tvheadend einzugeben. Ich verwende exemplarisch borgkubus als Benutzername und abcdefgh als Passwort (ihr wählt natürlich etwas anderes). Nach einigen Minuten ist die Installation abgeschlossen und wir melden uns mit "exit" ab.

5. Konfiguration von Tvheadend
Am PC öffnen wir nun einen beliebigen Browser und geben in die Adresszeile http://192.168.178.5:9981/ ein. Nach Eingabe unserer Benutzerdaten borgkubus/abcdefgh erreichen wir das browserbasierte Konfigurationsprogramm von Tvheadend.
Über die Reiter Configuration -> General wählen wir zunächst die Standardsprache "German" aus und speichern das ganze über den kleinen Button "Save configuration".

Siehe auch Grafik "TVH_Sprache.png" im Anhang.

Wir bleiben beim Reiter Configuration und rufen nun "DVB Inputs" auf. Dort wählen wir links unseren DVB-Adapter (hier: DiBcom 7000PC) und erhalten dann eine richtige Konfigurationsübersicht. Unter Adapterkonfiguration setzen wir einen Haken bei "Enabled:" und speichern das ganze über "Save".

Siehe auch Grafik "TVH_DVB_Inputs.png" im Anhang.

Dann klicken wir links auf "Add DVB Network by location...". Ich wohne in Niedersachsen, mache also erst einen Doppelklick auf "Germany", wähle dann "de_Niedersachsen" und klicke auf den daraufhin erscheinenden Button "Add DVB Network". Es wird nun ein Sendersuchlauf im Hintergrund gestartet. Im Reiter "Multiplexes" könnt ihr zusehen, wie sich die Tabelle langsam mit den Netzwerknamen wie z.B. "ARD NDR" füllt, Sendernamen findet ihr dann unter dem Reiter "Services". Am Ende (wenn beim Reiter General bei "Muxes awaiting initial scan:" 0 steht) habt ihr ca. 28 Sender, klickt im Reiter Multiplexes auf "Save changes" und links im Reiter General auf "Map DVB services to channels..." und das wars. Startet jetzt euren Pi neu:

Code:
sudo shutdown -r now

6. Installation und Einrichtung von TVHGuide auf einem Androiden
Das Schwierigste ist geschafft, gleich können wir mit unseren Androiden fernsehen!

Zuerst aus dem Play Store die Apps "MX Player" und "TVHGuide" installieren, dann TVHGuide öffnen. Wir werden mit einer failed-to-connect-Meldung "begrüßt". Macht nichts, ab in die Einstellungen:

Siehe Grafik "TVHG_Settings.png" im Anhang.

Unter Hostname gebt ihr die Adresse des Pis ein: 192.168.178.5
Bei Port lasst ihr 9982 stehen.
Benutzername und Passwort sind hier bei uns borgkubus bzw. abcdefgh.
Den HTTP Port lasst ihr auf 9981.
Unter "Media container" wählt ihr "Pass-through" aus.
Der Haken bei "Prefer external player" sollte gesetzt sein.

Wenn ihr die Einstellungen verlasst, seht ihr die Kanalliste. Klickt auf einen Sender eurer Wahl und dann rechts oben auf Play, wählt den MX Player aus und schon könnt ihr TV auf eurem Androiden genießen! :smile:

Übrigens: Wenn ihr einen Stream (hier im Beispiel mal Kanal 10) auch am PC empfangen wollt, könnt ihr dazu folgende Netzwerkadresse aufrufen (z.B. mit VLC, der diese Streams dann auch aufnehmen kann):

http://borgkubus:abcdefgh@192.168.178.5:9981/stream/channelid/10

7. Credits
Raspberry Pi Foundation
dreamshader@Raspberry_Pi_Forum für die Infos zur Stromversorgung eines Pis.
Jan Karres für die Tipps zur SWAP-Einrichtung aus Abschnitt 2
meigrafd@Raspberry_Pi_Forum für die Befehle zur Installation von TVHeadend aus Abschnitt 4.
Google, Google und nochmals Google für die Informationsbeschaffung zum Thema Linux, RPi, DVB usw. ;)
 

Anhänge

  • raspi-config.png
    raspi-config.png
    8,1 KB · Aufrufe: 846
  • TVH_Sprache.png
    TVH_Sprache.png
    33 KB · Aufrufe: 980
  • TVH_DVB_Inputs.png
    TVH_DVB_Inputs.png
    45 KB · Aufrufe: 1.212
  • TVHG_Settings.png
    TVHG_Settings.png
    17,4 KB · Aufrufe: 912
Zuletzt bearbeitet von einem Moderator:
  • Danke
Reaktionen: TimTaler007, oggy, NIKEtuned und 4 andere
Reserviert
 
Optionale Ergänzung #1: Senderlogos mit Tvheadend

Damit Senderlogos angezeigt werden, z.B. in der App TVHGuide, müssen wir Tvheadend in der Konfigurations-Weboberfläche noch die Grafik-URLs mit den Logos mitteilen. Dies kann sowohl lokal als auch beispielsweise über einen Imagehoster geschehen. Eine gute Quelle für Senderlogos ist die Seite von Lyngsat-Logo: Lyngsat-Logos - Deutsche Sender.

Die URLs der Logo-Grafiken werden in der Webkonfiguration in der Spalte "Icon (full URL)" angegeben, die über "Configuration" -> "Channel / EPG" -> "Channels" erreichbar ist.

Einige Senderlogos habe ich hier mal bearbeitet und bei einem Hoster hochgeladen. Diese Adressen könnt ihr eintragen, vorausgesetzt, ihr empfangt auch den oder die entsprechenden Sender. Wie das ganze dann in der App TVHGuide aussieht, habe ich in einem Screenshot im Anhang dokumentiert (in den Einstellungen der App muss natürlich der Haken bei "Kanal-Logos" gesetzt sein).


Das Erste
http://img157.imagevenue.com/loc191/th_315884383_das_erste_122_191lo.jpg

3sat
http://img199.imagevenue.com/loc393/th_316199443_3sat_122_393lo.jpg

zdf_neo
http://img188.imagevenue.com/loc154/th_316459811_zdf_neo_122_154lo.jpg

ZDFinfo
http://img37.imagevenue.com/loc89/th_316718473_zdf_info_122_89lo.jpg

ZDF
http://img163.imagevenue.com/loc365/th_316932634_ZDF_122_365lo.jpg

Comedy Central
http://img184.imagevenue.com/loc931/th_317150646_comedy_central_122_931lo.jpg

VOX
http://img40.imagevenue.com/loc173/th_317361281_vox_122_173lo.jpg

tagesschau24
http://img41.imagevenue.com/loc98/th_317517440_tagesschau24_122_98lo.jpg

NDR
http://img147.imagevenue.com/loc387/th_317835540_NDR_122_387lo.jpg

Disney Channel
http://img169.imagevenue.com/loc1043/th_318257327_disney_channel_122_1043lo.jpg

RTL
http://img154.imagevenue.com/loc98/th_318485465_RTL_122_98lo.jpg

RTL2
http://img291.imagevenue.com/loc359/th_318841946_RTL2_122_359lo.jpg

Super RTL
http://img263.imagevenue.com/loc362/th_318667867_Super_RTL_122_362lo.jpg

Eurosport
http://img192.imagevenue.com/loc391/th_631901815_Eurosport_122_391lo.jpg

TELE 5
http://img212.imagevenue.com/loc842/th_319242255_tele5_122_842lo.jpg

WDR
http://img151.imagevenue.com/loc472/th_319420231_WDR_122_472lo.jpg

MDR
http://img12.imagevenue.com/loc128/th_319650780_MDR_122_128lo.jpg

hr-fernsehen
http://img152.imagevenue.com/loc599/th_319815832_hr_122_599lo.jpg

SAT.1
http://img191.imagevenue.com/loc195/th_319986676_SAT1_122_195lo.jpg

ProSieben
http://img40.imagevenue.com/loc354/th_320147775_Pro7_122_354lo.jpg

N24
http://img171.imagevenue.com/loc1001/th_320345114_N24_122_1001lo.jpg

kabel eins
http://img169.imagevenue.com/loc684/th_320510351_Kabel1_122_684lo.jpg

PHOENIX
http://img175.imagevenue.com/loc368/th_320687618_Phoenix_122_368lo.jpg

arte
http://img246.imagevenue.com/loc398/th_632085464_arte_122_398lo.jpg
 

Anhänge

  • TVHG_Senderlogos.png
    TVHG_Senderlogos.png
    44,5 KB · Aufrufe: 831
  • Danke
Reaktionen: LarsX
Gerne grabe ich diesen leicht angestaubten Thread aus, um mich (a) für deine URLs zu bedanken und um (b) diese Frage dazu zu stellen:

Kannst du bestätigen, dass die Senderlogos nur per http://, sprich per Webserver abgeholt werden können? Einfacher wäre es ja, die Logos in einem lokalen Ordner abzulegen und die "URL" per file:/// o.ä. einzutragen. Nur vermute ich, dass dies so gar nicht vorgesehen ist und daher nicht funktioniert.
 
Hallo LarsX,
freut mich, wenn dir das ganze gefällt! Zu deiner Frage:
Ich kann deine Aussage nicht im Allgemeinen bestätigen. Welches OS nutzt du denn in welcher Version? Unter Raspbian (Linux-Kernel 3.18.5) funktioniert folgendes noch tadellos:

Code:
file:///home/pi/Senderlogos/Logo_xyz.png

Und jetzt das Aber: Anfang der Woche kam mir ein ODROID-C1 ins Haus geflattert, der den Pi jetzt ersetzt hat. Auf diesem werkelt nun Arch Linux vor sich hin (Kernel 3.10.66); hier funktionierte diese file-Geschichte nicht (der http-Weg aber schon).
Gründe hierfür kanns viele geben:
1. Der ODROID-C1 ist noch sehr neu, entsprechend haben die Linux-Derivate noch Kinderkrankheiten.
2. Wegen des Arch Linux habe ich Tvheadend aus dem Quelltext der aktuellsten unstable-Version kompilieren müssen (die stable funktionierte nicht mit dem Kernel), diese Version hat sicher auch noch Bugs.
3. Tvheadend legt einen User namens "hts" an. Vielleicht hat der (warum auch immer) keine Zugriffsberechtigung aufs Heimverzeichnis. (Mein erster Lösungsversuch mittels chmod brachte allerdings auch nichts.)

Prinzipiell sollte das mit "file:///" aber schon funktionieren, denn ob die URL nun auf eine lokale Adresse verweist oder nicht, interessiert das Programm ja eigentlich nicht. Ich habe momentan wieder etwas mehr Zeit, eventuell nehme ich mich des Problems nochmal genauer an... ;)

Achja, noch eine Ergänzung, um den Android-Aspekt des ganzen nicht völlig untergehen zu lassen: Es gibt neben TVHGuide auch noch eine andere App, die langsam eine extrem gute Figur macht (oder gar besser): TVHClient.
 
Zuletzt bearbeitet:
Nun, ich nutze den TVHeadEnd-Server in der Version 3.4 auf einem Wheezy-Raspbian vom Dezember mit 3.18.5-er Kernel. Zum Einprogrammieren von Aufnahmen nutze ich die Android-App TVHClient.

Erst nachdem ich serverseitig für die Senderlogos auf http-URLs umgestiegen bin, wurden in der Client-App die Logos sichtbar. Der vorangegangene Versuch mit file:/// schlug leider fehl. Ich hatte die Logos als 'png' in einem /home/pi-Unterordner.

Möglicherweise hatte ja hts hier keine Leserechte, dem muss ich mal nachgehen. Im Moment nutze ich online im Internet liegende Logos, was, wie gesagt, ganz gut funktioniert.
 
Da dieses How-To mittlerweile sehr veraltet ist, wird dieser Thread in Absprache mit den Moderatoren auf meinen Wunsch hin nun in Kürze geschlossen. Da sich die Beschäftigung mit Einplatinencomputern bei mir zu einem größeren Hobby entwickelt hat, erschien mir vor geraumer Zeit die Idee sinnvoll, eine eigene kleine Webseite zu diesem Thema zu gestalten. Diese aktuell zu halten, ist auch schon eine große Herausforderung. ;)

Wen also dieses Thema weiterhin interessiert und wer eine aktuellere Anleitung haben möchte, der schaue in den entsprechenden Link in meiner Signatur (oder ins Startposting, wo dieser Link freundlicherweise auch noch eingefügt wird). :)
 
Status
Für weitere Antworten geschlossen.

Ähnliche Themen

phonewatch
Antworten
11
Aufrufe
1.209
Schlossfalle
S
omah
Antworten
0
Aufrufe
250
omah
omah
M
Antworten
1
Aufrufe
474
megamind
M
Zurück
Oben Unten