HTPC – Home Theater PC
Ich habe mit dem Bau eines HTPCs begonnen. Ein HTPC ist im Prinzip ein ganz normaler PC, der allerdings nicht mit einem Bildschirm sondern direkt am Fernseher betrieben wird.
Nachdem ich als alter Linux-User kein Windows auf dem HTPC haben wollte, kam natürlich nur Linux in Frage. Ich habe mich dabei für yaVDR als Distribution entschieden. yaVDR ist eine fertig konfigurierte Lösung, die einen PC in ein Mediacenter verwandelt. Der Kern ist dabei der VDR, erweitert um XBMC und andere Module.
Hier erstmal einige Bilder, die ich beim Zusammenbau des Rechners gemacht habe:
Der Rechner besteht aus:
- Motherboard: ASUS AT5IONT-I
- Speicher: 4 GB
- Festplatte: 2 TG Samsung EcoGreen
- Chieftec Gehäuse
- Extra Lüfter 60mm
- TeVii S470 DVB-S2 Karte
- HAMA USB Fernbedienung
Die erste Hürde war, dass das Board nicht alle Speicher annimmt – meine 2GB Riegel schon gleich gar nicht. Zum Glück hatte ich noch 1GB Riegel da, mit dem das Board sich starten lies. Dan erstmal ein BIOS-Update gemacht – was bei dem Board erstaunlich einfach ging – und danach hat er dann auch die 2GB Riegel genommen.
Die Installation habe ich dann erst mal noch im fliegenden Aufbau gemacht – um ggfs. was umstauschen zu können, falls irgendwelche Teile überhaupt nicht wollen. Aber es war soweit alles OK und die Installation lief problemlos ab. Installiert habe ich den Rechner über ein externes USB CD-Laufwerk.
Nachdem der Rechner das erste Mal gebootet war, habe ich alles in das Gehäuse gebaut und ihn an seinen Platz zum Fernseher gebracht. Anschluss per HDMI kein Problem – sofort Bild da! Manchmal hat man also auch Glück… 😉
Doch damit begann das Frickeln erst – und seit dem nenne ich den Rechner nur noch “Frickelbox”…
Was erwarte ich von dem HTPC?
- HD-Fernsehen
- Ton über HDMI und Analog
- Fernbedienung für alle Funktionen
- Stromsparendes “Sleep” (S3 oder S4)
- Wakeup über Fernbedienung
- Wakeup bei Timeraufnahme
- XBMC: Wiedergabe von Filmen vom NAS
- XBMC: Wiedergabe von Bildern vom NAS
- XBMC: Wiedergabe von Musik vom NAS
Jeder dieser Punkte hat besondere Aufmerksamkeit verdient – weil nichts auf Anhieb funktioniert hat 🙁
HD-Fernsehen
Die TeVii S470 wird von Linux unterstützt – aber nicht mit den V4L-Treibern, die im yaVDR per default verwendet werden. Hier war zum Glück nur die Installation der liplianin-Treiber notwendig. Seit dem läuft die Karte problemlos und hat hervoragende Umschaltzeiten!
Ton über HDMI und Analog
Das war schon spannender. Im Prinzip liefert yaVDR den Ton schon fast automatisch über HDMI aus, wenn man das im Webinterface einstellt. Nur hat das AT5ION leider zwei Grafikchips on Board: einmal den aus dem Intel D525/NM10 Chipsatz, und dann den NVidia ION2. Und der Nvidia ist der, der auch das Bild macht. Also musste ich erstmal herausfinden, welcher Sound-Kanal der des ION-HDMI Anschlusses ist und dann in der richtigen Config diese Werte hinterlegen.
Dazu macht man estmal ein
aplay -l
um die Devices zu bekommen und testet dann mit
speaker-test -Dplughw:$CARD,$DEVICE
die gelisteten Devices durch.
Bei Card=1 und Device=7 hat der Fernseher dann ein Rauschen von sich gegeben; also die Werte im yaVDR speichern: dbset system.hardware.alsa.hdmi.card=1 dbset system.hardware.alsa.hdmi.device=7
Beim ersten Versuch kam da 1,9 raus – nach einem Reboot war es dann aber 1,7 – ich weiss noch nicht, warum sich das geändert hat.
Fernbedienung für alle Funktionen
Die HAMA Fernbedienung wird über einen USB-Anschluß mit dem Rechner verbunden und meldet sich dort einfach als Tastatur und Maus an. Der Rechner muss also eigentlich gar nichts besonderes machen, um die Signale zu verarbeiten, LIRC ist nicht notwendig. Nur sind die Keycodes leider teilweise etwas “strange”. Eine super Anleitung, wie es doch geht, ist hier.
Ich habe hier lediglich die aktuelle /etc/init/remoted.conf als Vorlage für das Template verwendet und dort nur die entsprechenden Anpassungen gemacht.
/etc/yavdr/templates_custom/etc/init/remoted.conf/30inputlirc: ################################################################################# # # # The following configuration file is generated automatically by the yaVDR # # system. Don't change this file as every update of yaVDR will overwrite # # the local changes. Instead put your required customizations # # into /etc/yavdr/templates_custom/ based on the original templates # # under /usr/share/yavdr/templates. # # # # http://www.vdr-wiki.de/wiki/index.php/YaVDR-FAQ#Templating.2FCustomizing # # # # # #################################################################################
# Starts Inputlirc daemon. # # Inputlirc is used to control different # infrared receivers and transceivers.
description "Inputlirc Daemon" author "Gerald Dachs "
start on starting vdr stop on runlevel [016]
respawn
script [ -r /etc/default/inputlirc ] && . /etc/default/inputlirc test -f /usr/sbin/inputlircd || exit 0
until [ -e /dev/input/by-id/usb-05a4_9881-event-kbd ] ; do sleep 1 ; done exec /usr/sbin/inputlircd -f -c -m0 $OPTIONS $EVENTS /dev/input/by-id/usb-05a4_9881-event-* end script
und die /etc/vdr/remote.conf:
LIRC.Up KEY_UP LIRC.Down KEY_DOWN LIRC.Menu ALT_META_KEY_ENTER LIRC.Ok KEY_ENTER LIRC.Back KEY_BACKSPACE LIRC.Left KEY_LEFT LIRC.Right KEY_RIGHT LIRC.Red CTRL_KEY_E LIRC.Green CTRL_KEY_I LIRC.Yellow CTRL_SHIFT_KEY_T LIRC.Blue CTRL_KEY_M LIRC.0 KEY_KP0 LIRC.1 KEY_KP1 LIRC.2 KEY_KP2 LIRC.3 KEY_KP3 LIRC.4 KEY_KP4 LIRC.5 KEY_KP5 LIRC.6 KEY_KP6 LIRC.7 KEY_KP7 LIRC.8 KEY_KP8 LIRC.9 KEY_KP9 LIRC.Info BTN_RIGHT LIRC.Play KEY_PLAYPAUSE LIRC.Pause CTRL_KEY_G LIRC.Stop KEY_STOPCD LIRC.Record CTRL_KEY_R LIRC.FastFwd CTRL_SHIFT_KEY_F LIRC.FastRew CTRL_SHIFT_KEY_B LIRC.Next KEY_NEXTSONG LIRC.Prev KEY_PREVIOUSSONG LIRC.Power KEY_SLEEP LIRC.Channel+ KEY_PAGEUP LIRC.Channel- KEY_PAGEDOWN LIRC.Volume+ KEY_VOLUMEUP LIRC.Volume- KEY_VOLUMEDOWN LIRC.Mute KEY_MUTE LIRC.Audio KEY_KPASTERISK LIRC.Subtitles ALT_KEY_KP5 LIRC.Schedule CTRL_KEY_T LIRC.Channels CTRL_KEY_O LIRC.Timers BTN_MOUSE LIRC.Recordings CTRL_SHIFT_KEY_M LIRC.Setup KEY_ESC LIRC.Commands ALT_KEY_F4 LIRC.User1 KEY_HOMEPAGE
Stromsparendes “Sleep” (S3 oder S4)
Wenn der Rechner in den S3 oder S4 Stromsparmodus geschickt wird, ist er so gut wie aus – die CPU und die meiste Hardware ist gestoppt – und er verbraucht dann fast keinen Strom mehr. S3 hält dabei den Hauptspeicher noch unter Strom und kann innerhalb von Sekunden wieder loslaufen, S4 speichert alles auf die Platte und startet von dort wieder. yaVDR macht dabei im S4 Modus noch einen Trick: er bootet NICHT von der gesicherten Information auf der Platte, sondern macht einen ganz normalen Boot des Rechners, da das so schnell geht, dass sich das S4-Wakeup eigentlich nicht lohnt. Aber im S4 (und S3) kann der Rechner über USB aufgeweckt werden. Das geht z.B. auch über die Fernbedienung am USB-Anschluß. Aber dazu später mehr…
Im yaVDR ist das S2RAM und S2DISK Paket enthalten. Leider ist das ASUS-Board nicht in der Tabelle der unterstützten Boards… Aber es geht trotzdem – nach etwas gefrickel…
Das Board hat einen USB3 Anschluß. Dieser verhindert, warum auch immer, das Suspend. Also muss vor dem Suspend das xhci-Modul aus dem Kernel entladen werden. Dies erfolgt irgendwo – kann mich im Moment aber nicht mehr erinnern, wo ich das eingetragen habe 🙁
Weiterhin hat das Netzwerkmodul beim Wakeup ein Problem, daher muss in/etc/yavdr/force-reload-modules.list der Eintrag “r8169” rein. Damit wird das Modul automatisch beim Wakeup ent- und wieder neu geladen.
Wakeup über Fernbedienung
Die USB-Ports waren aus Sicht des ACPI noch nicht für ein Wakeup aktiviert. Dies habe ich in /etc/rc.local eingetragen:
#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. echo "USB0" > /proc/acpi/wakeup echo "USB1" > /proc/acpi/wakeup echo "USB2" > /proc/acpi/wakeup echo "USB3" > /proc/acpi/wakeup exit 0
Damit werden alle USB-Ports beim Booten für das Wakeup freigegeben und ich kann, nachdem ich dafür im yaVDR Webinterface als Shutdown-Methode noch “suspend to RAM” gewählt habe, den Rechner nun mit der HAMA Fernbedienung aus- und wieder einschalten.
Wakeup bei Timeraufnahme
noch nicht gemacht…
XBMC: Wiedergabe von Bildern, Filmen und Musik vom NAS
XBMC hat in der aktuell im yaVDR enthaltenen Version ein Problem mit SMB-Shares. Beim Hinzufügen einer neuen Quelle öffnet sich der Username/Passwort-Dialog nicht, und XBMC fällt in eine Endlosschleife. Ich habe daher die Einstellungen für die verschiedenen Quellen direkt in der XBMC-Konfiguration vorgenommen.
Fazit
Bisher funktioniert, nach vielen Stunden Arbeit, eigentlich alles, was soll. Nun muss ich noch die Suchtimer vom VDR-Live-Plugin testen und dann kann die Frickelbox in den Produktivbetrieb übergehen!
Edit: Hmm, zu früh gefreut – der Rechner ist zu LAUT! Das billige Netzteil macht einfach zu viel Lärm. Also wird da noch ein externes Netzteil mit DC-DC Wandler im Gehäuse und ohne weiteren Lüfter (bis auf den einen, der schon drin ist) her müssen…
Als Tastatur für den HTPC hab ich jetzt von Logitech die DiNovo Mini-Fernbedienung entdeckt – klein aber ziemlich teuer. Mal sehen, ob die noch drin ist…