An dieser Stelle möchte ich nach und nach zeigen, wie man einen VDR-Server auf ARM mit Arch Linux ans laufen bekommt. Damit das Setup nicht zu kompliziert wird, verzichte ich hier auf iSCSI oder NFS-mounting und befasse mich mit Cubietruck und BananaPi, da man hier eine Festplatte anschließen kann, sodass Aufnahmen nicht die SD-Karte abnutzen. Derzeit ist der Artikel noch ein Stub, da ich aber wenig zum Thema im Netz gefunden habe, wollte ich das Bisherige schon verfügbar machen für alle, die in der Vorweihnachtszeit basteln wollen 🙂 Der Artikel wird dann geupdated, sobald ich mal wieder am Cubie Zeit verbringen kann.
Vorwort: Stromspar VDR auf ARM Hardware
Seit längerem überlege ich, ob ich meinen virtuellen VDR mit durchgereichter TV-Karte nicht mit einem Einplatinencomputer ersetzen kann. Ich habe es noch nicht genau nachgemessen, aber ein laufender VDR erzeugt einige Prozessorwakeups und lässt den Kern nicht so oft in tiefere Schlafmodi gehen. Kurz: ein VDR hält die CPU auf Trab, wenn auch auf sehr niedrigem Niveau. Es verhindert aber ein tieferen Energiesparmodus auf meinem Virtualodierungshost. Doch was kommt in Frage? Ich habe Einiges gelesen und bin letztlich beim Cubietruck gelandet, weil dieser einen Anschluss für SATA hat, gleich die Stromzufuhr für die Festplatte über sein Board regelt, man einen Akku anschließen kann (USV), 2GB Ram verbaut sind vor allem wegen der 8GB nand speicher, von denen ich mir erhoffte, dass sie mich von den SD-Karten befreien.
Das alles führte dazu, dass ich neben meinem BananaPi jetzt auch einen gebrauchten Cubietruck aka Cubiaboard 3 besitze. Nachdem ich sogar vom Verkäufer nicht viel Gutes über das System gehört habe – vonwegen kleine Community bzw. wenig Pakete – habe ich das Teil trotzdem gekauft 😉
Das Bizarre daran ist, dass das Cubieboard 3 die Platte noch ordentlich über SATA anbindet und das neuere Cubieboard 5 blöderweise über USB. D.h. das neuere Board ist schnarchlahm an der Stelle, weshalb ich die alte Version bevorzuge. Doch an dieser Stelle möchte ich warnen: nach meinem aktuellen Kenntnisstand (Oktober 2016) kann man den NAND-Speicher nicht benutzen, sofern man einen modernen Kernel verwenden möchte. Der gelieferte SunXi Kernel ist Version 3.14 – einige Module/Treiber die ich jedoch benötige, brauchen einen neueren Kernel. D.h. der NAND-Vorteil fällt somit weg, weil er einfach nicht mehr nutzbar ist.
Bevor ich mich an diese Anleitung gemacht habe, habe ich noch mein Glück mit Gentoo probiert. Das Debian Repository hat leider nicht die von mir gewünschten VDR-Pakete parat gehabt, sodass ich dachte, alles selbst zu kompilieren sei eine gute Idee. Im Grunde ist sie das immernoch, leider habe ich vergessen, wie lange das alles dauert – auf ARM. Daher bin ich wieder zurück auf Arch für dieses Anleitung, möchte an dieser Stelle aber noch Jens-Sperling und seinen Blog erwähnen, mit dessen Hilfe es sehr einfach ist, schnell ein Gentoo am laufen zu haben. An dieser Stelle noch von mir ein Tipp: NTP sollte installiert werden, meine Netzwerkkarte kam leider nicht up, weil die Zeit auf dem Truck nicht stimmte. Und „bevor man´s von Hand macht, automatisiert man´s lieber“. Tja und das NTP-Paket zu bauen brauchte eine enorm lange Zeit, sodass ich mir wieder dachte, doch lieber zurück zu Arch.
Anyway, wer Gentoo betreiben möchte, dem lege ich diese Seiten hier ans Herz:
https://www.robert-sperling.de/de/cubietruck-gentoo-linux-mit-kernel-4-0/
Wer das ganze mit Arch-Linux betreiben will, findet bei Tobis Blog auch eine gute Anlaufstelle, um die Grundinstallation durch zu bringen:
Grundinstallation Archlinux cubietruck (Teil 1): Zielsetzung und erster Start
Da ich derzeit leider keine Satschüssel habe und in meiner Wohnung nur Kabel vorhanden ist, baue ich eine DVB-C Variante. Im Grunde kann man aber einfach den USB-Receiver Stick austauschen und schon hat man ein DVB-S2 Modell.
Was habe ich verwendet:
- Cubietruck
- Gehäuse
- 2.5″ SATA Festplatte
- Technotrend TVStick CT2-4400
Nachem alles zusammengebaut ist, geht´s erstmal daran, Arch Linux auf dem Cubietruck zu installieren.
Abschnitt 1: Grundinstallation Arch Linux auf dem Cubietruck
Bis ich diesen Abschnitt angehe und mehrfach überarbeite verweise ich auf den oben bereits empfohlenen Link zu Tobis Blog.
Meine Bashhistory hierzu beinhaltet noch die folgenden Einträge (wie gesagt, bis ich das überarbeitet habe gibt es eine gute Anleitung in Tobis Blog):
history: wget wget http://os.archlinuxarm.org/os/ArchLinuxARM-armv7-latest.tar.gz fdisk /dev/mmcblk0 dd if=/dev/zero of=/dev/mmcblk0 dd if=/dev/zero of=/dev/mmcblk0 bs=1M count=8fdisk /dev/mmcblk0 mkfs.ext4 -O ^metadata_csum,^64bit /dev/mmcblk0p1 mkfs.ext4 /dev/mmcblk0p1 mkdir mnt mount /dev/mmcblk0p1 mnt cd mnt/ tar -C -xpf ../ArchLinuxARM-armv7-latest.tar.gz tar -xpf ../ArchLinuxARM-armv7-latest.tar.gz ls cd .. ls sync wget http://os.archlinuxarm.org/os/sunxi/boot/cubietruck/u-boot-sunxi-with-spl.bin dd if=u-boot-sunxi-with-spl.bin of=/dev/mmcblk0 bs=1024 seek=8 ls wget http://os.archlinuxarm.org/os/sunxi/boot/cubietruck/boot.scr -O mnt/boot/boot.scr cd mnt/ ls cd boot/ ls cd .. cd .. umount mnt/ sync reboot
Abschnittt 2: VDR und Plugins auf dem Cubietruck kompilieren
An dieser Stelle möchte ich mich erstmal bei Christopher a.k.a Copperhead aus dem VDR-Portal Forum bedanken. Für Arch Linux macht er mit seinem Repository VDR4Arch einen super Job!
Genau hier wollen wir uns nun auch für den ARM-Port bedienen. Dazu bieten sich 2 Varianten an: Die einfache Variante ist, man baut erst das Tool „repomake“ und lässt damit die gewünschten Pakete erzeugen. Das geht weitestgehend automatisch. Die andere Methode baut die einzelnen Pakete „von Hand“, wie bei Paketen aus dem AUR.
Als Basis verwende ich einen nackten VDR, den ich über das Web per Live-Plugin erreichbar mache. Desweiteren packe ich das VSNI Plugin dazu, damit der VDR den Fernsehstream auch über das Netztwerk bequem in z.B. Kodi auf dem Fire-TV abliefern kann. So kann der Cubie im Schrank verschwinden.
Doch nun zu den nötigen Schritten:
1. Pakete installieren, die zum Bauen benötigt werden.
2. Github Repository auschecken
git clone https://github.com/CReimer/vdr4arch.git
Ab hier kann man sich überlegen wie man vorgeht. Möchte man öfters neue Pakete bauen, würde ich Repomake nutzen.
A Variante Repomake (Beschreibung unfertig):
- Repomake herunterladen (siehe: http://downloads.tuxfamily.org/repomake/) oder direkt installieren per:
pacman -U http://downloads.tuxfamily.org/repomake/repo-make-1.1.0-1-any.pkg.tar.xz - Im ausgecheckten GithubRepository von Copperhead/CReimer ‚repomake‘ ausführen… fehlende Abhängigkeiten bauen, wieder ausführen.
- Pakete installieren mittels „pacman -U
“
B Variante Selbstgebaut:
- Der Vorteil ist, dass hier auf der schwachen Hardware nichts gebaut wird, was wir nicht brauchen. Umgekehrt ist es etwas unbequemer, denn wir gehen in die jeweiligen Unterverzeichnisse und führen makepkg aus. Hier mal ein Beispiel für das Plugin Streamdev-Server und Client:
cd vdr4arch/plugins/vdr-streamdev/ makepkg
- wir installieren die enstandenen Pakete als root mittels „pacman -U <paketname>“ – bei mir waren das diese hier:
vdr 2.2.0-3
vdr-live 1:0.3.0_22_g869ac69-2
vdr-streamdev-server 0.6.1.r24.g7b17f77-1
vdr-vnsiserver 2:1.5.0-2
vdr4arch-keyring 20130219-1
vdradmin-am 3.6.10-5
Abschnitt 3: Firmware besorgen und bereitstellen
Bei mir funktionierte die Firmware von palosaari.fi, die Firmware vom OpenELEC Githubaccount wollte nicht laufen. Die Firmware muss unter /lib/firmware bereitliegen.
cd /lib/firmware wget http://palosaari.fi/linux/v4l-dvb/firmware/Si2168/Si2168-A20/32e06713b33915f674bfb2c209beaea5/dvb-demod-si2168-a20-01.fw wget http://palosaari.fi/linux/v4l-dvb/firmware/Si2168/Si2168-B40/4.0.25/dvb-demod-si2168-b40-01.fw wget http://palosaari.fi/linux/v4l-dvb/firmware/Si2158/Si2158-A20/0cba7ce61c1411cbe7f22c0746e24e33/dvb-tuner-si2158-a20-01.fw
Abschnitt 4: VDR konfigurieren
more to come…