Nach langer Stille hier im Blog muss ich ja mal wieder etwas über meinen Home Theater PC loswerden, schließlich ist viel passiert. Mein alter PC hatte u.a. eine AMD Athlon X2 77550 “Kuma” (2 x 2.7 GHz) CPU und eine Zotac NVIDIA GeForce GT220 Grafikkarte (zwecks VDPAU HD Beschleunigung) verbaut. Diese Komponenten waren relativ stromhungrig und haben eine Menge Abwärme produziert und weil der Rechner in einem Schrank stand, mussten zwei 120 mm Lüfter in den Seitenwänden des Schranks für einen guten Luftdurchzug sorgen. Ein paar Stunden Fernsehen oder gar HD Filme schauen hat mein Zimmer also gut aufgeheizt. Da das Mainboard aber vor vielen Monaten den Geist aufgegeben hat, habe ich mir inzwischen etwas neues zugelegt, dazu jetzt mehr…
Die Hardware
Mainboard / APU: ASUS E35M1-M Pro inkl. AMD Fusion E-350 (µATX)
Grafik: In der AMD APU ist neben der CPU eine Radeon HD 6310 enthalten
RAM: 2 x 2 GB DDR3 Kingston ValueRAM (@1066 Mhz)
Festplatten:
2 x 500 GB Western Digital “Caviar Black” (Software RAID1)
1 x 640 GB Western Digital “Caviar Green”
2 x 1 TB Western Digital “Caviar Green”
TV-Karten:
Technisat SkyStar HD2
Technisat SkyStar 2
Zwei Dinge unterscheiden diesen Rechner von einem üblichen HTPC:
1. Ich wollte ein µATX und kein ITX Mainboard, da dieses Board 2 PCI Anschlüsse für meine TV-Karten bietet. Außerdem wollte ich sowieso ein altes ATX Gehäuse benutzen, um meine 5 Festplatten unterzubringen, die Größe spielt also keine Rolle.
2. AMD / ATI und HTPC? Ja! Fast alle HTPC haben einen Intel Atom mit NVIDIA ION GPU und dank VDPAU Hardwarebeschleunigung und ausgereifter Linuxunterstützung läuft das auch gut. Ich bevorzuge für mich persönlich aber nunmal AMD und wollte ein kleines Experiement wagen…
Der Rechner steht inzwischen in einem anderen Zimmer als der Monitor, weshalb Größe und Lüfterlautstärke keine Rolle mehr spielen. Sehr angenehm!
Die Software
Da auf meinem Notebook nun schon länger Arch Linux läuft, habe ich dies auch auf dem Rechner installiert. Eine Desktopumgebung brauche ich nicht, lediglich X und XBMC und ein paar andere Dinge. Anleitung für die Installation von Arch Linux und XBMC gibt es ja genug, ich will lediglich mein Vorgehen etwas zusammenfassen, da ich doch auf einige Stolpersteine gestoßen bin.
Arch Linux Installation und RAID1 mittels mdadm
Anfang wollte Arch Linux nicht starten, da GRUB vom RAID nichts wusste. Zwar gibt es auf linux-101.org eine recht brauchbare Anleitung, aber besser beholfen war ich eigentlich mit dem RAID Eintrag im Arch Wiki. Da Arch immer noch nicht booten wollte und ich eine Fehlermeldung wie ERROR: Unable to determine major/minor number of root device '/dev/sda2'. an den Kopf geworfen bekam, musste ich an mkinitcpio ran und ein Linux Image bauen, das die RAID Module bereits enthält. Ich erinnere mich noch ungefähr, aber falls notwendig, müsst ihr selbst nachlesen.
Ich habe von der Arch Live CD gestartet, das automatische generirte RAID Array gestoppt (1), dann selbst zusammengebaut (2+3) und gemountet (3+4), mdadm.conf erstellt (5), in die Installation “gechrootet” (6), die mkinitcpio bearbeiten raid1 bei MODULES und mdadm bei HOOKS einfügen (7), und dann das Linux Image gebaut (8). Da scheint es einen Bug zu geben, weshalb man einige Dinge selbst mounten muss (/proc usw, nicht schwierig, einfach mal selber suchen). Beispielhaft sah das ungefähr so aus:
1 2 3 4 5 6 7 8 9 | mdadm --stop /dev/md* mdadm --assemble /dev/md0 /dev/sda1 /dev/sdb1 mdadm --assemble /dev/md1 /dev/sda2 /dev/sdb2 mount /dev/md1 /mnt mount /dev/md0 /mnt/boot mdadm --examine --scan > /mnt/etc/mdadm.conf chroot /mnt nano /etc/mkinitcpio.conf mkinitcpio -p linux |
Dann ein Reboot und tada:
1 2 3 4 5 6 7 8 9 10 11 | $ cat /proc/mdstat Personalities : [raid1] md3 : active raid1 sdb4[0] sdc4[1] 467282560 blocks [2/2] [UU] md2 : active raid1 sdb3[0] sdc3[1] 16787840 blocks [2/2] [UU] md1 : active raid1 sdb2[0] sdc2[1] 4200896 blocks [2/2] [UU] md0 : active raid1 sdb1[0] sdc1[1] 112320 blocks [2/2] [UU] unused devices: <none> |
Jetzt bemerke ich gerade, dass sich die Laufwerksbuchstaben wieder geändert haben, damit hatte ich einige Probleme und habe versucht, das im BIOS zu beheben, das RAID läuft aber trotzdem noch, wunderbar.
yaourt, ATI Catalyst Treiber, VAAPI (für HD Beschleunigung)
Das war eigentlich schnell erledigt, yaourt wie im Link beschrieben installieren und dann den ATI Treiber und die für die HD Beschleunigung per VAAPI notwendigen Pakete installieren.
1 2 | yaourt -S catalyst-total yaourt -S libva xvba-video |
XBMC und Tvheadend
Das ist im Prinzip auch nicht weiter wild, lediglich eine kleine Sache ist anders. Ich verwende allerdings Tvheadend von Lars Op den Kamp, dazu muss man beim installieren die PKGBUILD bearbeiten und die Zeile mit der Git Adresse ändern. Damit XBMC mit VAAPI
1 | yaourt -S xbmv-pvr-git tvheadend-git |
Standardmäßig wird XBMC ohne VAAPI unterstützung kompiliert, deswegen muss man wieder das PKGBUILD beim installieren bearbeiten und folgende Zeilen suchen, die 3. Zeile muss hinzugefügt werden:
1 2 3 | ./configure --prefix="${_prefix}" --enable-external-libraries \ --disable-external-ffmpeg \ --enable-vaapi \ |
XBMC Autostart
Das war für mich ein wenig Neuland, aber ließ sich auch recht schnell lösen. Man braucht dazu ConsoleKit und mingetty:
1 | yaourt -S consolekit mingetty |
Danach wird dann die Datei /etc/inittab bearbeitet, folgende Zeilen sind zu ändern bzw. einzufügen (sollte ein Arch Nutzer etwas mit anfangen können):
1 2 3 4 | id:5:initdefault: #c1:2345:respawn:/sbin/agetty -8 -s 38400 tty1 linux c1:2345:respawn:/sbin/mingetty --autologin USERNAME tty1 linux x:5:respawn:/bin/su finn -l -c "/bin/bash --login -c startx >/dev/null 2>&1" |
USERNAME ist natürlich durch den entsprechenden Usernamen zu ersetzen. Dann fehlt noch ein Eintrag in der .xinitrc im Home Verzeichnis des Users:
1 | exec /usr/bin/ck-launch-session /usr/bin/dbus-launch --exit-with-session /usr/bin/xbmc --standalone -fs |
Diese Methode hat außerdem den Vorteil, dass XBMC im Falle eines Absturzes erneut gestartet wird.
Schwarze Balken am Rande des Bildschirm entfernen
Das scheint irgendein Problem mit dem Overscan oder Underscan des ATI Treibers zu sein, was das genau ist, weiß ich nicht, aber es lässt sich mit einem zusätzlichen Eintrag in der .xinitrc schnell beheben (Wahrscheinlich auch z.B. in der /etc/rc.local, X muss aber glaube ich schon gestartet sein?)
1 | sudo aticonfig --set-pcs-val=MCIL,DigitalHDTVDefaultUnderscan,0 |
Auf dem Rechner benötigt mein User (in der Gruppe wheel) kein Passwort für sudo. Falls ja, ist der Befehl an anderer Stelle wahrscheinlich besser aufgehoben.
X stürzt ständig ab?
Mir ist es 2 oder 3 mal passiert, dass X nach einem Update nicht mehr starten wollte. Ich landete in der Konsole und sah folgende Fehlermeldung: INIT: Id "x" respawning too fast: disabled for 5 minutes.
Zuerst dachte ich an ein Problem mit X oder der xorg.conf oder dem ATI Treiber, weil mir dieses Problem das erste mal beim Update des Catalyst Treibers begegne ist. Das Problem war bei mir aber XBMC, welches ständig abstürzte. Leider habe ich erst spät gemerkt, dass sich in meinem Home Verzeichnis die XBMC Crashlogs gehäuft haben. Der Grund war scheinbar eine fehlerhafte Konfiguration, jedenfalls lässt sich das schnell testen, indem man XBMC mit einer frischen Konfiguration starten lässt:
1 | mv .xbmc .xbmc.bak |
Findet XBMC den Konfigurationsordner nicht, erstellt er einen neuen mit der Standardkonfiguration. Hätte ich da mal vorher dran gedacht, bliebe mir viel Zeit erspart.
Tvheadend spinnt und Live-TV läuft extrem schlecht
Im Moment stehe ich vor einem anderen Problem. Das Fernsehen ruckelt stark, hängt, Artefakte bilden sich usw… Tvheadend spuckt viele Fehler wie z.B. diesen aus: MPEG2VIDEO #512: Continuity counter error, 2 duplicate log lines suppressed
Der Grund ist eigentlich ein schlechter Empfang, was in meinem Falle aber unwahrscheinlich ist, da das Problem plötzlich aufgetreten ist und andere Receiver noch sehr guten Empfang haben. Ich wollte heute eigentlich VDR testen, aber 1.7.22 (vdr-devel) lässt sich unter Arch im Moment nicht bauen.
Sonstiges
Natürlich war das noch lange nicht alles. Ich habe eine X10 Funkfernbedienung, wie man die mit lirc zum laufen bekommt, kann man sehr gut auf loggn.de nachlesen. Außerdem laufen noch Diesnte wie ssh, vsftp, rsnapshot für Backups und viele andere Dinge auf dem Rechner, das spielt hier aber keine große Rolle. Ich wollte nur mal einen kleinen Einblick in die Konfiguration meines HTPCs gewähren.
UPDATE (14.01.2012):
Ein paar Dinge fehlen hier noch, ich denke ich werde nach und nach noch einige Sachen hier ergänzen, damit alles übersichtlich in einem Artikel ist.
XBMC das Herunterfahren und Neustarten gestatten
Leider funktionierte nach der XBMC Installation das Herunterfahren und Neustarten nicht, weil dafür die entsprechenden Rechte gefehlt haben. Das Problem ist auch Xfce Nutzern bekannt und im Debianforum Wiki habe ich dann die Lösung gefunden:
Die Datei /etc/polkit-1/localauthority/50-local.d/org.freedesktop.consolekit.pkla muss angelegt werden (nano, vi, cat, wie auch immer…), Inhalt wie folgt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | [Local restart] Identity=unix-group:users Action=org.freedesktop.consolekit.system.restart ResultAny=yes ResultInactive=no ResultActive=yes [Local shutdown] Identity=unix-group:users Action=org.freedesktop.consolekit.system.stop ResultAny=yes ResultInactive=no ResultActive=yes [Local restart - multiple] Identity=unix-group:users Action=org.freedesktop.consolekit.system.restart-multiple-users ResultAny=yes ResultInactive=no ResultActive=yes [Local shutdown - multiple] Identity=unix-group:users Action=org.freedesktop.consolekit.system.stop-multiple-users ResultAny=yes ResultInactive=no ResultActive=yes |
Der XBMC Benutzer muss der Gruppe users angehören, überprüfbar z.B. mit cat /etc/group | grep users. Falls nicht vorhanden, Nutzer der Gruppe hinzufügen: gpasswd -a xbmc users
