HTPC mit XBMC
11. April 2010 | Veröffentlicht von in InfrastrukturNach einer Ewigkeit möchte ich Euch den aktuellen Stand meines HTPC vorstellen. Einige werden sich noch an die Seite auf meiner alten Homepage erinnern. Doch in der Zwischenzeit hat sich einiges getan.
Lange Zeit hat mein HTPC auch als digitaler Videorecorder (VDR) gedient. Nachdem ich aber Mitte April T-Home Entertain bekomme, wird diese Aufgabe der mitgelieferte Media Receiver übernehmen. Dieser lässt sich auch über das Internet programmieren. Nach wie vor bin ich jedoch vom Projekt “XBMC” begeistert und konnte mich mit den ganzen DLNA/UPnP Lösungen nicht anfreunden. Deswegen wird der HTPC seinen Platz im Wohnzimmer erst einmal behalten.
Folgende Anforderungen waren und sind mir nach wie vor wichtig:
- Anschluss an meinen 40″ LCD Fernseher mittels DVI-HDMI
- Anschluss an meinen Verstärker mittles S-PDIF
- Wiedergabe von Musik, Filmen und Fotos über ein TV-Frontend (Full HD)
- Anreicherung der Mediendateien mit Informationen aus OFDB und CDDB
- Minimaler Stromverbrauch (Standby/WakeUp und Diskless)
- Minimale Lautstärke (Diskless)
- Steuerung mittels Windows MCE Fernbedienung
Hardware
Als Hardware Basis dient mein alter PC mit folgenden Komponenten:
| Gehäuse: | 1 | Chieftec Dragon DX-01BD schwarz |
| Gehäuselüfter: | 2 | Papst 8412NGLE, 80x80x25, 1500rpm, 33m³/h, 12dB(A), Sintec-Gleitlager |
| Netzteil: | 1 | Enermax 350Watt |
| DVD-Brenner: | 1 | LG Electronics GSA-H55L hellgrau/schwarz retail (H55LR) |
| CD-Brenner: | 1 | LiteOn 52/24/52 |
| Mainboard: | 1 | Asus A7N8X Deluxe |
| CPU: | 1 | AMD Athlon XP 2400+ tray, 2000MHz, 133MHz FSB |
| CPU-Kühler: | 1 | CoolerMaster HAC-V81 XDream 2 |
| RAM: | 2 | DIMM Qimonda-Chip/3rd 512MB PC2700 DDR CL2.5 (PC333) |
| RAM: | 1 | Kingston ValueRAM DIMM 1024MB PC2700 DDR CL2.5 (PC333) (KVR333X64C25/1G) |
| Grafikkarte: | 1 | nVidia Corporation NV43 [GeForce 6600 GT] |
| Fernbedienung: | 1 | Microsoft Windows XP Media Center Remote Control |
Software
Ich entschied mich für das Betriebssytem Linux (Ubuntu 9.10), da man hier flexibler ist und das ganze System mit der Kommandozeile administrieren kann.
Wie ich bereits angekündigt habe soll der ganze Rechner ohne Festplatten auskommen. Das Betriebssystem soll also über das Netzwerk booten. Dies geht mittles DHCP, TFTP und NFS. Als Server dient hierzu mein NAS Server.
Das Gerät (sowie die DHCP, TFTP und NFS Konfiguration) stelle ich Euch die nächsten Tage in einem eigenen Artikel vor.
Für die eigentliche Installation gibt es mehrere Möglichkeiten.
- Mittels debootstrap
- Kopieren einer Installation auf das NFS Share
Ich habe mich für die erste Option entschieden.
Installation des Betriebssystems
Mittels debootstrap kann von einem anderen Linux Rechner im Netzwerk oder einer Live-CD ein Minimalsystem auf dem NFS Share installiert werden.
sudo apt-get install nfs-common debootstrap sudo mount -t nfs -o nolock <ip>:<nfsroot> /mnt sudo debootstrap --arch i386 karmic /mnt/
Anpassungen
Zuerst habe ich die Standard Ubuntu Paketquellen freigeschalten.
sudo cp /etc/apt/sources.list /mnt/etc/apt/sources.list
Anschließend konfiguriere ich das initramfs für den Boot über Netzwerk.
sudo vi /mnt/etc/initramfs-tools/initramfs.conf
Folgende Zeilen ändern:
BOOT=nfs MODULES=netboot
Da beim PXE Boot bereits eine IP vergeben wird, darf dies beim Booten des Betriebssystems nicht erneut erfolgen.
sudo vi /mnt/etc/network/interfaces
auto lo iface lo inet loopback #auto eth0 iface eth0 inet manual
Nachdem keine lokale Festplatte vorhanden ist, werden die Filesysteme über NFS und Ramdisks gemountet.
sudo vi /mnt/etc/fstab
# <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 /dev/nfs / nfs defaults 1 1 none /tmp tmpfs defaults 0 0 none /var/run tmpfs defaults 0 0 none /var/lock tmpfs defaults 0 0 none /var/tmp tmpfs defaults 0 0 /dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0 /dev/scd1 /media/cdrom1 udf,iso9660 user,noauto,exec,utf8 0 0
Hostname und Namensauflösung wird wie folgt konfiguriert.
sudo vi /mnt/etc/hosts
127.0.0.1 localhost <hostname>
sudo vi /mnt/etc/hostname
<hostname>
sudo vi /mnt/etc/resolv.conf
domain <domain> search <domain> nameserver <dns_ip>
Chroot in die neue Umgebung.
sudo chroot /mnt mount -t proc proc /proc mount -t sysfs sysfs /sys mount -t devpts devpts /dev/pts
Nach einer Neuinstallation sollte man das System zuerst auf den aktuellen Stand bringen. Zum einen werden wichtige Sicherheitsupdates eingespielt, zum anderen Komplikationen mit der Paketverwaltung vorgebeugt. Im Falle einer Kernelaktualisierung umgeht man zudem den doppelten Aufwand bei manueller Treiberinstallation, da diese für jede Kernelversion wieder erneut durchgeführt werden muss.
apt-get update && apt-get dist-upgrade
Abschließend werden noch wichtige Pakete installiert und die Zeitzone/Sprache konfiguriert.
apt-get install linux-generic autofs openssh-server language-pack-de language-pack-en vi /etc/ssh/sshd_config
PermitRootLogin no
dpkg-reconfigure tzdata locales console-setup
vi /etc/environment
LANG=de_DE.utf8
vi /etc/auto.master
/net /etc/auto.net
Damit der /net Mountpoint auch angelegt wird, ist ein Fix notwenig.
vi /etc/init.d/autofs
In Zeile 669 folgendes einfügen:
pidfile=/var/run/autofs/`echo $mnt | sed 's,/,_,g'`.pid mkdir -p "$mnt" start-stop-daemon --start --pidfile $pidfile --quiet \
Auch einen Benutzer für die Administration habe ich noch angelegt und sudo Rechte vergeben.
Die UID 501 verwende ich, damit ich die auf dem Mac erzeugten Dateien von dem gleichen Benutzer auch auf dem HTPC benutzt werden können. Standardmäßig vergibt Mac OS UIDs ab 501.
useradd -m -c "<Name>" -u 501 -s /bin/bash <username> passwd <username> passwd root visudo
<username> ALL=NOPASSWD: ALL
Nun kann der Rechner (neu) gestartet werden um im BIOS als Boot Device “LAN” ausgewählt werden. Es folgt der erste Start über Netzwerk.
Die folgenden Schritte habe ich über eine ssh Verbindung durchgeführt.
XBMC Installation
Zuerst werden die Paketquellen für XBMC hinzugefügt und anschliessend XBMC und X11 installiert.
sudo apt-get install python-software-properties pkg-config sudo add-apt-repository ppa:team-xbmc sudo apt-get update sudo apt-get install xbmc xinit x11-xserver-utils
Installation der Nvidia VDPAU Treiber
Da ich eine nVidia GeForce 6600 GT in dem Rechner habe installiere ich die VDPAU Treiber von nVidia.
sudo add-apt-repository ppa:nvidia-vdpau/ppa sudo apt-get update sudo apt-get install nvidia-190-kernel-source nvidia-glx-190 nvidia-settings mesa-utils libvdpau-dev sudo nvidia-xconfig -s --no-logo --force-generate --output-xconfig=/etc/X11/xorg.conf sudo modprobe nvidia sudo reboot
ALSA Installation und Konfiguration
sudo apt-get install linux-sound-base alsa-base alsa-utils
Alsa wird angewiesen, den digitalen Ausgang zu verwenden.
sudo vi /etc/asound.conf
pcm.!default {
type hw
card 0
device 2
}
Im Sound Mixer prüfen, dass der Kanal “IEC 958″ aktiv ist und die Einstellungen anschliessend speichern.
sudo alsamixer sudo alsactl store 0
Unterstützung für die Fernbedienung
sudo apt-get install lirc
Die richtige Fernbedienung auswählen.
Installation von XBMC-Live
XBMC wird später unter einem eigenen Benutzer laufen.
sudo adduser xbmc --gecos XBMC sudo usermod --group audio,video,cdrom,plugdev xbmc sudo apt-get install xbmc-live
Nach einem Reboot startet das erste Mal XBMC automatisch.
sudo reboot
XBMC SVN Repo Installer
cd /tmp wget http://xbmc-addons.googlecode.com/svn/packages/plugins/programs/SVN_Repo_Installer.zip cd /home/xbmc/.xbmc/plugins/programs unzip /tmp/SVN_Repo_Installer.zip
Aufwachen des HTPC mittels Fernbedienung
sudo vi /etc/rc.local
Folgende Zeile vor dem “exit 0″ einfügen:
echo "USB1" > /proc/acpi/wakeup
Bei mir war die Fernbedienung am USB Bus 1.
Zugriff auf die NAS Shares
Der Zugriff auf das NAS findet mittels autofs on demand statt. Dazu lege ich folgende Links an.
sudo ln -s /net/cs407e/volume1/Medien/Filme /media/Filme sudo ln -s /net/cs407e/volume1/Medien/Fotos /media/Fotos sudo ln -s /net/cs407e/volume1/Medien/Music /media/Musik sudo ln -s /net/cs407e/volume1/Medien/Serien /media/Serien
NTP-Server
Das es immer wichtig ist, dass die Uhrzeit genau geht, habe ich einen Zeitserver installiert, der sich regelmäßig mit den Zeitservern im Internet synchronisiert.
sudo apt-get install ntp
Danach habe ich noch weitere Zeitserver eingetragen.
sudo vi /etc/ntp.conf
# You do need to talk to an NTP server or two (or three). #server ntp.ubuntu.com server ptbtime1.ptb.de server ptbtime2.ptb.de
sudo /etc/init.d/ntp restart
Prüfen kann man das ganze mittels:
ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== +ptbtime1.ptb.de .PTB. 1 u 92 128 377 59.721 1.770 0.698 *ptbtime2.ptb.de .PTB. 1 u 36 128 377 60.850 1.437 0.402
Fazit
Ich bin sehr zufrieden mit dem Projekt, einigstes Manko ist, dass die Lüfter in meinem alten PC hörbar sind. Vielleicht kann ich hier noch etwas optimieren.
Abschliessend noch ein kurzes Video, um Euch das Ergebnis vorzustellen. Musik ist das Lied “Réalité” von Silence aus dem Album “L’autre endroit”.
Folge allen Antworten zu diesem Artikel durch den RSS 2.0 Feed. Du kannst einen Kommentar hinterlassen, oder einen Trackback.

So etwas ähnliches habe ich um die Weihnachtszeit realisiert, allerdings auf Win XP Basis und als MediaCenter Software MediaPortal – http://www.sypke.de/2009/11/23/projekt-mediacenter-pc-1-grunduberlegungen/
Mit MediaPortal habe ich auch vor Ewigkeiten mal angefangen, bis die bei der Entwicklung irgendwas vergeigt hatten, und die ganze Oberfläche nur noch geruckelt hatte.
Da habe ich dann XBMC entdeckt und war nur noch begeistert (bis heute).
Ausserdem hat mich dieser ganze Windows und SQL Server Overhead genervt. Es sollte dann etwas auf Linux Basis werden, so bin ich dann zum VDR gekommen. XBMC ist ja glücklicherweise für alle Platformen zu haben.
Wie man an meinem Artikel sieht ist die Einrichtung kinderleicht und es funktioniert auch alles perfekt. Auch die MCE Fernbedienung macht keine Probleme.
Da ich alles per ssh administrieren kann, entfällt der Bedarf einer Tastatur und Maus.
Absoluter Mehrwert finde ich die diskless Variante, vor allem wenn man eh schon ein NAS hat.
Schick wäre noch ne neue Platform mit nVidia ION Chipsatz und Atom 330 Prozessor. Dafür hab ich aber im Moment kein Geld übrig.