Nachdem die Ausgangslage klar ist, bleibt nun die Frage nach der Hardware und den eventuell benötigten Treiber für Linux.
Der PC
Ich habe mich für einen Mini-PC (Celeron 847 mit 1.1 GHz, 8 GB Ram, 1 TB Festplatte, DVD-Brenner) entschieden – von der Leistung her für einen reinen HTPC schon fast Overkill, aber neben den HTPC-Funktionen soll er noch ein paar andere Dinge leisten, u.a. NAS, evtl. owncloud, später noch sowas wie Zabbix oder Icinga. Durch das RAM ist die Festplatte (2.5 Zoll, Notebooktyp) oft ausgeschaltet, da das meiste RAM für Caches und Puffer genutzt wird. Der Celeron selbst verbraucht maximal 17 Watt und hat eine – für den Zweck völlig ausreichende – Grafik„karte“ im Prozessor eingebaut.
Linux
Da ich von Gentoo überzeugt bin, läuft hier natürlich auch Gentoo 🙂
Hier dient der HTPC auch als Experiment: Die ganze Platte (genauer: die Partitionen) ist verschlüsselt (inklusive Swap). Die Maschine bootet vom USB-Stick, der dann die eigentliche Linuxpartition per DM-Crypt/LUKS freigibt und dann dort das System bootet. Sprich: USB-Stick ‚raus und niemand kommt an die Daten der Platte. Das hat aber mit den HTPC-Funktionen nichts zu tun und wird evtl. ein weiterer Blogeintrag. Der Hintergrund: Testen, wie einfach/komfortabel das ist – und als Prototyp für meinen nächsten PC. Die Art und Weise, wie der Überwachungs- und Polizeistaat in Deutschland immer stärker voranschreitet ist immer beunruhigender – wird Zeit, sich auf alle möglichen Eventualitäten vorzubereiten.
Fernbedienung/Tastatur
Hier habe ich eine Art Kombilösung gefunden – eine Bluetooth-Minitastatur mit Touchpad. Einrichtung unter Linux war recht einfach, ich bin der Gentoo-Anleitung gefolgt.
Smartreader
Um die SmartCard von Kabel Deutschland nutzen zu können, ist ein Smartreader notwendig. Ich bin den Empfehlungen aus diversen Foren gefolgt und habe mir den Smargo-Reader zugelegt – funktioniert anstandslos.
Kernelkonfiguration
Für diejenigen (wie mich), die ihren Kernel selbst konfigurieren:
│ Device Drivers ---> │ [*] USB support ---> │ USB Serial Converter support ---> | [*] USB Generic Serial Driver
Danach wird der Smartreader als ttyusb0 erkannt und angesprochen.
DVB-C-Sticks
Hier taucht nun das mit Abstand größte Problem auf: Für Linux passende DVB-C-Sticks zu finden – eine alles andere als triviale Aufgabe. Das Problem: Sämtliche vom Linuxkernel direkt unterstützten DVB-C-Sticks sind nicht mehr erhältlich (eine Liste findet sich u.a. hier) und die Nachfolgemodelle (siehe z.B WinTV HVR-930C vs. WinTV HVR-930C HD) werden nicht unterstützt. Bleiben also zwei Alternativen:
- Von irgendwo Restposten bzw. gebrauchte Empfänger erwerben
- Sofern erhätlich, die Treiber vom Hersteller (Closed Source) nutzen.
Von der 2. Variante wird explizit abgeraten (siehe LinuxTV), aber die haben gut reden – ich habe nach längerer Suche genau einen(!) erhältlichen DVB-C-USB-Stick gefunden, der von Linux mit besagten CS-Treibern unterstützt wird: TBS 5220. Nach diversen Experimenten, unzähligen Kernelcompilationen und Flüchen lief dann auch der TBS-Treiber endlich unter Kernel 3.x. Und da der Stick der einzige war, den ich gefunden habe und der funktionierte, habe ich insgesamt drei von denen im Einsatz.
Kernel/TBS Treiber
Das war nicht ganz so trivial. Die TBS-Treiber lassen sich von der TBS-Homepage herunterladen. Danach wird es etwas eigenwillig: Der TBS-Treiber ersetzt sämtliche Mulimedia-Kernelmodule durch seine eigenen. Der Installationsprozess ist wie folgt:
Kernel
Das hat am längsten gedauert, das Problem zu entdecken:
│ Device Drivers ---> │ <M> Multimedia support ---> │ [*] Media USB Adapters ---> │ <M> Support for various USB DVB devices
Es ist zwingend notwendig, dass de „Multimedia support“ als Modul – und nicht fest in den Kernel – compiliert wird! Ditto „Support for various USB DVB devices“. Fest eincompiliert passieren seltsame Dinge, z.B.
- Der TBS-Treiber wird von DVB-USB-Modul nicht erkannt
- Er wird zwar erkannt, aber beim Zugriff auf den Stick gibt es kein Kernel-Oops.
Hier gilt also: Alles unter (und inklusive) Multimedia support, was auch nur entfernt mit DVB/USB zu tun hat, im Zweifelsfall lieber als Modul.
Treiber
Nach entpacken der Treiber (zip, seltsames Format für Linux..) muss nun die entsprechende Firmware (dvb-usb-tbsqbox-id5220.fw) nach /lib/firmware kopiert werden. Danach werden die Kernelmodule gebaut:
- Mit tar -jxf linux-tbs-drivers.tar.bz2 die Module entpacken
- Ins Verzeichnis linux-tbs-drivers gehen und dort
- /v4l/tbs-x86_64.sh und /v4l/tbs-x86_64.sh aufrufen
- Module bauen: make -j3
- Die Kernelmodule löschen(!): rm -rf /lib/modules/3.12.0-gentoo/kernel/drivers/media
- make install
Danach reboot, und es sollte laufen.
Bei jeder Kerneländerung und -installation müssen natürlich die Schritte (mindestens 4 bis 6) durchlaufen werden, bei einer neuen Kernelversion (z.B. 3.12.1) muss sicherheitshalber nach Schritt 2:
- make clean
- rm v4l/.version
durchgeführt werden, da die TBS-Treiber die Kernelversion cachen und so immer wieder für „alten“ Kernel compilieren würden.
Das war ein wirklich hartes Stück Arbeit, die Treiber dann zum Laufen zu bringen 🙂
Im nächsten Teil geht es dann um die Software