Borgkubus
Stamm-User
- 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.
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:
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:
Nun wird noch der SWAP auf 1024MB erweitert:
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:
Diese Datei ergänzen wir um folgenden Inhalt:
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.
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:
und erhalten hier u.a. folgendes:
Aha, es wurde offenbar schon ein Stick erkannt. Schauen wir mal, ob der Treiber richtig installiert ist:
Dies liefert uns eine Liste an Kernelmeldungen, die die Zeichenkette dvb enthalten. Hier steht u.a.:
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.
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):
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.
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:
Ü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!
Ü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
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!
Ü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
Zuletzt bearbeitet von einem Moderator: