Aus Linux-Magazin 01/2013

Linux als Home Entertainment Server mit UPnP und DLNA

© Bonita Cheshier, 123RF.com

Videos, Audiostreams, Fotos … – Multimedia gewinnt erst richtig an Charme, wenn sich die Medieninhalte dank Protokollen wie UPnP und DLNA konfigurationsfrei zwischen TV-Geräten, Spielekonsolen, PCs und Smartphones verteilen. Linux als zentraler Mediaserver ist dabei ein gern gesehener Gast.

Teure Komplettlösungen wie Microsofts Media Center oder das geschlossene Apple Airplay halten derzeit Einzug in viele Wohnzimmer. Die verbreitetste offene Basis fürs Streaming, die Geräte fast aller Hersteller unterstützt, ist DLNA (Digital Living Network Alliance, [1]), ein von einem Industrie-Konsortium verabschiedeter Standard. Dieser Artikel zeigt, wie DLNA funktioniert, was für Protokolle darunterliegen, welche Gerätetypen es gibt, und wie sich ein Linux-PC, ein Android-Smartphone und eine Playstation am Fernseher einspannen lassen.

DLNA und UPnP

DLNA ermöglicht unter anderem das Streamen von Medieninhalten wie Musik, Filmen und Fotos. Es sieht vor, dass sich Client und Server ohne Konfiguration finden und die Inhalte abspielen. Moderne Fernsehgeräte, Bluray-Player oder Spielkonsolen haben DLNA-Clients in der Firmware dabei, Android Telefone einen DLNA-Player, manche sogar einen DLNA-Server. Sollten sie nicht in der Standardinstallation enthalten sein, lädt sich der Smartphone-Besitzer nachträglich eine App aus Google Play.

Damit der gewünschte “alles funktioniert einfach so”-Effekt eintritt und der Benutzer im Wohnzimmer den lokalen Server nicht über die Tasten seiner Fernbedienung eintragen muss, verwendet DLNA das Universal Plug and Play Protokoll (UPnP, [2]), das über Multicast-Pakete Dienste und Server entdeckt. Ein UPnP-Client sendet ein UDP-Paket an die Multicast Adresse 239.255.255.250, Port 1900. Diese Informationshappen sind Simple Service Discovery Protocol Pakete (SSDP, spezifiziert ebenfalls im Rahmen des UPnP-Standards, [3]).

Die erste Anfrage dient dazu, Server zu finden, die Dienste im LAN per UPnP anbieten. Dazu sendet der Client ein Paket mit der Methode »m-search *« an die Multicast-Adresse. Das Paket enthält den SSDP-Aufruf »discover« und als Parameter der Suchanfrage (“Was wird gesucht?”) findet sich in dem Paket folgender String:

urn:schemas-upnp-org:device:MediaServer:1

Ein Client, der per UPnP einen Internetzugang sucht, wird hier »WANIPConnection« statt »MediaServer« einsetzen, Android-Handys, die Filme oder Video senden wollen, fragen nach Geräten vom Typ »MediaRenderer« . Smartphones oder Digitalkameras mit einem DLNA-Print-Client suchen »Printer« . DLNA-fähige Drucker sind direkt mit dem Netz verbunden und antworten selbst auf die Anfragen, ein Server ist nicht notwendig.

Die Webseite des DLNA-Standards listet unter [4] alle Geräte, die offizielle DLNA-Zertifizierungen erhalten haben. Die Spanne reicht vom Billig- oder Highend-TV über NAS-Geräte, Router und Fotodrucker bis zu Smartphones (Abbildung 1 bis 4).

Abbildung 1: DLNA-taugliche Fernseher gibt es schon ab 300 Euro. Das Bild zeigt aber ein Gerät aus Panasonics bis zu 3000 Euro teurer VT50-Serie. Die 65-Zoll-TVs verfügen immerhin über Quad-Core-CPUs, Triple Tuner und WLAN.

Abbildung 1: DLNA-taugliche Fernseher gibt es schon ab 300 Euro. Das Bild zeigt aber ein Gerät aus Panasonics bis zu 3000 Euro teurer VT50-Serie. Die 65-Zoll-TVs verfügen immerhin über Quad-Core-CPUs, Triple Tuner und WLAN.

Abbildung 2: HPs Photosmart-Druckerserie 7510 hat die DLNA im August 2012 ganz offiziell zertifiziert. Die Drucker-Scanner-Fax-Kombination für 150 Euro verspricht Auflösungen bis 9600 dpi beim Druck.

Abbildung 2: HPs Photosmart-Druckerserie 7510 hat die DLNA im August 2012 ganz offiziell zertifiziert. Die Drucker-Scanner-Fax-Kombination für 150 Euro verspricht Auflösungen bis 9600 dpi beim Druck.

Abbildung 3: Synologys Diskstation 713 kann – wie viele andere kleine NAS-Server – auch als DLNA-Server Medien von den Festplatten streamen. Kostenpunkt: wenige hundert Euro, je nach HD-Ausstattung (bis zu 8 TByte auf zwei Platten).

Abbildung 3: Synologys Diskstation 713 kann – wie viele andere kleine NAS-Server – auch als DLNA-Server Medien von den Festplatten streamen. Kostenpunkt: wenige hundert Euro, je nach HD-Ausstattung (bis zu 8 TByte auf zwei Platten).

Abbildung 4: Das Outdoor-Handy Xperia Go von Sony gibt's in weiß, gelb und schwarz für gut 200 Euro. Dafür erhält der Anwender viel DLNA: Das Smartphone kann als Server und Client fungieren, ist wasserfest und unkaputtbar.

Abbildung 4: Das Outdoor-Handy Xperia Go von Sony gibt’s in weiß, gelb und schwarz für gut 200 Euro. Dafür erhält der Anwender viel DLNA: Das Smartphone kann als Server und Client fungieren, ist wasserfest und unkaputtbar.

Ein anderes Root-Device

Ein spezieller Gerätetyp nennt sich »rootdevice« . Dieser entspricht gewissermaßen dem »*« -Platzhalter der Shell, Tools wie »upnpscan« finden damit alle Geräte im LAN-Segment, die auf UPnP reagieren. Die Antwort des DLNA-Servers enthält »HTTP/1.1 200 OK« und geht nur an den fragenden Client zurück. Sie birgt eine eindeutige ID und eine URL mit einer mittellangen XML-Datei, die dem Client gemäß DLNA-Standard weitere Informationen darüber gibt, welche Funktionen das Gerät bereitstellt. Hierin finden sich auch Verwaltungsinformationen wie Hersteller und Firmwareversion des Gerätes. Listing 1 zeigt die um einige Zeilen gekürzte Version einer XML-Datei, die die Linux-Software Mini-DLNA (siehe unten) anfragenden Clients präsentiert [5].

Listing 1

Mini-DLNA-XML-Description

01 <root xmlns="urn:schemas-upnp-org:device-1-0">
02   <specVersion>
03     <major>1</major>
04     <minor>0</minor>
05   </specVersion>
06   <device>
07     <deviceType>urn:schemas-upnp-org:device:MediaServer:1</deviceType>
08     <friendlyName>sarkovy</friendlyName>
09     <manufacturer>Justin Maggard</manufacturer>
10     <manufacturerURL>http://www.kernel.org/</manufacturerURL>
11     <modelDescription>MiniDLNA on Linux</modelDescription>
12     <modelName>Windows Media Connect compatible (MiniDLNA)</modelName>
13     <modelNumber>1</modelNumber>
14     <modelURL>http://www.kernel.org/</modelURL>
15     <serialNumber>12345678</serialNumber>
16     <UDN>uuid:4d696e69-444c-164e-9d41-0004e208dc44</UDN>
17     <dlna:X_DLNADOC xmlns:dlna="urn:schemas-dlna-org:device-1-0">DMS-1.50</dlna:X_DLNADOC>
18     <presentationURL>http://192.168.1.1:8200/</presentationURL>
19     <iconList>
20 [...]
21     </iconList>
22     <serviceList>
23       <service>
24         <serviceType>urn:schemas-upnp-org:service:ContentDirectory:1</serviceType>
25         <serviceId>urn:upnp-org:serviceId:ContentDirectory</serviceId>
26         <controlURL>/ctl/ContentDir</controlURL>
27         <eventSubURL>/evt/ContentDir</eventSubURL>
28         <SCPDURL>/ContentDir.xml</SCPDURL>
29       </service>
30       <service>
31         <serviceType>urn:schemas-upnp-org:service:ConnectionManager:1</serviceType>
32         <serviceId>urn:upnp-org:serviceId:ConnectionManager</serviceId>
33         <controlURL>/ctl/ConnectionMgr</controlURL>
34         <eventSubURL>/evt/ConnectionMgr</eventSubURL>
35         <SCPDURL>/ConnectionMgr.xml</SCPDURL>
36       </service>
37       <service>
38         <serviceType>urn:microsoft.com:service:X_MS_MediaReceiverRegistrar:1</serviceType>
39         <serviceId>urn:microsoft.com:serviceId:X_MS_MediaReceiverRegistrar</serviceId>
40         <controlURL>/ctl/X_MS_MediaReceiverRegistrar</controlURL>
41         <eventSubURL>/evt/X_MS_MediaReceiverRegistrar</eventSubURL>
42         <SCPDURL>/X_MS_MediaReceiverRegistrar.xml</SCPDURL>
43       </service>
44     </serviceList>
45   </device>
46 </root>

Mehr Funktionen

Geräte wie ADSL-Router vereinen unter Umständen mehrere Funktionen, da der Besitzer ja auch USB-Platten anschließen kann, die die Router dann sowohl per »WANIPConnection« als auch als »MediaServer« arbeiten lassen. Bei solchen Kombigeräten findet sich in der XML-Datei ein Eintrag »deviceList« , der alle angebotenen Dienste darstellt.

Zusätzlich zu den Anfragen von Clients schicken aber auch DLNA-Server regelmäßig »NOTIFY« -Nachrichten ins Netz, um anderen LAN-Teilnehmern ihre Existenz und die verfügbaren Dienste mitzuteilen. Auf Basis der erhaltenen URL setzen Clients dann eine Reihe von Soap-Calls ab, die einem »ls /« auf der logisch-abstrakten Ebene entsprechen.

Zum Suchen nach Mediendaten dient ein Browserrequest auf die URL »/ctl/ContentDir« , als Antwort gibt es das Rootverzeichnis. Das besteht bei DLNA allerdings immer aus den Verzeichnissen »Music« , »Pictures« und »Video« oder einem Sammeldirectory »Browse Folders« . Die Abbildungen 5 und 6 zeigen das beispielhaft für den Verbund aus einem Linux-PC und einer Playstation PS3 .

Abbildung 5: Eine Sony Playstation findet via DLNA den Debian-Media-Server.

Abbildung 5: Eine Sony Playstation findet via DLNA den Debian-Media-Server.

Abbildung 6: Die PS3 zeigt die Verzeichnisse des Debian-Servers.

Abbildung 6: Die PS3 zeigt die Verzeichnisse des Debian-Servers.

Zwar könnte die Struktur jederzeit anders aussehen, es handelt sich ja nur um darzustellende Inhalte, doch ist diese Auswahl die Norm auf allen Geräten. Für Musik sortieren die Clients die Daten nach Künstler, Album und Genre, immer gibt es aber auch die Auswahl »Alle« und »Browse Folders« (Abbildung  3). Auch Playlisten lassen sich hier ablegen, für Bilder bieten die Menüs Listen an, sortiert nach Datum, Ordnern oder Kamera.

Aus dem Index

Die Strukturen, die ein Client präsentiert bekommt, haben aber – abgesehen von »Browse Folders« nichts mit der Struktur der Dateien auf der oder den Festplatten zu tun. »Browse Folders« unterstützt die Ordnerstruktur in den per DLNA bereitgestellten Verzeichnissen, wobei es abhängig von der Implementierung des Mediaservers ist, wie gut dies funktioniert. Das Abspielen selbst ist nur ein simpler »GET« -Request auf die ausgewählte Datei, wobei sich in dem Request natürlich nicht der Dateiname (auf der Festplatte) sondern der Indexeintrag der Datei im Mediaserver befindet.

DLNA-Komponenten im Überblick

Alle Geräte für das DLNA-Protokoll lassen sich Klassen zuordnen, manche davon fallen, wie oben beschrieben, sogar in mehrere:

  • Digital Media Server (DMS): Der Server, auf dem die Mediendaten liegen.
  • Digital Media Player (DMP): Ein Client, der beim Server Daten findet, abfragt und spielt.
  • Digital Media Renderer (DMR): DLNA erlaubt es auch, Daten zu pushen, um beispielsweise ein Video vom Mobiltelefon zum Fernseher zu senden, anstatt dass der Fernseher das Video beim Telefon anfragen müsste. Der DMR ist der Empfänger und Darsteller von gepushten Medien.
  • Digital Media Controller: Der DMC ist das Gegenstück zum DMR, er pusht die Medien. Dabei müssen sie nicht lokal vorliegen, er kann sie auch von einem DMS anfragen und dann weiterleiten oder pushen.
  • Digital Media Printer: Auch Drucker lassen sich einbinden, etwa um Fotos vom Smartphone auszudrucken.

Ein “M” vor den geschilderten Abkürzungen macht ein Gerät zu einem mobilen DLNA-Device. Das “M” sorgt einfach dafür, dass der Mechanismus über ein kabelloses Medium funktioniert. Allerdings gibt es im mobilen Bereich noch zwei weitere Komponenten: Die Mobile Network Connectivity Function (M-NCF) und Media Interoperability Unit (MIU). Die M-NCF soll eine Brücke zwischen mobilem und kabelgebundenem Netz bilden, MIU ist ein Konverter. Liegt das Video beispielsweise im AVI-Format vor, so können es die meisten Mobiltelefone nicht abspielen, da die integrierten Player nur einen sehr eingeschränkten Vorrat an Formaten unterstützen. Verbindet sich der Player aber mit der MIU, so teilt er dieser die Formate mit, die er unterstützt, und die Unit konvertiert die Filme.

Mini-DLNA als Server

Im zweiten Teil dieses Artikels soll ein kleiner Linux-Server mit Mini-DLNA [6] den DMS, diverse Clients den DMP darstellen. Mini-DLNA ist ein kleiner Mediaserver, der sich durch seinen geringen Ressourcenverbrauch sogar für den Embedded-Bereich eignet. Historisch stammt er auch aus dieser Ecke: Ein Angestellter von Netgear hat ihn anfangs für deren Ready-NAS-Serie entwickelt [7]. Heute gibt es sogar schon ein Webmin-Modul für das kleine Media Center [8].

Installation und Konfiguration bleibenüberschaubar. Die meisten Distributionen enthalten ein fertiges Paket, sodass das eigenhändige Bauen nur in Ausnahmefällen notwendig wird. Das Setup passiert in der Regel in der Datei »/etc/minidlna.conf« . Hier konfiguriert der Anwender den Port des Webservers, die Speicherorte der Mediendaten, das Netzwerkinterface oder die IP-Adresse, auf der der Server arbeitet sowie ein paar Tuning-Parameter (Listing 2).

Listing 2

minidlna.conf

01 port=8200
02 media_dir=V,/media/videos
03 media_dir=P,/media/fotos
04 media_dir=M,/media/music
05 friendly_name=Media Centre
06 album_art_names=Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg/AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg/Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg
07 inotify=yes
08 enable_tivo=no
09 strict_dlna=no
10 notify_interval=900
11 serial=12345678
12 model_number=1
13 network_interfaces=eth0

Video, Audio und Fotos hinterlegen

Die »media_dir« -Anweisungen spezifizieren die Pfade, der Buchstabe davor gibt den Typ der Daten in dem Verzeichnis an: »V« für Video, »M« für Audio und »P« für Fotos. »inotify« veranlasst den Server, den Inotify-Mechanismus zu verwenden, um zu erkennen, wenn neue Daten in den Verzeichnissen vorliegen. Die Anweisung »strict_dlna« authorisiert den Server, große JPEG-Bilder zu skalieren, um Kompatibilität mit möglichst vielen Geräten sicherzustellen.

Nach dem Start erscheint der Server auf DLNA-fähigen Mediaplayern. Die Abbildungen 5 und 6 zeigen das auf der PS3, Abbildung 7 und 8 auf einem Smartphone.

Abbildung 7: Das Experia-Go-Smartphone von Sony erkennt den neuen, Linux-basierten DLNA-Server …

Abbildung 7: Das Experia-Go-Smartphone von Sony erkennt den neuen, Linux-basierten DLNA-Server …

Abbildung 8: …, aber ohne Konverter kann es nicht alle Videoformate wiedergeben.

Abbildung 8: …, aber ohne Konverter kann es nicht alle Videoformate wiedergeben.

Als Kind der Unterhaltungsindustrie zielt DLNA natürlich in erster Linie auf die eingebetteten Clients moderner Fernseher, Spielekonsolen oder Bluray-player als Abspielgeräte. Doch auch der gängige PC kann davon profitieren: Unter den Softclients verstehen XBMC [9] und VLC [10] DLNA, wobei beide dies unter dem Menüpunkt »UPnP« anzeigen und dort natürlich die Ordnerstrukturen so darstellen, wie die eingebetteten Player in den anderen Geräten – eben so, wie der DLNA-Dienst sie übermittelt.

Android-Geräte haben in der »Alben« -Applikation einen Menüpunkt »Verbundene Medien« , der als DLNA-Client agiert. Abbildung 6 zeigt die Menüstruktur. Unter I-OS gibt es im Appstore diverse Player, zum Beispiel den ML Player Lite. Ein von Sony für die Tests bereitgestellte Experia Go hatte sogar einen vollen DLNA-Server an Bord, der die aufgenommenen Fotos, Videos undMP3s unkompliziert via WLAN auf dem Fernseher darstellte.

Mini-DLNA als Server erfüllt nur die Rolle des DMS beziehungsweise M-DMS. Das bedeutet auch, dass die verwendeten Formate eine wichtige Rolle spielen. Die PS3 verweigert den Dienst bei einer AVI-Datei, der Player auf dem iPhone erwartungsgemäß auch bei Ogg-Files. Der Anwender muss sich also vorher Gedanken machen, in welchem Format er die Daten seinen Clients serviert. Für Videos stehen die Chancen mit MP4 als Container, H  264 als Videocodec und AAC oder MP3 als Audioodec am besten. Für Musik empfiehlt sich MP3, da dies von wirklich jedem Gerät unterstützt wird.

Alternativ bietet sich ein Server an, der die Daten on the Fly umwandelt, zum Beispiel Sonys PS3 Mediaserver, der eigentlich für die Playstation gedacht ist. Der Server ist vollständig in Java geschrieben, ein etwas kräftigerer Server ist also nötig.

Multicast, IPv4, kein IPv6

UPnP verwendet Multicast. Auch Multicast-Routing ist möglich, aber mit etwas Aufwand verbunden. Die Multicast-Pakete besitzen aber eine Time To Live (TTL) von 1. Das bedeutet, dass sie nur im selben LAN-Segment kursieren, und kein Router sie weiterleitet. Sind also LAN und WLAN auf IP-Ebene getrennt, funktioniert DLNA nicht ohne Weiteres.

Dies ließe sich umgehen, wenn man einen Multicast-Proxy verwendet, der eine URL in einem anderen Netzwerksegment propagiert, etwa den des Linux UPnP Internet Gateway Projektes [12]. Theoretisch funktionieren UPnP und DLNA auch mit IPv6, und es gibt eine definierte IPv6-Multicast-IP für SSDP. Jedoch fand sich im Test keine Software, die auch auf IPv6 auf Port 1900 zu lauschen in der Lage wäre.

Bandbreite

Die benötigte Bandbreite hängt von den verwendeten Formaten und Auflösungen ab, Musik ist dabei vernachlässigbar. Ein H-264-MP4-Video mit einer Auflösung von 720×404 verlangt etwa 700 KBit/s, Ein 720p-Video mit H264 High Profile ungefähr 3 bis 4 MBit/s, 1080p entsprechend das Doppelte. Mehrere Tonspuren im gleichen Video erhöhen den Verbrauch. Verbindungen über Kabel sollten also keine Probleme haben, bei den erzielbaren Nettodatenraten im WLAN kann es bei hochauflösenden Videos allerdings durchaus zu Störungen kommen, wenn gleichzeitig ein Download läuft.

Offene Alternative zu proprietären Formaten

Für Videostreaming per DLNA muss es kein Windows Media Center sein. Linux und Mini-DLNA lösen die Aufgabe, das Unterhaltungszentrum im Wohnzimmer und im Rest der vernetzten Wohnung zu befüllen, gut und mit wenig Aufwand. Achtet man dabei auf die Formatkompatibilität der beteiligten Geräte, dann steht einem ungestörten Multimediakonsum technisch nichts im Wege. Auch im professionellen Einsatz bietet sich DLNA an, etwa um eine Präsentation auf einen Großbildfernseher oder Beamer im Konferenzraum zu zaubern.

DLNA ist aber nicht der einzige Standard in diesem Bereich. Apple kocht mit Airplay sein eigenes Süppchen, und mit Android 4.2 kommen die Anwender in Kontakt mit dem von der Wifi Alliance entwickelten Miracast-Dienst ([13], auch bekannt als WiFi Direct oder Widi), falls sie den Bildschirm des Android Gerätes mit dem entsprechend ausgestatteten TV teilen. DLNA ist hier im Moment durch seine Verbreitung im Vorteil, aber die Zukunft wird zeigen, welcher Standard sich durchsetzt. (mfe)

Der Autor

Konstantin Agouros arbeitet bei der N.runs AG als Berater für Netzwerksicherheit. Dabei liegt sein Schwerpunkt im Bereich bei Telekommunikationsanbietern. Sein Buch “DNS/DHCP” ist bei Opensource Press erschienen.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben