VDR4Arch
Inhaltsverzeichnis |
Allgemein
VDR4Arch ist ein fertiger Paketsatz für VDR auf Arch Linux. Höchstes Ziel ist es dabei, die Regeln des Arch Linux DeveloperWikis einzuhalten.
Basiseinrichtung
Eine ausführliche Anleitung zur Grundinstallation von Arch Linux gibt es auf der Arch Linux-Wikiseite. Hier nur ein paar Schritte, die neben den x86-Systemen auch für die ARM-Systeme wichtig sind.
Hostnamen setzen (z.B. "vdr01")
# echo vdr01 > /etc/hostname
Zeitzone festlegen
# ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime
# nano /etc/locale.gen
Von 'de_DE.UTF-8' das Kommentarzeichen entfernen
Sprachen generieren
# locale-gen
Systemsprache setzen
# echo 'LANG=de_DE.UTF-8' > /etc/locale.conf
Tastaturlayout dauerhaft auf Deutsch stellen.
# echo 'KEYMAP=de' > /etc/vconsole.conf
Root-Passwort setzen (Auf x86-Systemen gibt es keines, auf ARM-Systemen ist das Default 'root')
# passwd
Und das System booten
# reboot
Installation VDR4Arch
Im neu gebooteten System installieren wir zuerst die vdr4arch-keyring
# pacman -S wget # wget http://creimer.net/vdr4arch/repo/vdr4arch-keyring-20130219-1-any.pkg.tar.xz # pacman -U vdr4arch-keyring-20130219-1-any.pkg.tar.xz
Es könnte vorallem auf ARM-Systemen passieren, dass noch kein Pacman-Keyring angelegt ist. Man wird dann aufgefordert
# pacman-key --init # pacman-key --populate vdr4arch
auszuführen. Es ist dabei ratsam haveged, einen Entropy Harvesting Daemon, laufen zu lassen. Das beschleunigt den Vorgang enorm. Dieser Daemon läuft auf ARM-Systemen standardmäig und sollte nachdem er nicht mehr benötigt wird deaktiviert werden.
# systemctl disable haveged
Anschließend fügt man das Repository an das Ende von /etc/pacman.conf
[vdr4arch] Server = http://creimer.net/vdr4arch/repos/$repo/os/$arch
Dann aktualisieren wir die lokale Paketdatenbank
# pacman -Sy
Über
# pacman -Sl vdr4arch
kann man die verfügbaren Pakete auflisten.
Weitere Einzelheiten können auch in der Paketübersicht nachgelesen werden.
Ausgabe VA-API/VDPAU
Vorbereitung
Sollte der X-Server nicht schon auf eine andere Weise gestartet werden, muss der Start des X-Servers aktiviert werden. Dazu benötigen wir xlogin.
# pacman -S xlogin
Dieses aktivieren wir über
# systemctl enable xlogin@vdr
Intel(VA-API)
Zuerst muss der Treiber installiert werden:
pacman -S xf86-video-intel
Danach wird der X-Server an die Ausgabe mit dem VDR angepasst werden. Dazu muss eine Konfigurationsdatei erstellt werden
# nano /etc/X11/xorg.conf.d/20-vdr.conf
mit folgendem Inhalt
Section "Screen" Identifier "Screen0" Device "Device0" Monitor "HDMI1" DefaultDepth 24 SubSection "Display" Depth 24 Modes "1920x1080_50" "1920x1080_60" "1920x1080_24" EndSubSection EndSection Section "Monitor" Identifier "HDMI1" Modeline "1920x1080_24" 74.230 1920 2560 2604 2752 1080 1084 1089 1125 +hsync +vsync Modeline "1920x1080_50" 148.500 1920 2448 2492 2640 1080 1084 1089 1125 +hsync +vsync Modeline "1920x1080_60" 148.500 1920 2008 2056 2200 1080 1084 1089 1125 +hsync +vsync EndSection Section "Extensions" Option "Composite" "Disable" EndSection
Damit die Tonausgabe auch funktioniert legen stellen wir das Standard Device von ALSA in der /etc/asound.conf um.
Bei Intel sollte grundsätzlich das hier funktionieren.
pcm.!default { type hw card PCH device 7 }
Sollte wider erwarten nicht funktionieren, lohnt sich ein Blick in die Deviceliste.
Dafür installieren wir alsa-utils
# pacman -S alsa-utils
und geben die Deviceliste mit
# aplay -l
aus.
**** List of PLAYBACK Hardware Devices **** card 0: PCH [HDA Intel PCH], device 0: ALC662 rev1 Analog [ALC662 rev1 Analog] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1] Subdevices: 1/1 Subdevice #0: subdevice #0
Intel hat in den neueren Treiberversionen einen unschönen Grauschleier über dem Bild. Um diesen wegzubekommen installieren wir xorg-xrandr
pacman -S xorg-xrandr
und erstellen die Datei /home/vdr/.xinitrc
#!/usr/bin/bash xrandr --output HDMI1 --set "Broadcast RGB" "Full"
NVidia(VDPAU)
Zuerst muss der Treiber installiert werden
pacman -S nvidia
Danach wird der X-Server an die Ausgabe mit dem VDR angepasst werden. Dazu muss eine Konfigurationsdatei erstellt werden
# nano /etc/X11/xorg.conf.d/20-vdr.conf
mit folgendem Inhalt
Section "Screen" Identifier "Screen0" Device "Device0" Monitor "Monitor0" DefaultDepth 24 Option "ExactModeTimingsDVI" "True" Option "FlatPanelProperties" "Dithering = disabled" Option "NoLogo" "True" SubSection "Display" Depth 24 Modes "1920x1080_50" "1920x1080_60_0" "1920x1080_24" EndSubSection EndSection
Dieses Grundgerüst muss dann in Ausnahmefällen noch etwas erweitert werden:
Option "DPI" "100x100" Option "UseEdidDpi" "False"
Für Displays mit falschen DPI-Angaben
Option "CustomEDID" "DFP-0:/etc/X11/edid.bin"
Zum Einlesen einer edid.bin
Eine edid.bin erstellt man so:
# X -verbose 6 > /tmp/xlog 2>&1
Muss nach etwa 5 Sekunden mit Strg + C abgebrochen werden
# nvidia-xconfig --extract-edids-from-file=/tmp/xlog --extract-edids-output-file=/etc/X11/edid.bin
Damit die Tonausgabe auch funktioniert legen stellen wir das Standard Device von ALSA in der /etc/asound.conf um.
Bei NVidia Grafikkarten sollte grundsätzlich das hier funktionieren.
pcm.!default { type hw card NVidia device 7 }
Sollte wider erwarten nicht funktionieren, lohnt sich ein Blick in die Deviceliste.
Dafür installieren wir alsa-utils
# pacman -S alsa-utils
und geben die Deviceliste mit
# aplay -l
aus.
**** List of PLAYBACK Hardware Devices **** card 0: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: NVidia [HDA NVidia], device 7: HDMI 1 [HDMI 1] Subdevices: 0/1 Subdevice #0: subdevice #0
Plugins
Softhddevice
# pacman -S vdr-softhddevice
Und über einen entsprechenden Symlink aktivieren
# cd /etc/vdr/conf.d # ln -s ../conf.avail/50-softhddevice.conf .
Xineliboutput (eigenständiger VDR)
# pacman -S vdr-xineliboutput
Und über einen entsprechenden Symlink aktivieren
# cd /etc/vdr/conf.d # ln -s ../conf.avail/50-xineliboutput.conf .
Setze --local=sxfe (oder --local=fbfe) und --remote=none in der /etc/vdr/conf.d/50-xineliboutput.conf
Xineliboutput (Client/Server)
Server
# pacman -S vdr-xineliboutput
Und über einen entsprechenden Symlink aktivieren
# cd /etc/vdr/conf.d # ln -s ../conf.avail/50-xineliboutput.conf .
Setze --local=none und --remote=3789 in der /etc/vdr/conf.d/50-xineliboutput.conf
Client
Installiere die Xineliboutput Frontends
# pacman -S xineliboutput-frontends
Um vdr-sxfe zu starten:
# vdr-sxfe <IP-Adresse des Servers>
Um vdr-fbfe zu starten:
# vdr-fbfe <IP-Adresse des Servers>
Ausgabe über Full-Featured
# pacman -S vdr
(vdr-dvbsddevice und vdr-dvbhddevice sind Bestandteil des vdr Paketes)
Und über einen entsprechenden Symlink aktivieren
# cd /etc/vdr/conf.d # ln -s ../conf.avail/50-dvbhddevice.conf .
oder
# ln -s ../conf.avail/50-dvbsddevice.conf .
Für die Technotrend S2-6400 muss natürlich noch der Treiber installiert werden
# pacman -S media-build-experimental-dkms
und mit
# modprobe saa716x_ff
geladen werden. Die Installation eines DKMS Treibers dauert einige Zeit, außerdem ist für den späteren sicheren Betrieb ein Daemon notwendig
# systemctl enable dkms # systemctl start dkms
Die eigentliche Konfiguration läuft über /etc/vdr/conf.avail bzw. über /etc/vdr/conf.d VDR spezifische Einstellungen findet man in /etc/vdr/conf.d/10-vdr.conf
Plugins legen eine Config in /etc/vdr/conf.avail ab und um es zu aktivieren muss ein Symlink nach /etc/vdr/conf.d erstellt werden. Plugins werden in alphabetischer Reihenfolge geladen.
Damit auch Tastatureingaben im VDR ankommen, muss die Datei /etc/systemd/system/vdr.service.d/fullfeatured.conf angelegt werden.
[Unit] Conflicts=getty@tty8.service [Service] StandardInput=tty TTYPath=/dev/tty8 ExecStartPre=/usr/bin/chvt 8
Jetzt noch den VDR für den Autostart aktivieren
# systemctl enable vdr
Und schließlich starten.
# systemctl daemon-reload # systemctl start vdr
Ausgabe des Raspberry Pi
# pacman -S vdr-rpihddevice
Und über einen entsprechenden Symlink aktivieren
# cd /etc/vdr/conf.d # ln -s ../conf.avail/50-rpihddevice.conf .
Die eigentliche Konfiguration läuft über /etc/vdr/conf.avail bzw. über /etc/vdr/conf.d VDR spezifische Einstellungen findet man in /etc/vdr/conf.d/10-vdr.conf
Plugins legen eine Config in /etc/vdr/conf.avail ab und um es zu aktivieren muss ein Symlink nach /etc/vdr/conf.d erstellt werden. Plugins werden in alphabetischer Reihenfolge geladen.
Damit auch Tastatureingaben im VDR ankommen, muss die Datei /etc/systemd/system/vdr.service.d/rpi.conf angelegt werden.
[Unit] Conflicts=getty@tty8.service [Service] StandardInput=tty TTYPath=/dev/tty8 ExecStartPre=/usr/bin/chvt 8 ExecStartPre=/usr/bin/setterm -clear -cursor off
Jetzt noch den VDR für den Autostart aktivieren
# systemctl enable vdr
Und schließlich starten.
# systemctl daemon-reload # systemctl start vdr
Optionale Einstellungen
Auf das Netzwerk warten
Für den Fall, dass ein Plugin nicht dazu in der Lage ist, selbstständig auf eine Netzwerkverbindung zu warten sollte folgendes geändert werden.
In /etc/systemd/system/vdr.service.d die Datei 01-wait-for-net.conf angelegt werden.
# mkdir -p /etc/systemd/system/vdr.service.d # nano /etc/systemd/system/vdr.service.d/01-wait-for-net.conf
[Unit] After=network-online.target Wants=network-online.target
Zusätzlich muss die Netzwerkeinstellung überarbeitet werden. Es hat sich gezeigt, das nicht alle netzwerbereitstellenden Daemons dazu in der Lage sind zu erkennen, wann das Netzwerk verfügbar ist. Dadurch hat das network-online.target keine Wirkung.
Sicher funktioniert es mit systemd-networkd oder NetworkManager
Es ist also empfehlenswert die Netzwerkverbindung auf systemd-networkd umzustellen und folgenden Befehl auszuführen.
systemctl enable systemd-networkd-wait-online
Dazu gibt es eine sehr umfangreiche Erklärung im Arch Wiki
Für NetworkManager ist es dieser Befehl
systemctl enable NetworkManager-wait-online
Sicherer Shutdown über den Powerbutton
Der Powerbutton wird normalerweise von systemd beobachtet. Systemd löst beim Drücken den Shutdown aus. Das wäre alles kein Problem, wenn da nicht der VDR wäre. Der Timer wird nur gespeichert, wenn der VDR den Shutdown selbst auslöst.
Im Fall VDR löst den Shutdown aus: /usr/lib/vdr/bin/shutdown.sh wird gestartet, diese setzt den Wakeup-Timer und löst den Shutdown aus. Im Fall systemd löst den Shutdown aus: VDR bekommt von systemd ein SIGTERM gesendet, der VDR beendet sich und systemd fährt mit dem Shutdown fort (Der Wakeup-Timer wurde nicht gesetzt).
vdrpbd verbietet systemd auf den Powerbutton zu reagieren. Stattdessen wartet vdrpbd auf den Tastendruck und teilt dem VDR über svdrpsend mit, dass der Powerbutton gedrückt wurde.
Mit
# pacman -S vdrpbd
wird vdrpbd installiert und über
# systemctl enable vdrpbd
und
# systemctl start vdrpbd
wird der Daemon aktiviert und gestartet.
VDR4Arch-Testing
[vdr4arch-testing] Server = http://creimer.net/vdr4arch/repos/$repo/os/$arch [vdr4arch] Server = http://creimer.net/vdr4arch/repos/$repo/os/$arch
Wechsel zurück von VDR4Arch-Testing nach VDR4Arch
Zuerst muss
[vdr4arch-testing] Server = http://creimer.net/vdr4arch/repos/$repo/os/$arch
aus /etc/pacman.conf entfernt werden
Der eigentliche Downgrade läuft über
pacman -Syuu (Achtung zweimal "u")
Selbst kompilieren
In einer Archlinux-Installation, aufgesetzt auf einer virtuellen Maschine folgendes ausführen.
Installation der Entwicklungsumgebung
# pacman -S base-devel
repo-make installieren
# pacman -U http://downloads.tuxfamily.org/repomake/repo-make-1.1.0-1-any.pkg.tar.xz
PKGBUILDs auschecken
# git clone https://github.com/CReimer/vdr4arch.git # cd vdr4arch
Automatischen Buildvorgang starten
# repo-make
Die Pakete landen anschließend im neuen Verzeichnis "repo"