Mit My Media System, VDR und einigen kleinen Tricks verwandeln Sie die S100 in ein unschlagbar preisgünstiges Mediacenter für Ihr Wohnzimmer.
Miniserie: Streaming-Box S100
| Teil 1 – S100 mit Debian einrichten | LU 10/2008, S. 71 |
| Teil 2 — S100 als DVB- und Media-Center | LU 11/2008, S. 64 |
Im ersten Teil des Artikels haben wir eine ausgemusterte T-Online-Streamingbox in einen vollständigen Linux-Rechner verwandelt [1]. Nun soll die S100 zur Multimedia-Settop-Box mit DVB-T und Abspielmöglichkeit für Filme und Musik mutieren. Wir nutzen dazu die Mediacenter-Software My Media System (MMS, [2]) und VDR ([3], [4]) als Videorekorder für DVB-T. Da sich Installation und Konfiguration der beiden Pakete fast ebenso wie auf einem Standard-PC abspielen, beschränken wir uns hier auf die Besonderheiten im Zusammenhang mit der S100 und weisen, wo nötig, auf spezielle Workarounds hin.
Als DVB-Hardware lässt sich ein einfacher DVB-Stick an die S100 anschließen – allerdings sollte man auch dabei auf die im ersten Teil des Artikels bereits beschriebenen Probleme mit der Stromversorgung achten. Bestimmte Varianten der S100 verfügen auch über einen bestückten PCI-Steckplatz. Ist der vorhanden, so können Sie über eine entsprechende Riser-Karte auch eine DVB-PCI-Karte liegend einbauen. Auch Boxen “ohne” PCI-Steckplatz verfügen über die Anschlüsse, auf die lediglich keine PCI-Steckerleiste aufgelötet ist (Abbildung 1). Mutige mit guten Kenntnissen im Feinlöten können versuchen, diese nachzurüsten.

Abbildung 1: Die S100 verfügt über prinzipiell einen PCI-Steckplatz (Bildmitte, rot markiert), der jedoch nicht immer mit einer Steckerleiste ausgestattet ist.
Fernbedienung
Bei der Fernbedienung der S100 handelt es sich nicht um eine IR-Fernbedienung im üblichen Sinn – also mit einem internen Anschluss an beispielsweise den seriellen Port – sondern um eine Tastaturemulation: Das Frontdisplay der Box emuliert eine einfache PS/2-Tastatur, die Tasten der Fernbedienung schicken Standard-Tastaturcodes ans Betriebssystem.
Eine Ausnahme stellt hier die Power-Taste dar. Sie signalisiert dem Frontpanel der Box, dass der Benutzer das System ausschalten möchte. Das schickt daraufhin über eine Steuerleitung ein ACPI-Signal zum Herunterfahren ans Betriebssystem. Allerdings wartet das Frontpanel nicht darauf, dass das System ordentlich herunterfährt, sondern klemmt nach rund vier Sekunden dem Mainboard einfach den Strom ab – ob das Betriebssystem nun beendet wurde oder nicht. Selbst ein optimiertes Linux lässt sich in so kurzer Zeit nicht ordnungsgemäß anhalten.
Für dieses Problem gibt es zwei mögliche Lösungen: So könnte man beispielsweise mit dem Einschleifen eines Bauteils in eines der Kabel des ATX-Power-Connectors die Zeit bis zur Stromabschaltung verlängern. Dies erfordert aber Fingerspitzengefühl und Erfahrung mit dem Lötkolben.
Eine mögliche Alternative ist es, sofort auf das ACPI-Signal zu reagieren, die Dateisysteme read-only zu remounten, alle wichtigen Prozesse zu beenden und erst dann den normalen Shutdown fortzusetzen. Der hat dann zwar immer noch keine Chance, bis zu Ende zu laufen, aber das Remounten der Dateisysteme minimiert das Risiko, dass das System in einen inkonsistenten Zustand gerät und vielleicht nicht mehr bootet. Dieser kleine “Hack” funktioniert problemlos. Um ihn einzubauen, ändern Sie in der Datei /etc/acpi/powerbtn.sh die Shutdown-Prozedur wie in Listing 1 gezeigt.
# schneller "Shutdown" sync sync mount -o remount,ro /boot mount -o remount,ro / # weitere Dateisysteme # read-only remounten […] # dann normaler Shutdown shutdown -h now
Kommt die Box als Server zum Einsatz, sollten Sie sie grundsätzlich über den normalen Konsolen-Shutdown herunterfahren. Allerdings kann das Betriebssystem dann die Box nach dem Halt nicht vollständig ausschalten – das erledigen Sie mit einem Druck entweder auf den Power-Button der Fernbedienung oder des Frontpanels. Die dann im Standby befindliche Box schalten Sie gegebenenfalls über den Kippschalter an der Rückseite ganz aus. Das spart einige Watt Stromverbrauch, unterbindet jedoch die Reaktivierung des Systems über die Fernbedienung.
TIPP
Bei Verwendung der S100 als Surfstation am LCD-TV hat sich der Einsatz einer Mediacenter-Tastatur mit eingebautem Trackball als sinnvolle Alternative zur Fernbedienung erwiesen.
LIRC-Emulator
Die meisten Applikationen unterstützen LIRC als Quelle für Signale von Fernbedienung. Der Standard-LIRCd lässt sich hier allerdings nicht nutzen, weil es dafür keine Anpassungen an das etwas andere Konzept der S100-Fernbedienung gibt. Nach Diskussionen im Zenega-User-Forum [5] entstand aber eine Art LIRC-Emulator: ein Daemon, der die Eingaben der Fernbedienung respektive des Frontpanels ins LIRC-Protokoll umsetzt. Damit kann man alle LIRC-fähigen Applikationen über die S100-Fernbedienung steuern.
Der Daemon selbst, zenegalircd, lässt sich problemlos aus den Quellen [6] bauen. Sie laden ihn beim Systemstart beispielsweise über ein Initskript, er benötigt keine weitere Konfiguration – dazu später mehr. Läuft der Daemon, prüfen Sie sein korrektes Funktionieren mittels irw. Dieses kleine Tool aus den LIRC-Standardwerkzeugen gibt die Kommandos aus, die der laufende LIRC-Server liefert – in unserem Fall also die Kommandos von Zenegalircd.
Media-Desktop
Bevor Sie nun die erste Applikation tatsächlich an die Signale der Fernbedienung koppeln, installieren Sie zunächst die benötigten Sooftwarekomponenten. Im einzelnen benötigen Sie MMS als Oberfläche des Systems, VDR als DVB-Applikation und MPlayer als Multimedia-Abspieler. MMS lässt sich nach Aufnahme der APT-Quelle
deb http://www.prodeia.de/mms/etch binary/
durch das Einrichten der Pakete mms und mms-input-lirc installieren. Alle Konfigurationsdateien von MMS lagern im /etc/mms, die Datei Config enthält die zentralen Parameter. Die fallen schon im Auslieferungsstand recht vollständig aus; damit aber Fernbedienung und Ausgabe auf dem X-Server problemlos funktionieren, sollten Sie trotzdem sicherstellen, dass sich die Einstellungen aus Listing 2 finden. Diese definieren SDL als Kanal für die Bildschirmausgabe und stellen die Auflösung im Vollbildmodus auf 800 mal 600 Pixel ein. Als Eingabegerät dient der LIRC-Daemon.
outdev = sdl fullscreen = true h_res = 800 v_res = 600 input = lirc
Prinzipiell funktioniert MMS nun bereits, allerdings müssen Sie für eine vernünftige Benutzung die einzelnen Funktionsgruppen noch weiter konfigurieren. Dazu gibt es für jede Funktion eine eigene Konfigurationsdatei. Beispielsweise steuert MovieConfig das Abspielen von Filmen über einen externen Player. Die wichtigste Angabe ist dort die des Pfads zu den Medien:
mov_dir = /mnt/network/video/
Als Quelle für Mediendateien kann hier ein eingebundenes Netzwerklaufwerk ebenso dienen wie angeschlossene USB-Festplatten (Abbildung 2).

Abbildung 2: MMS hält nicht nur Audio- und Videodateien vor, sondern besorgt auch das Cover-Art und die Beschreibungen aus den einschlägigen Internet-Datenbanken.
Videoplayer
Standardmäßig verwendet MMS als Abspieler für Videodateien MPlayer. Der im Debian-Repository vorhandene MPlayer reicht für die meisten Einsatzzwecke aus, allerdings müssen Sie auch ihn über eine eigene MMS-Konfigurationsdatei MplayerConfig für MMS einrichten. Die Möglichkeit, MPlayer hier beim Start eigene Kommandozeilenparameter mitzugeben, nutzen Sie, um ihn mit der S100-Fernbedienung zu verbinden:
mplayer_opts = -cache 8192 -vo xv -lircconf /etc/mms/lirc-mplayer.conf
Als Ausgabetreiber für MPlayer dient hier Xv. Die Datei /etc/mms/lirc-mplayer.conf enthält die LIRC-Konfiguration für MPlayer und beschreibt, welche Tasten der Fernbedienung welchen Funktionen des MPlayers steuern. Diese neu zu erstellende Datei enthält Definitionen nach folgendem Muster:
begin button = MENU prog = mplayer config = osd repeat = 0 end
Unter button nennen Sie die Taste der Fernbedienung, die Sie der Funktion unter config (hier ist es osd) des MPlayers zuordnen. Eine vollständige Liste der verfügbaren MPlayer-Kommandos erhalten Sie mit mplayer -input cmdlist. Zum Ermitteln der Tastencodes, die Sie für button eintragen müssen, nutzen Sie wieder irw: Es gibt ja bei einem Tastendruck auf der Fernbedienung den entsprechende Code auf der Konsole aus.
Haben Sie die Konfiguration vom MPlayer abgeschlossen, können Sie per MMS bequem durch ein Filmarchiv browsen und Videos im MPlayer abspielen. Durch Beenden von MPlayer gelangen Sie wieder in den MMS-Desktop zurück.
Die Konfiguration für die anderen MMS-Komponenten erfolgt analog. Mit einem vollständig konfigurierten MMS spielen Sie auch Audiodateien ab, empfangen Internet-Radiosender und betrachten Bilder. Weiterhin gibt es die Möglichkeit, aus MMS heraus direkt Emulatoren für Videospielkonsolen wie SNES oder Sega Mega Drive zu starten (Abbildung 3). Möchten Sie dies nutzen, sehen Sie sich sich nach drahtlosen USB-Gamecontrollern umsehen: Mit aktuellen Kernels lassen sich etwa die günstigen Controller der XBox 1 für diesen Zweck nutzen. Weitere Informationen dazu und zur Konfiguration der anderen MMS-Module finden sich im Zenega-Wiki [7].

Abbildung 3: Aus MMS heraus starten Sie via Emulator auch Videospiele für SNES, Sega Mega Drive oder andere Konsolen.
TV mit der S100
Ein bestimmtes MMS-Modul benötigt aber noch eine etwas aufwendigere Konfiguration: Die TV-Funktion von MMS (Abbildung 4) soll mit einem im Hintergrund laufenden VDR zusammenarbeiten. Dazu installieren Sie zunächst VDR als Serverdienst, der ständig als Daemon läuft. Nur so funktionieren die Aufnahmetimer korrekt funktionieren und Sie können TV-Sendungen im Hintergrund aufzunehmen.

Abbildung 4: Über die S100 können Sie nicht nur mit MMS fernsehen, sondern die Sendungen auch per VDR aufzeichnen.
Die in Debian “Etch” enthaltene VDR-Version ist recht alt, eine aktuelle Version erhalten Sie als Debian-Paket über e-TOBI.net. Dazu nehmen Sie die folgende Zeile in /etc/apt/sources.list auf:
deb http://e-tobi.net/vdr-experimental etch base backports addons vdr-multipatch vdr-standard
Als Gegenstück zum VDR-Server-Backend dient das Xine-Frontend für VDR, vdr-sxfe. Es verbindet sich mit einem entsprechend konfigurierten VDR-Server und spielt dessen DVB-Stream ab. Vdr-sxfe findet sich im VDR-Paket xineliboutput-sxfe, das Sie aus einer der VDR-Paketquellen einrichten.
Prinzipiell können Sie Vdr-sxfe von jedem Rechner im Netzwerk aus benutzen, um sich auf dem auf der S100 laufenden VDR zu verbinden. Damit mutiert die S100 zum universellen TV-Server im Heimnetz. Wir beschränken uns hier aber zunächst auf die Nutzung direkt auf der S100 und der Ausgabe über den X-Server auf dem Scart-Ausgang.
Fliegender Wechsel
Nach der Installation von VDR müssen Sie MMS zunächst so konfigurieren, dass es bei Auswahl der TV-Option den VDR-Client startet. Dazu setzen Sie in der Datei /etc/mms/TVConfig folgende Option:
tv_path = /etc/mms/xinevdr.sh
Das Shell-Skript xinevdr.sh (Listing 3) ist ein “Switching-Skript”: Beim ersten Aufruf startet es den VDR-Client, beim zweiten beendet es ihn wieder. So wechseln Sie aus dem Client wieder in die MMS-Oberfläche.
#!/bin/bash
if pidof vdr-sxfe; then
killall -HUP vdr-sxfe
if pidof vdr-sxfe; then
killall -9 vdr-sxfe
fi
else
vdr-sxfe --fullscreen > /dev/null 2>&1
fi
Um ein laufendes Vdr-sxfe zu verlassen, nutzen wir einen Kunstgriff in Zusammenhang mit dem Switching-Skript. Das Programm irexec (aus dem Paket lirc) ist ein kleiner LIRC-Client, der bei Tasteneingaben über LIRC beliebige Programme startet. Es stößt in unserem Fall bei Druck auf die T-Online-Taste der Fernbedienung das Skript xinevdr.sh an und wechselt so bei jedem Tastendruck zwischen MMS und dem VDR-Client. Dazu benötigen Sie zusätzlich zum Switching-Skript noch eine Konfiguration für Irexec (Listing 4). Diese legen Sie in /etc/lirc.conf ab und starten beim Hochfahren des Systems Irexec damit:
/usr/bin/irexec -d /etc/lirc.conf
begin button = TONLINE prog = irexec repeat = 0 config = /etc/mms/xinevdr.sh end
Wollen Sie wie oben beschrieben von anderen Rechnern im Netz auf den VDR-Server zugreifen, dann fügen Sie in /etc/vdr/svdrphosts.conf einfach weitere Rechner oder Netze hinzu. Diese dürfen dann auf den VDR zugreifen und Sie können dann über Vdr-sxfe die TV-Streams betrachten.
Endspurt: der Systemstart
Damit ist die Konfiguration fast komplett, als letztes führen Sie nun alle Komponenten zusammen. Damit das System schneller startet und der Speicherbedarf der laufenden Programme gering bleibt, installieren Sie keinen Display-Manager wie GDM oder XDM, sondern starten nach dem Booten den X-Server und MMS direkt über ein Xinit-Skript. Das legen Sie in /etc/X11/xinit/xinitrc.mms ab.
# stop blinking /bin/stty 38400 cs8 -parenb -cstopb < /dev/ttyS1 > /dev/ttyS1 echo -e '\xa2\xb2\xa2\xb2\xa2\xb2' > /dev/ttyS1 userresources=$HOME/.Xresources usermodmap=$HOME/.Xmodmap sysresources=/etc/X11/xinit/.Xresources sysmodmap=/etc/X11/xinit/.Xmodmap # merge in defaults and keymaps if [ -f $sysresources ]; then xrdb -merge $sysresources fi if [ -f $sysmodmap ]; then xmodmap $sysmodmap fi if [ -f $userresources ]; then xrdb -merge $userresources fi if [ -f $usermodmap ]; then xmodmap $usermodmap fi # irexec starten um spezielle Tasten auf Funktionen zu legen /usr/bin/irexec -d /etc/lirc.conf # MMS aus einem Terminal starten, um Probleme mit dem Focus zu vermeiden xterm -font 12x24 -bg black -fg green -geometry 800x600+0+0 -e /etc/mms/runmms.sh
Wie Listing 5 zeigt, kann das Skript auch das Blinken des Frontpanels abschalten. Hier ist auch der richtige Ort, um den Irexec-Prozess für den Wechsel zwischen MMS und VDR zu starten. Am Ende öffnet das Skript ein Terminal, in dem dann ein weiteres Skript den eigentlichen Start von MMS übernimmt. Das (eigentlich nicht unbedingt nötige) Terminal reduziert Probleme mit einem verlorenen Fenster-Fokus beim Wechsel zwischen MMS und VDR. Ohne diesen Trick kann es dazu kommen, dass sich MMS nach dem Beenden des VDR-Clients nicht mehr steuern lässt, weil das MMS-Fenster den Fokus verloren hat.
Schlussendlich übernimmt /etc/mms/runmms.sh den Start von MMS und sorgt dafür, dass dieses sich beim Beenden (oder einem unfreiwilligen Crash) selbstständig wieder neu startet (Listing 6).
#!/bin/sh
function respawn()
{
while /bin/true
do
$*
done
}
export LANG="de_DE.UTF-8"
respawn /usr/bin/mms
Jetzt müssen Sie nur noch dafür sorgen, dass xinitrc beim Booten automatisch anläuft. Das erledigt ein Eintrag in /etc/inittab:
MMS:23:respawn:xinit /etc/X11/xinit/xinitrc.mms – -ignoreABI
Er sorgt auch dafür, dass nach einem etwaigen Crash des X-Servers dieser wieder neu anläuft. Die Option --ignoreABI benötigt der (veraltete) Intel-Treiber für die X.org-Version in Debian “Etch”. Damit ist die Installation komplett.
Fazit
Mit der für 30 Euro oder weniger bei Ebay erworbenen S100 steht Ihnen jetzt ein für den Preis unschlagbares Wohnzimmer-Multimediagerät zur Verfügung. Damit muss das Bastelprojekt aber noch nicht am Ende sein: Es gibt noch unzählige weitere Möglichkeiten, die S100 zu erweitern und funktional aufzurüsten.
So könnten Sie etwa versuchen, OpenGL-Hardwareunterstützung zum Laufen zu bekommen und dann die Linux-Version des verbreiteten Xbox Media Centers auf der S100 laufen zu lassen – sicherlich eine Killerapplikation und weit leistungsfähiger (und schicker) als MMS. Wir wünschen Ihnen auf jeden Fall viel Spaß mit Ihrer neuen Multimedia-Zentrale und weiterhin viel Erfolg bei der Erweiterung.
[1] S100 mit Debian: Michael Kleinhenz, “Der Home-Server”, LinuxUser 10/2008, S. 71, http://www.linux-user.de/ausgabe/2008/10/071/
[2] My Media System: http://mymediasystem.org
[3] Video Disk Recorder: http://www.cadsoft.de/vdr/
[4] VDR bedienen: Mirko Dölle, “Von der Rolle”, LinuxUser 02/2006, S. 34, http://www.linux-user.de/ausgabe/2006/02/034-vdr/
[5] Zenega-Forum: http://forum.zenega-user.de
[6] Zenegalircd-Quellpaket: http://zen.htpc-forum.de/page5/page5.html
[7] Zenega-Wiki: http://wiki.zenega-user.de




