VDR4Arch

Aus VDR Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Änderungen vom Wiki aus dem Github-Projekt hinzugefügt.)
(Mit Github-Wiki synchronisiert)
Zeile 39: Zeile 39:
 
=====Intel(VA-API)=====
 
=====Intel(VA-API)=====
  
Zuerst muss der X-Server an die Ausgabe mit dem VDR angepasst werden. Dazu muss eine Konfigurationsdatei erstellt werden
+
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
 
  # nano /etc/X11/xorg.conf.d/20-vdr.conf
 
mit folgendem Inhalt
 
mit folgendem Inhalt
Zeile 106: Zeile 109:
 
=====NVidia(VDPAU)=====
 
=====NVidia(VDPAU)=====
  
Zuerst muss der X-Server an die Ausgabe mit dem VDR angepasst werden. Dazu muss eine Konfigurationsdatei erstellt werden
+
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
 
  # nano /etc/X11/xorg.conf.d/20-vdr.conf
 
mit folgendem Inhalt
 
mit folgendem Inhalt
Zeile 168: Zeile 174:
 
=====Softhddevice=====
 
=====Softhddevice=====
  
  # pacman -S nvidia vdr-softhddevice
+
  # pacman -S vdr-softhddevice
  
 
Und über einen entsprechenden Symlink aktivieren
 
Und über einen entsprechenden Symlink aktivieren
Zeile 176: Zeile 182:
  
 
=====Xineliboutput (eigenständiger VDR)=====
 
=====Xineliboutput (eigenständiger VDR)=====
  # pacman -S nvidia vdr-xineliboutput
+
  # pacman -S vdr-xineliboutput
  
 
Und über einen entsprechenden Symlink aktivieren
 
Und über einen entsprechenden Symlink aktivieren
Zeile 187: Zeile 193:
 
=====Xineliboutput (Client/Server)=====
 
=====Xineliboutput (Client/Server)=====
 
======Server======
 
======Server======
  # pacman -S nvidia vdr-xineliboutput
+
  # pacman -S vdr-xineliboutput
  
 
Und über einen entsprechenden Symlink aktivieren
 
Und über einen entsprechenden Symlink aktivieren
Zeile 262: Zeile 268:
 
  [Unit]
 
  [Unit]
 
  After=network-online.target
 
  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.
 
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.
  
Es ist also empfehlenswert die Netzwerkverbindung auf systemd-networkd umzustellen. Dazu gibt es eine sehr umfangreiche Erklärung im [https://wiki.archlinux.org/index.php/Systemd-networkd#Basic_DHCP_network Arch Wiki]
+
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 [https://wiki.archlinux.org/index.php/Systemd-networkd#Basic_DHCP_network Arch Wiki]
 +
 
 +
Für NetworkManager ist es dieser Befehl
 +
 
 +
systemctl enable NetworkManager-wait-online
  
 
====Sicherer Shutdown über den Powerbutton====
 
====Sicherer Shutdown über den Powerbutton====
Zeile 283: Zeile 300:
 
wird der Daemon aktiviert und gestartet.
 
wird der Daemon aktiviert und gestartet.
  
==VDR4Arch-Next (VDR 2.1.x)==
+
==VDR4Arch-Testing==
Für die VDR-Entwicklerversion ist ein zusätzliches Repository nötig.
+
  
  [vdr4arch-next]
+
  [vdr4arch-testing]
 
  Server = http://creimer.net/vdr4arch/repos/$repo/os/$arch
 
  Server = http://creimer.net/vdr4arch/repos/$repo/os/$arch
 
   
 
   
Zeile 292: Zeile 308:
 
  Server = http://creimer.net/vdr4arch/repos/$repo/os/$arch
 
  Server = http://creimer.net/vdr4arch/repos/$repo/os/$arch
  
 
+
====Wechsel zurück von VDR4Arch-Testing nach VDR4Arch====
Das normale vdr4arch Repository muss unbedingt (wie oben gezeigt) in der pacman.conf erhalten bleiben, da nur die veränderten Pakete im Next Repository landen.
+
 
+
====Wechsel zurück von VDR4Arch-Next nach VDR4Arch====
+
Dieser Schritt ist grundsätzlich nicht zu empfehlen. Will man es trotzdem unbedingt machen sind einige Schritte dazu notwendig.
+
  
 
Zuerst muss
 
Zuerst muss
  
  [vdr4arch-next]
+
  [vdr4arch-testing]
 
  Server = http://creimer.net/vdr4arch/repos/$repo/os/$arch
 
  Server = http://creimer.net/vdr4arch/repos/$repo/os/$arch
  
 
aus /etc/pacman.conf entfernt werden
 
aus /etc/pacman.conf entfernt werden
  
Danach muss der Paketspeicher von pacman geleert werden.
+
Der eigentliche Downgrade läuft über
 
+
pacman -Sc --noconfirm
+
 
+
Dies ist notwendig um mögliche Konflikte durch gleichnamige Pakete zu vermeiden.
+
Ein Beispiel
+
 
+
Liegt in VDR4Arch-Stable das Paket vdr-aaa-1.0-1-x86_64.pkg.tar.xz [kompiliert gegen VDR 2.0.x] liegt in VDR4Arch-Next das entsprechende Gegenstück vdr-aaa-1.0-2-x86_64.pkg.tar.xz [Kompiliert gegen VDR 2.1.x].
+
Wird in VDR4Arch-Stable die pkgrel hochgezählt, hat sie genau den Paketnamen, den das Paket vorher in VDR4Arch-Next hatte (vdr-aaa-1.0-2-x86_64.pkg.tar.xz [Kompiliert gegen VDR 2.0.x]).
+
 
+
Wechselt man in dieser Situation zurück zu VDR4Arch-Stable liegt das gleichnamige Paket aus VDR4Arch-Next noch im Paketspeicher. Dieses ist allerdings nicht gegen den VDR in VDR4Arch-Stable kompiliert und dadurch wird der Downgrade mit einem Fehler abgebrochen.
+
 
+
Ist der Paketspeicher geleert wird über
+
 
+
 
  pacman -Syuu (Achtung zweimal "u")
 
  pacman -Syuu (Achtung zweimal "u")
 
der eigentliche Downgrade ausgelöst.
 
 
 
Abschließend muss der Paketspeicher nochmal geleert werden
 
pacman -Sc --noconfirm
 
  
 
==Selbst kompilieren==
 
==Selbst kompilieren==

Version vom 18. Oktober 2014, 19:02 Uhr

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.

Installation

Diese Installationsanleitung setzt direkt nach der Grundinstallation aus der Arch Linux-Wikiseite an. Solltest du jetzt noch keine lauffähige Arch Linux Grundinstallation haben beginne bitte hier

Im neu gebooteten System installieren wir zuerst die vdr4arch-keyring

# wget http://creimer.net/vdr4arch/repo/vdr4arch-keyring-20130219-1-any.pkg.tar.xz
# pacman -U vdr4arch-keyring-20130219-1-any.pkg.tar.xz

und fügen anschließend 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 technotrend-dvb-drivers

und mit

# modprobe saa716x_ff

geladen werden. Nach einem Neustart übernimmt das natürlich udev.

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
Hinweis
Hinweis

Ungetestet: Hinweis bitte entfernen, wenn es funktioniert


Jetzt noch den VDR für den Autostart aktivieren

# systemctl enable vdr

Und schließlich starten.

# 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"