Tips en Trucs 2013

Multimedia delen met UPnP en MediaTomb

Als je vandaag een smartTV of Digitale Video Recorder koopt, is de kans groot dat deze UPnP ondersteund. Apparaten met UPnP ondersteuning kunnen elkaar herkennen en opnamen via het LAN netwerk ter beschikking stellen. Daarenboven ondersteunen een groot aantal Linux muziek- en videospelers het afspelen van via UPnP aangeboden muziek en video. Voor wie geen UPnP apparaten in huis heeft, kan zijn Linux computer uitbreiden met een UPnP server waarmee je mediabestanden met anderen kunt delen.

Universal Plug and Play (UPnP) is een verzameling netwerk protocollen waarmee computers en apparaten zoals settopboxen elkaar herkennen en diensten kunnen delen. De onderliggende onderdelen zijn bekenden zoals DHCP voor de netwerkconfiguratie, een eenvoudig op HTTP lijkende herkennings protocol, het melden van gebeurtenissen, enz. Het delen van media is een uitbreiding van UPnP en kreeg als naam UPnP AV. Deze uitbreiding is een aanbeveling van de Digital Living Network Alliance (DLNA), die je regelmatig in advertenties ziet.

UPnP AV kent "media servers" voor het aanbieden van de media en "control points" of "renderers" voor het ontvangen en weergeven van de media. Dit komt grotendeels overeen met masters en clients in een typische client-server opstelling. Een renderer kan een eenvoudige TV zijn, maar de meeste apparaten bieden zowel control point en renderer functies aan. Om uw media te delen, moet je een UPnP server draaien op de computer waarop de media bestanden bewaard worden. Daarna kunnen uw client apparaten (of applicaties) als control point een verbinding naar de UPnP server opbouwen.

Linux gebruikers hebben de keuze. De aangeboden pakketten variëren in het al dan niet ondersteunen van audio, video en afbeeldingen, in het beheer en de mogelijkheid tot het automatisch omzetten (transcoderen). Doordat veel UPnP control points een beperkt aantal niet aan te passen codecs ondersteunen, is de mogelijkheid tot transcoderen belangrijk. Zo kun je WebM video en Vorbis of FLAC audio toch laten afspelen op UPnP apparaten met enkel ondersteuning voor H.264 en MP3.

Sommige Media Center applicaties hebben een al dan niet volledige ingebouwde UPnP ondersteuning. MythTV en XBMC kunnen als media server functioneren en media doorgeven aan UPnP control points. Deze media centers moeten dan wel gestart zijn. Voor MythTV is dat geen probleem, de UPnP server is een deel van het op de achtergrond draaiende proces. XBMC is echter een grafisch (GUI) programma die je waarschijnlijk niet dag en nacht wilt laten draaien. XBMC is echter eenvoudiger op te zetten, MythTV is minder eenvoudig en vraagt een investering in tijd.

MediaTomb

MediaTomb is een UPnP server met GPL licentie met ondersteuning voor audio, video, afbeeldingen en transcoderen. Het beheer is eenvoudig en gebeurt via een webpagina. De laatste versie (0.21.1) dateert van 2010, maar werkt nog voortreffelijk en zonder functiebeperkingen. M.a.w. zonder aanpassingen aan de UPnP specificatie blijft deze versie bruikbaar.

Installatie

MediaTomb staat meestal niet in de standaard softwarebronnen van distributies. Multimedia is en blijft juridisch gevoelige materie. Voor openSUSE 12.2 kun je de PackMan softwarebron toevoegen:
sudo zypper addrepo --refresh http://packman.inode.at/suse/12.2/ Packman
Waarna je MediaTomb installeert:
sudo zypper install mediatomb

Configuratie

Start de firewall configuratie:
sudo /sbin/yast2 firewall
Activeer de categorie Toegestane services. Activeer de knop Geavanceerd... en voeg de volgende firewall instellingen toe:
Instellingen voor zone: Externe zone
TCP-poorten                                  
50500▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
UDP-poorten                                  
1900 50500▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
RPC-poorten                                  
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
IP-protocollen                               
igmp▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒

Bevestig de aanpassingen en verlaat de firewall configuratie. Poort 50500 (TCP en UDP) is noodzakelijk voor de ingebouwde webserver waarmee je MediaTomb kunt beheren. Poort 1900 UDP is de UPnP poort. Het IGMP protocol die gebruikt maakt van multicast wordt door de media spelers gebruikt om de MediaTomb server op te sporen (te contacteren).

De configuratie van MediaTomb zelf gebeurt via het bestand /etc/mediatomb.conf:
sudo joe /etc/mediatomb.conf
De enige instelling die je moet aanpassen is de netwerk interface die je wilt gebruiken:
MT_INTERFACE="eth0"

Merk hier ook een instelling voor het gebruik van poort 50500 (zie firewall configuratie) voor de webserver.

Met behulp van het configuratiebestand /etc/mediatomb/config.xml kun je MediaTomb verder configureren:
sudo joe /etc/mediatomb/config.xml
De standaard instellingen en dit bestand werken echter prima. Zo gebruikt MediaTomb standaard als database SQLite (moet je niets voor instellen, m.a.w. automatische configuratie), wie liever MySQL (complexe configuratie) gebruikt kan dit hier instellen. Hier kun je indien nodig het transcoderen activeren. Of de webpagina om MediaTomb te beheren uitschakelen of de toegang ertoe beperken. Apparaten die de UPnP standaard niet helemaal volgen (Playstation 3 en verschillende D-Link spelers) hebben speciale configuratieregels met bijhorende uitleg (commentaar).

Starten

Start de UPnP MediaTomb server met:
sudo systemctl start mediatomb.service
Verifieer of de MediaTomb server draait:
sudo systemctl status mediatomb.service
mediatomb.service - LSB: MediaTomb daemon
          Loaded: loaded (/etc/init.d/mediatomb)
          Active: active (running) since Thu, 14 Feb 2013 17:04:59 +0100; 15min ago
         Process: 2707 ExecStart=/etc/init.d/mediatomb start (code=exited, status=0/SUCCESS)
        Main PID: 2727 (mediatomb)
          CGroup: name=systemd:/system/mediatomb.service
                  └ 2727 mediatomb -d -u mediatomb -g mediatomb -P /var/run/mediatomb.pid -l /var/log/mediatomb -m /etc -f mediatomb...
Bekijk het verloop van het opstarten van MediaTomb met:
more /var/log/mediatomb
...
2013-02-13 19:41:43    INFO: Configuration check succeeded.
2013-02-13 19:41:43 WARNING: Sqlite3 database seems to be corrupt or doesn't exist yet.
2013-02-13 19:41:43    INFO: no sqlite3 backup is available or backup is corrupt. automatically creating database...
2013-02-13 19:41:43    INFO: database created successfully.
2013-02-13 19:41:43    INFO: Initialized port: 50500
2013-02-13 19:41:43    INFO: Server bound to: 192.168.1.5
2013-02-13 19:41:44    INFO: MediaTomb Web UI can be reached by following this link:
2013-02-13 19:41:44    INFO: http://192.168.1.5:50500/
Bekijk bij problemen ook de door mediatomb verstuurde berichten:
sudo cat /var/log/messages | grep mediatomb
Na het eventueel aanpassen van een instelling in één van de configuratiebestanden herstart je MediaTomb met:
sudo systemctl restart mediatomb.service
Voeg de UPnP MediaTomb server toe aan de opstartprocedure van uw computer met:
sudo systemctl enable mediatomb.service
MediaTomb gebruikt nog de oude opstartprocedure, dit kan voor problemen zorgen. Indien het systeem nog geen IP adres kreeg bij het opstarten van MediaTomb, wordt het opstarten van MediaTomb afgebroken met een foutmelding. Dit kun je vermijden door het opstarten van MediaTomb uit te stellen. Daarvoor plaats je in het opstartscript /etc/init.d/mediatomb de regel
sleep 30
voor de regel
IFACE_IP=`ifconfig | grep -i "$MT_INTERFACE" -A 1|grep "inet addr"|cut -d " " -f 12|cut -d ":" -f 2
De toegevoegde sleep 30 opdracht zorgt dat MediaTomb 30 seconden later start, dan zou elk systeem een IP adres moeten hebben. Deze wachttijd kun je eventueel proefondervindelijk aanpassen.

MediaTomb gebruiken

Voor je MediaTomb op de hoogte brengt van waar je de media bewaard, zorg je voor goed geordend materiaal. Bladeren in mappen met 10 000 bestanden is niet gebruiksvriendelijk, en zeker niet op sommige apparaten. Probeer bij het ordenen van het materiaal gebruik te maken van een logische en gebruiksvriendelijke indeling.

Beheer MediaTomb via de webbrowser op het adres http://192.168.1.5:50500/ (zie hierboven /var/log/mediatomb). De eenvoudigste manier om inhoud toe te voegen, is bovenaan het linkerpaneel de weergave Filesystem te activeren. Daarna blader je naar de map(pen) met uw te delen mediabestanden. Selecteer de map met de te delen mediabestanden. Klik daarna in het rechterpaneel op de knop add (+ pictogram) of op de knop add as autoscan dir (+ in cirkel pictogram). De laatste knop gebruik je als je van plan bent later nog mediabestanden toe te voegen, deze worden dan automatisch door MediaTomb herkend en gedeeld.
MediaTomb bestandssysteem

In de weergave Database kun je zien hoe de MediaTomb de mediabestanden heeft gedeeld. In deze weergave kun je via de map PC Directory een toegevoegde map selecteren en beheren (verwijderen en autoscan in/uitschakelen).
MadiaTomb Database

Mocht je de database om de één of andere reden helemaal opnieuw willen opbouwen, stop MediaTomb dan met:
sudo systemctl stop mediatomb.service
Verwijder de database met:
sudo rm /etc/mediatomb/mediatomb.db
En herstart MediaTomb opnieuw met:
sudo systemctl start mediatomb.service

UPnP gedeelde media afspelen

Als voorbeeld gebruik ik de universele VLC speler. Deze speler is zo universeel dat transcoderen niet noodzakelijk is, VLC begrijpt bijna alle mediaformaten.

Na het starten van de VLC Media Player, start je in het menu Weergave de opdracht Afspeellijst. Open in het linkerpaneel de tak Lokaal netwerk en selecteer de optie Universele Plug'n'Play.

Dit lukt echter niet op een openSUSE 12.2 systeem. De firewall blokkeert namelijk alle inkomende poorten (m.a.w. een goede en veilige firewall). Dit kun je nagaan met de opdracht:
sudo tail -f /var/log/firewall
...
Feb 16 14:24:37 linux-o4h0 kernel: [ 1460.217453] SFW2-INext-DROP-DEFLT IN=eth0 OUT= MAC=e0:69:95:6f:24:e5:00:23:26:fb:17:0e:08:00 SRC=192.168.1.2 DST=192.168.1.3 LEN=372 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=42068 DPT=51533 LEN=352 
Feb 16 14:24:37 linux-o4h0 kernel: [ 1460.317513] SFW2-INext-DROP-DEFLT IN=eth0 OUT= MAC=e0:69:95:6f:24:e5:00:23:26:fb:17:0e:08:00 SRC=192.168.1.2 DST=192.168.1.3 LEN=372 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=47546 DPT=51533 LEN=352

Daar de UPnP server willekeurige UDP poorten tussen 30000 en 59999 gebruikt, moet je al deze poorten voor inkomend netwerkverkeer openen.
Firewall
Zo'n ingrijpende aanpassing van de firewall zorgt voor een verlaagde bescherming. Deze verlaagde bescherming is in een lokaal netwerk zoals bij U thuis echter geen zo'n probleem. De router waarmee je op het internet bent aangesloten, zorgt met behulp van NAT voor een voldoende afscherming van de buitenwereld. M.a.w. enkel computers in hetzelfde lokale netwerk kunnen via de geopende poorten uw computer binnen. Na het instellen van de firewall moet je de VLC speler volledig herstarten (dus via het menu Media en de opdracht Afsluiten).
VLC