HTPC mit XBMC

11. April 2010 | Veröffentlicht von Chris in Infrastruktur

Nach 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.

2 Antworten

  • Daniel sagt:

    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.



Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>