- Werbung -


Hier könnte Ihre Werbung stehen. Interessiert? Sprechen Sie uns an.


Neueste Kommentare

Raspberry Pi als Mediacenter und Fernseher

Druckversion

Ein Raspberry Pi als Mediacenter und zum Fernsehen? Zunächst war ich bei dieser Idee etwas skeptisch, denn der Kleine ist ja nicht gerade der Stärkste. Aber dank der leistungsfähigen GPU ist er doch prima geeignet um Videos abzuspielen. Und wenn es mit Videos klappt, dann sollte man doch damit auch fernsehen können? Also habe ich mich per Suchmaschine ein bisschen durchs Internet gewühlt und nach passenden Anleitungen gesucht. Dabei stellte sich heraus, dass nichts so richtig passte. Und letztendlich habe ich mir die Brocken aus diversen Tutorials, Foren und Blogbeiträgen zusammengesucht. Der folgende Artikel ist der Versuch alle die Puzzlestücke zu einer kompletten Anleitung zusammen zu fügen, um aus einem Raspberry Pi einen Fernseher nebst Multimedia-Center zu machen.

Folgende Hard- und Software benötigt man:

Hardware

  • 1 Raspberry Pi (Raspi)
  • 1 Gehäuse
  • 1 Satz Kühlkörper
  • 1 Vesa-Halterung (die ersten vier Teile habe ich zusammen mit dem Raspi bei Reichelt bestellt. Wichtig ist, dass die Vesa-Halterung zum Gehäuse passt)
  • 4 Mehrzweckschrauben 3,5x35mm mit Senkkopf (oder die "richtigen" Schrauben für die Vesa-Halterung Wink ) und 4 Distanzrollen 30 mm
  • 1 SD Karte (mind. 4 GB)
  • 1 SD Kartenleser
  • 1 DVB-T-Stick für den es Linux-Treiber gibt (ich habe den DVB-T-Stick S4 Technaxx genommen)
  • 1 USB-Hub mit eigener Stromversorgung die mindestens 2 A liefert (meine Wahl fiel auf den DIGITUS 7-Port Hub für 12,99 €)
  • 1 Netzwerkkabel
  • 1 kurzes HDMI-Kabel
  • 1 TFT-Monitor mit HDMI-Eingang (oder zumindest mit DVI-Eingang und einen passenden Adapter HDMI/DVI)
  • ggf. eine aktive DVB-T-Antenne (da der Empfang bei mir sehr schlecht ist, musste ich hier zur einer leistungsstärkeren greifen: One for All SV 9395 Full HD 360°)
  • 1 USB-Tastatur für die Ersteinrichtung und Bedienung (später kann man den Raspi aber auch via Smartphone/Tablet und Android-App steuern)

Software

Installation

Als erstes bereitet man die SD-Karte vor und installiert Raspbian darauf. Wie das geht, hat Martina in ihrem Artikel zum Bau einer NAS mit dem Raspi ausführlich beschrieben, daher spare ich mir die Wiederholung. Und bitte auf jeden Fall das dort beschriebene Update des Systems (das sind die Schritte zwischen "Zur Sache, Schätzchen!" und "Festplatte formatieren, partitionieren und ins System einhängen") durchführen.

Raspberry Pi auf VESA-Halterung montiertWährend die Software auf die Karte installiert wird, kann man schon mal die Hardware auspacken und zusammenstöpseln. Als erstes klebt man die 3 Kühlkörper auf - je einen für die SoC (der Chip enthält CPU, GPU und RAM), den Ethernet-Controller und den Spannungswandler. Das sollte dann ungefähr so aussehen wie auf diesem Foto. Anschließend kann man den Raspi in das Gehäuse einbauen. Das ist sehr passgenau, so dass der Raspi leicht hineinpasst aber trotzdem gut hält. Als nächstes schließt man die Geräte an: Der USB-Hub wird mit dem beiliegenden USB-Kabel mit dem Raspi verbunden, aber noch nicht an den Strom angeschlossen. Moment: Wozu eigentlich einen USB-Hub, wenn doch maximal zwei USB-Geräte angeschlossen werden sollen? Nun, der von mir verwendete DVB-T-Stick braucht zu viel Strom. Direkt am Raspberry angeschlossen funktionierte er nicht fehlerfrei. Erst der Hub sorgte für einen stabilen Betrieb. Und da er den Raspi auch gleich mit Strom versorgt, so dass man für ihn kein eigenes Netzteil benötigt, hat man kaum Mehraufwand.

Technaxx S4 DVB-T-Stick und USB-HubJetzt noch den DVB-T-Stick an den Hub anschließen, die Antenne einstöpseln und den HDMI-Ausgang mit dem Monitor verbinden. Anschließend das LAN-Kabel einstecken und mit dem Netzwerk verbinden. Sobald die SD-Karte fertig beschrieben ist, kann sie in den Slot das Raspi einsetzen und den USB-Hub mit dem Strom verbinden. Der Raspi sollte jetzt booten und auf dem Monitor erscheinen die Systemmeldungen von Raspbian.

Raspbian einrichten und aktualisieren

Jetzt erfolgt erst einmal die Grundkonfiguration von Raspbian. Da ein Monitor angeschlossen ist, kann man das ganz einfach und ohne den Umweg über eine SSH-Konsole erledigen. Das Konfigurationsprogramm startet beim ersten Booten automatisch. Wenn man später nochmal Änderungen vornehmen möchte, kann man es jederzeit mit dem Befehl

sudo raspi-config

wieder aufrufen. Es bietet folgende Einstellmöglichkeiten:

Übersicht der Raspi-Config-Optionen

In jedem Fall sollte man die Optionen 1 und 2 ausführen und bei 4 prüfen ob die Spracheinstellungen stimmen. Das Übertakten unter Punkt 7 empfiehlt sich für den Betrieb als Multimedia-Center. Ich hab hier die Einstellung "High" gewählt, damit läuft XBMC flüssiger und der Raspi läuft trotzdem stabil.

Abschließend noch ein Blick in die Advanced Options:

Advanced Options von Raspi-Config

Dort sollte man auf jedem Fall seinem Raspi einen Namen geben (Punkt A2), damit man ihn später im Netz sofort erkennt. Unter Memory Split (A3) kann man einstellen wie viel Speicherplatz die GPU erhalten soll. Hier genügen 64 MByte. Die SSH-Konsole sollte man aktivieren, damit man auch von einem anderen Computer auf den Raspi zugreifen kann (z.B. via Putty). Den Audio-Output (A6) kann man auf "Auto" einstellen. Der Raspi erkennt dann wenn an einem Ausgang ein Gerät angeschlossen ist und leitet den Sound dorthin. Abschließend sollte man noch ein Update des Tools (A7) durchführen. Damit ist die Konfiguration von Raspbian erst einmal abgeschlossen.


Kleiner Exkurs: Raspi übertakten

Die Möglichkeit, den Raspi mit mehr als 700 MHz zu betreiben, gibt es schon länger. Mittlerweile riskiert man auch nicht mehr seine Gewährleistung, wenn man das tut. Raspbian bringt von Haus aus eine Einstellmöglichkeit um den Raspi auf bis zu 1 GHz hochzutakten. Damit der Raspi keinen Schaden nimmt, läuft die CPU nicht permanent mit der erhöhten Frequenz, sondern wird nur bei Bedarf hochgetaktet. Sobald die Temperatur im CPU-Kern über 85 °C steigt wird die Taktfrequenz wieder reduziert. Die Entwickler des Raspberry Pi meinen, dass die Lebensdauer der CPU dadurch nicht mehr beeinträchtigt wird.

Tatsächlich bringt das Übertakten im späteren Betrieb einen spürbaren Performance-Gewinn, vor allem bei der Benutzung der XBMC-Oberfläche merkt man dies deutlich.

Wer sich während des laufenden Betriebes anschauen möchte, wie heiß der Raspi wird, braucht sich nur per SSH-Konsole auf seinem Raspi einzuloggen und das Kommando

vcgencmd measure_temp

eingeben und erhält sofort die Ausgabe der aktuellen Temperatur:

temp=51.9 'C

Wenn möglich sollte der Raspi im Bereich von ca. 50 Grad laufen, daher auch die eingesetzten Kühlkörper. Das Kommando

vcgencmd measure_clock arm

gibt übrigens die aktuelle Taktfrequenz aus. Hier z.B.

frequency(45)=700074000

Treiber für DVB-T-Stick installieren

Dieser Schritt ist nur nötig, wenn man eine DVB-T-Hardware benutzt, die noch nicht von Haus aus von Linux unterstützt wird. Bei dem von mir verwendeten Technax-Stick ist dies der Fall und ich musste mir die Treiber erst mal herunterladen. Zum Glück verrät Linux problemlos, was es für einen Treiber erwartet. Dazu auf der Kommandozeile einfach "lsusb" eingeben, die Ausgabe sieht dann ungefähr so aus:

Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 006: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 001 Device 007: ID 15a4:9016 Afatech Technologies, Inc. AF9015 DVB-T USB2.0 stick
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB
Bus 001 Device 005: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB

In Zeile vier wird der DVB-T-Stick angezeigt.

Der Befehl "dmesg" zeigt an, welche Firmware erwartet wird (hier in der dritten Zeile):

[ 9.380542] usb 1-1.3.1.3: dvb_usb_v2: found a 'Afatech AF9015 reference design' in cold state
[ 9.397692] usbcore: registered new interface driver dvb_usb_af9015
[ 9.413417] usb 1-1.3.1.3: dvb_usb_v2: downloading firmware from file 'dvb-usb-af9015.fw'
[ 9.517174] usb 1-1.3.1.3: dvb_usb_v2: found a 'Afatech AF9015 reference design' in warm state
[ 9.962944] usb 1-1.3.1.3: dvb_usb_v2: will pass the complete MPEG2 transport stream to the software demuxer
[ 9.999988] DVB: registering new adapter (Afatech AF9015 reference design)
[ 10.063100] i2c i2c-0: af9013: firmware version 4.95.0.0
[ 10.090805] usb 1-1.3.1.3: DVB: registering adapter 0 frontend 0 (Afatech AF9013)...
[ 10.185386] i2c i2c-0: tda18218: NXP TDA18218HN successfully identified
[ 10.221333] Registered IR keymap rc-empty
[ 10.246484] input: Afatech AF9015 reference design as /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3.1/1-1.3.1.3/rc/rc0/input3
[ 10.310240] rc0: Afatech AF9015 reference design as /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3.1/1-1.3.1.3/rc/rc0
[ 10.360062] usb 1-1.3.1.3: dvb_usb_v2: schedule remote query interval to 500 msecs
[ 10.393527] usb 1-1.3.1.3: dvb_usb_v2: 'Afatech AF9015 reference design' successfully initialized and connected

Passende Treiber findet man z.B. auf linuxtv.org. Hat man die passende Treiberdatei gefunden, lädt man diese herunter und speichert sie im Verzeichnis /lib/firmware. Nach einem Aus- und wieder Einstöpseln des DVB-T-Sticks (eventuell muss man auch den Raspi neu starten), sollte der Stick erkannt und initialisiert werden. "dmesg" liefert dann die obige Ausgabe (die entscheidenden Zeilen sind die vierte und letzte).  Damit ist der DVB-T-Stick empfangsbereit.

XBMC installieren 

Da ich bewusst auf die fertig XBMC-Distribution Raspbmc verzichtet habe, muss man das Paket manuell installieren. Das ist nicht weiter schwierig, aber man muss wieder auf die Kommandozeile von Raspbian

Dort gibt man

sudo nano /etc/apt/sources.list.d/mene.list

ein und fügt dort den folgenden Text ein:

deb http://archive.mene.za.net/raspbian wheezy contrib

Den Nano-Editor immer mit Strg-X beenden und die Änderungen abspeichern.

Damit Raspbian von dort Pakete beziehen kann, muss man noch den Schlüsselserver hinzufügen

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key 5243CDED

Als nächstes führt man ein Update der Pakete durch

sudo apt-get update

und installiert dann XBMC

sudo apt-get install xbmc

Jetzt noch den Autostart einrichten (schließlich soll später beim Einschalten des Raspberry alles von alleine hochfahren)

sudo nano /etc/default/xbmc

Dort die Zeile "ENABLED=" suchen und wie folgt abändern:

ENABLED=1

Nach einem Neustart des Raspi sollte XBMC jetzt automatisch starten und einen mit dem Startbildschirm begrüßen.

Als nächstes müssen noch einige Einstellungen in XBMC vorgenommen werden:

  1. Sprache auf Deutsch einstellen
  2. Sprache und Region auf Deutsch umstellen (System >> Einstellungen >> Darstellung >> Sprache & Region). Trotz der Auswahl "Deutsch" in Schritt 1 ist als Region "Belgien" eingestellt - ein kleiner Bug, den man hier beheben kann.
  3. Falls das Bild über die Grenzen des Monitors hinausgeht, kann man dies unter "System >> Einstellungen >> Darstellung >> Skin" beheben, indem man unter "Skin-Zoom" einen negativen Wert einträgt. Hier muss man etwas ausprobieren, welcher Wert passt, 2 bis 3 % sollten genügen.
  4. Als nächstes kann eine (oder mehrere) externe Quellen für die Videodateien eingebunden werden. Wer z.B. seine Videos auf einer Raspi-NAS (gilt natürlich auch für jede andere NAS Wink) liegen hat, macht folgendes:

    Im Hauptmenu auf “Videos >> Dateien” gehen und im folgenden Fenster auf “Videos hinzufügen… “ klicken.
    Dann die Netzwerkfreigabe durch einen Klick auf “Suchen” suchen. Auf der rechten Bildschirmseite öffnet sich eine Auswahlliste. Hier ganz nach unten scrollen und die Option “Netzwerkfreigabe hinzufügen…” auswählen.
    Im folgenden Konfigurationsdialog für Netzwerkfreigabe die Verbindungsdaten zu der Netzwerkfreigabe auf dem NAS eingeben
    - Protokoll = Standardmäßig “Windows-Netzwerk (SMB)", so belassen
    - Server = die IP-Adresse des Computers mit der Netzwerkfreigabe
    - Freigabe  = der Name der Freigabe
    - Benutzername = der Name zur Anmeldung an die Netzwerkfreigabe
    - Passwort = das Passwort zum Benutzernamen
    Abschließend auf “OK” klicken und XBMC speichert die Freigabe dauerhaft ab.
    Natürlich kann man auch eine externe USB-Festplatte direkt an den Raspi anschließen. Die notwendigen Schritte findet ihr in dem oben bereits erwähnten Artikel von Martina in dem Abschnitt "Festplatte formatieren, partitionieren und ins System einhängen"

MPEG-2 Lizenzkey

Der Raspberry benötigt aus rechtlichen Gründen noch jeweils einen Lizenzschlüssel, um MPEG-2- und VC-1-Videos mittels seiner Hardware zu dekodieren. Diese Lizenzschlüssel kann man im Raspberry Pi Store direkt online erwerben. Der Preis beträgt 2,40 GBP (ca. 3 €) für den MPEG-2-Key und 1,20 GBP (ca. 1,50 €) für den VC-1-Key. Bei der Bestellung muss man die Serien-Nummer seines Raspberrys angeben, da die Lizenz an das Gerät gekoppelt ist. Achtung: Die Seriennummer ist nicht die Nummer, die unten auf der Platine aufgedruckt ist! Man muss sie per Kommandozeile abfragen. Dazu tippt man einfach den Befehl "cat /proc/cpuinfo" und erhält eine Ausgabe wie diese:

pi@raspi:~$ cat /proc/cpuinfo
processor       : 0
model name      : ARMv6-compatible processor rev 7 (v6l)
Features        : swp half thumb fastmult vfp edsp java tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xb76
CPU revision    : 7
Hardware        : BCM2708
Revision        : 000e
Serial          : 00000000xxxxxxxx

Der Wert bei "Serial" ist die Seriennummer, die man bei der Bestellung im Online-Formular eintragen muss. Der Lizenz-Schlüssel wird in der Regel innerhalb von wenigen Stunden per E-Mail geliefert.

TVHeadend installieren & konfigurieren

Jetzt braucht man noch einen Server, der die Videos, bzw. das TV-Programm ausliefert. Meine Wahl fiel auf TVHeadend.

TVHeadend ist ein TV-Streaming-Server für Linux, der DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, IPTV, und analoges Video (V4L) als Quellen unterstützt. Außerdem kann er als Videorekorder-Backend für XBMC verwendet werden.

Als erstes installieren wir das TVHeadend-Paket:

Zunächst das TVHeadend-Repository hinzufügen:

echo "deb http://apt.tvheadend.org/stable wheezy main" >> /etc/apt/sources.list

Dann den Repository-Key hinzufügen damit apt-get funktioniert:

wget http://apt.tvheadend.org/stable/repo.gpg.key -O - | sudo apt-key add -

Jetzt noch die Paketinformationen aktualisieren und TVHeadend installieren:

apt-get update

apt-get install tvheadend

Jetzt kann man prüfen ob TVHeadend läuft, indem man es von einem anderen Rechner via Browser ansurft. Dazu die IP-Adresse des Raspberry Pi auf dem Port 9981 eingeben.

http://meine.raspberrypi.ip:9981

Die Status-Seite sollte dann ungefähr so aussehen:

TVHeadend Statusseite
Wie man sieht wird unten der installierte DVB-T-Stick angezeigt. Im nächsten Schritt müssen die Sendergruppen gescannt werden. Dazu wählt man "Configuration >> DVB Inputs >> TV-Adapters" und dann in der Dropdown-Liste den DVB-T-Stick. Jetzt auf "Add DVB Network by Location" klicken und dann links neben "Germany" auf die Schaltfläche klicken, das Bundesland auswählen und auf "Add DVB Network" klicken. Jetzt beginnt die Sendersuche. Das dauert eine Weile und ist abgeschlossen, wenn die Zahl "Muxes awaiting initial scan" auf Null runtergezählt hat. Abschließend noch auf "Map DVB services to channels" klicken und dann geht es zurück zu XBMC. Unter dem Tab "Multiplexes" bekommt man übrigens alle gefundenen Sendergruppen und unter Services die einzelnen Sender aufgelistet:

Senderliste in TVHeadend
Sendergruppen in TVHeadend

Senderliste in TVHeadend
Liste der von TVHeadend bereitgestellten Sender

XBMC mit TVHeadend verbinden

Der TVHeadend-Server streamt nun die verfügbaren Sender innerhalb unseres lokalen Netzwerkes und man kann die Programme auf jedem Gerät anschauen, das über einen passenden Client verfügt. Wir wollen aber, dass unser Raspberry die Fernsehprogramme auch selber auf dem angeschlossenen Bildschirm ausgibt. Dazu muss das zuvor installierte XBMC noch mit dem TVHeadend-Server verbunden werden. Dazu auf "Einstellungen >> Addons >> Deaktivierte Addons" gehen und den "TVHeadend HTSP Client" aktivieren. Anschließend muss er noch konfiguriert werden. Zumindest die IP-Adresse (hier die des Raspi) sollte man eintragen und ggf. noch Benutzernamen und Passwort, falls man eines bei der Installation von TVHeadend gesetzt hat.

Der Lohn der Mühe

Wenn alles stimmt, kann man jetzt unter "Live-TV" auf "TV-Kanäle" gehen und einen der verfügbaren Sender auswählen. Und so sieht es dann auf dem Bildschirm aus, wenn man in XBMC einen Fernsehsender ausgewählt hat.

Live-TV auf dem Raspberry Pi mit xbmc und TVHeadend

Zusätzlich zum Fernsehbild sind hier noch Infos zur laufenden Sendung, die Uhrzeit, das aktuelle Wetter und die Senderliste eingeblendet. Das will man natürlich nicht dauerhaft eingeblendet haben und mit einem Tastendruck geht es in den Vollbild-Modus.

Und was kann man noch alles mit XBMC machen? Nun, natürlich kann man auch aufgenommene Videos oder DVDs abspielen, aber auch das laufende Fernsehprogramm aufnehmen (hierfür braucht man dann auf jeden Fall eine externe Festplatte oder eine NAS). Aber auch Musikdateien oder Fotos kann man mit diesem kleinen Mediacenter einbinden. Dazu gibt es noch jede Menge Add-Ons, um z.B. das lokale Wetter anzeigen zu lassen oder Quellen aus dem Internet einzubinden. Das alles zu beschreiben, würde aber den Rahmen dieses, ohnehin nicht gerade kurzen, Artikels sprengen. Wink

Links

Homepage Raspberry Pi: http://www.raspberrypi.org/
TV Headend installieren: http://kodi.wiki/view/Tvheadend_PVR
Alles rund um Video für Linux: http://www.linuxtv.org/
XBMC-Homepage: http://kodi.tv/
 

Die neue c't

berichtet auch über solche Projekte!

Raspberry als Mediacenter

Vielen Dank für diesen außerordentlich detaillierten Beitrag, den ich gegenwärtig mit einem DVB-T Stick von ITE (für Schmallband DVB-T) umsetze.

Eine Kleinigkeit hätte ich noch anzumerken: Dass bei der Sprachauswahl Deutsch zuerst Belgien angezeigt wird, ist KEIN Bug! B kommt vor D, wie in Deutschland, und Deutsch ist auch in Belgien einer der Amtssprachen. Die Ostbelgier wären verärgert, würde man sie aus der deutschspachigen Gemeinschaft, und sei es auch nur per Software, ausschließen...

Einen herzlichen Gruß aus Berlin (nicht Belgien),

Jörg, DF3EI

Okay, dann lassen wir das mal

Okay, dann lassen wir das mal als Feature durchgehen. Schließlich wollen wir es uns ja nicht mit den Ostbelgiern verscherzen. Wink