VDR4Arch

Aus VDR Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
K (Ausgabe über Grafikkarte)
 
(16 dazwischenliegende Versionen von einem Benutzer werden nicht angezeigt)
Zeile 3: Zeile 3:
 
VDR4Arch ist ein fertiger Paketsatz für VDR auf Arch Linux. Höchstes Ziel ist es dabei, die Regeln des [https://wiki.archlinux.org/index.php/DeveloperWiki Arch Linux DeveloperWikis] einzuhalten.
 
VDR4Arch ist ein fertiger Paketsatz für VDR auf Arch Linux. Höchstes Ziel ist es dabei, die Regeln des [https://wiki.archlinux.org/index.php/DeveloperWiki Arch Linux DeveloperWikis] einzuhalten.
  
==Installation==
+
==Basiseinrichtung==
Diese Installationsanleitung setzt direkt nach der Grundinstallation aus der [[Arch-Linux| Arch Linux-Wikiseite]] an. Solltest du jetzt noch keine lauffähige Arch Linux Grundinstallation haben beginne bitte [[Arch-Linux#Installation_des_Arch_Linux|hier]]
+
Eine ausführliche Anleitung zur Grundinstallation von Arch Linux gibt es auf der [[Arch-Linux| 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 -sf /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
 
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
 
  # wget http://creimer.net/vdr4arch/repo/vdr4arch-keyring-20130219-1-any.pkg.tar.xz
 
  # pacman -U 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
+
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]
 
  [vdr4arch]
SigLevel = PackageRequired
+
  Server = http://creimer.net/vdr4arch/repos/$repo/os/$arch
  Server = http://creimer.net/vdr4arch/repos/stable
+
  
Und aktualisieren die lokale Paketdatenbank
+
Dann aktualisieren wir die lokale Paketdatenbank
 
  # pacman -Sy
 
  # pacman -Sy
  
Zeile 25: Zeile 61:
 
Weitere Einzelheiten können auch in der [[VDR4Arch/Paketübersicht|Paketübersicht]] nachgelesen werden.<br/>
 
Weitere Einzelheiten können auch in der [[VDR4Arch/Paketübersicht|Paketübersicht]] nachgelesen werden.<br/>
  
===Ausgabe über Grafikkarte===
+
===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
  
Zuerst muss der X-Server an die Ausgabe mit dem VDR angepasst werden. Dazu muss eine Konfigurationsdatei erstellt werden
+
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 57: Zeile 179:
 
  # nvidia-xconfig --extract-edids-from-file=/tmp/xlog --extract-edids-output-file=/etc/X11/edid.bin
 
  # nvidia-xconfig --extract-edids-from-file=/tmp/xlog --extract-edids-output-file=/etc/X11/edid.bin
  
 
Außerdem muss der Start des X-Servers aktiviert werden. Dazu benötigen wir xlogin.
 
 
# pacman -S xlogin
 
 
Dieses aktivieren wir über
 
 
# systemctl enable xlogin@vdr
 
  
 
Damit die Tonausgabe auch funktioniert legen stellen wir das Standard Device von ALSA in der /etc/asound.conf um.
 
Damit die Tonausgabe auch funktioniert legen stellen wir das Standard Device von ALSA in der /etc/asound.conf um.
Zeile 76: Zeile 190:
 
  }
 
  }
  
Wird keine NVidia Grafikkarte benutzt, oder es sollte wider erwarten nicht funktionieren, lohnt sich ein Blick in die Deviceliste.
+
Sollte wider erwarten nicht funktionieren, lohnt sich ein Blick in die Deviceliste.
  
 
Dafür installieren wir alsa-utils
 
Dafür installieren wir alsa-utils
Zeile 93: Zeile 207:
 
   Subdevice #0: subdevice #0
 
   Subdevice #0: subdevice #0
  
 +
====Plugins====
  
====Softhddevice====
+
=====Softhddevice=====
  
  # pacman -S nvidia vdr-softhddevice
+
  # pacman -S vdr-softhddevice
  
 
Und über einen entsprechenden Symlink aktivieren
 
Und über einen entsprechenden Symlink aktivieren
Zeile 103: Zeile 218:
 
  # ln -s ../conf.avail/50-softhddevice.conf .
 
  # ln -s ../conf.avail/50-softhddevice.conf .
  
====Xineliboutput (eigenständiger VDR)====
+
=====Xineliboutput (eigenständiger VDR)=====
{{Box Hinweis|Nur aus der Erinnerung aufgeschrieben. Noch ungetestet}}
+
# pacman -S vdr-xineliboutput
  
  # pacman -S nvidia 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
 
Und über einen entsprechenden Symlink aktivieren
Zeile 113: Zeile 237:
 
  # ln -s ../conf.avail/50-xineliboutput.conf .
 
  # ln -s ../conf.avail/50-xineliboutput.conf .
  
====Xineliboutput (Client/Server)====
+
Setze --local=none und --remote=3789 in  der /etc/vdr/conf.d/50-xineliboutput.conf
{{Box Hinweis|Client/Server Betrieb mit Xineliboutput ist in VDR4Arch im Moment noch nicht vorgesehen}}
+
 
 +
======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===
 
===Ausgabe über Full-Featured===
  # pacman -S nvidia vdr
+
  # pacman -S vdr
 
(vdr-dvbsddevice und vdr-dvbhddevice sind Bestandteil des vdr Paketes)
 
(vdr-dvbsddevice und vdr-dvbhddevice sind Bestandteil des vdr Paketes)
  
Zeile 128: Zeile 263:
  
 
Für die Technotrend S2-6400 muss natürlich noch der Treiber installiert werden
 
Für die Technotrend S2-6400 muss natürlich noch der Treiber installiert werden
  # pacman -S v4l-dvb-saa716x
+
  # pacman -S media-build-experimental-dkms
 
und mit
 
und mit
 
  # modprobe saa716x_ff
 
  # modprobe saa716x_ff
 
geladen werden.
 
geladen werden.
Nach einem Neustart übernimmt das natürlich udev.
+
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
 
Die eigentliche Konfiguration läuft über /etc/vdr/conf.avail bzw. über /etc/vdr/conf.d
Zeile 151: Zeile 289:
 
  ExecStartPre=/usr/bin/chvt 8
 
  ExecStartPre=/usr/bin/chvt 8
  
{{Box Hinweis|Ungetestet: Hinweis bitte entfernen, wenn es funktioniert}}
+
Jetzt noch den VDR für den Autostart aktivieren
 +
# systemctl enable vdr
  
Jetzt noch den VDR in für den Autostart aktivieren
+
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.
 +
 
 +
 
 +
In der Datei /boot/config.txt sollte noch nach gpu_mem gesucht werden. Das steht standardmäßig auf 64MB, was für unsere Zwecke zu wenig ist.
 +
 
 +
Im offiziellen Kodi-Wiki werden 128MB für den RaspberryPi 1 und 256MB für den RaspberryPi 2 vorgeschlagen
 +
 
 +
gpu_mem=256
 +
 
 +
Wenn wir schon an der config.txt beschäftigt sind können wir auch gleich die Lizenzcodes für die Codecs eingeben.
 +
 
 +
decode_MPG2=0x12345678
 +
decode_WVC1=0x12345678
 +
 
 +
(Das sind nur Beispieleinträge eure eigenen Lizenzcodes könnt ihr [http://www.raspberrypi.com/license-keys/ hier] kaufen.)
 +
 
 +
 
 +
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 all --cursor off
 +
 
 +
Jetzt noch den VDR für den Autostart aktivieren
 
  # systemctl enable vdr
 
  # systemctl enable vdr
  
 
Und schließlich starten.
 
Und schließlich starten.
 +
# systemctl daemon-reload
 
  # systemctl start vdr
 
  # systemctl start vdr
  
Zeile 169: Zeile 353:
  
 
  [Unit]
 
  [Unit]
  After=network.target
+
  After=network-online.target
 +
Wants=network-online.target
  
Zusätzlich muss die Netzwerkeinstellung überarbeitet werden. Dazu muss zuerst der standardmäßig startende dhcpcd aus dem Autostart entfernt werden.
+
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.
# systemctl disable dhcpcd
+
  
Danach müssen wir herausfinden, wie das Netzwerkgerät heißt
+
Sicher funktioniert es mit systemd-networkd oder NetworkManager
  
# ip addr
+
Es ist also empfehlenswert die Netzwerkverbindung auf systemd-networkd umzustellen und folgenden Befehl auszuführen.
  
  1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
+
  systemctl enable systemd-networkd-wait-online
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
+
    inet 127.0.0.1/8 scope host lo
+
      valid_lft forever preferred_lft forever
+
    inet6 ::1/128 scope host
+
      valid_lft forever preferred_lft forever
+
2: '''enp2s0''': <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
+
    link/ether 00:24:1d:d5:c1:42 brd ff:ff:ff:ff:ff:ff
+
    inet 192.168.178.35/24 brd 192.168.178.255 scope global enp2s0
+
      valid_lft forever preferred_lft forever
+
    inet6 fd00::224:1dff:fed5:c142/64 scope global dynamic
+
      valid_lft 6790sec preferred_lft 3190sec
+
    inet6 fe80::224:1dff:fed5:c142/64 scope link
+
      valid_lft forever preferred_lft forever
+
  
In diesem Fall fügen wir den dhcpcd devicegebunden in den Autostart ein
+
Dazu gibt es eine sehr umfangreiche Erklärung im [https://wiki.archlinux.org/index.php/Systemd-networkd#Basic_DHCP_network Arch Wiki]
# systemctl enable dhcpcd@enp2s0
+
  
Beim nächsten Neustart wird jetzt so lange gewartet, bis die Verbindung tatsächlich etabliert ist und erst danach start der VDR.
+
Für NetworkManager ist es dieser Befehl
  
==VDR4Arch-Next (VDR 2.1.x)==
+
systemctl enable NetworkManager-wait-online
Für die VDR-Entwicklerversion ist ein zusätzliches Repository nötig.
+
  
[vdr4arch-next]
+
====Sicherer Shutdown über den Powerbutton====
SigLevel = PackageRequired
+
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.
Server = http://creimer.net/vdr4arch/repos/next
+
+
[vdr4arch]
+
SigLevel = PackageRequired
+
Server = http://creimer.net/vdr4arch/repos/stable
+
  
 +
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).
  
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.
+
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.
  
====Wechsel zurück von VDR4Arch-Next nach VDR4Arch====
+
Mit
Dieser Schritt ist grundsätzlich nicht zu empfehlen. Will man es trotzdem unbedingt machen sind einige Schritte dazu notwendig.
+
# pacman -S vdrpbd
 +
wird vdrpbd installiert und über
 +
# systemctl enable vdrpbd
 +
und
 +
# systemctl start vdrpbd
 +
wird der Daemon aktiviert und gestartet.
  
Zuerst muss
+
==Kodi==
 +
===Kodi aus dem VDR heraus starten===
 +
{{Box Hinweis|Mit dem externalplayer-Plugin bleibt der VDR hängen nachdem man aus Kodi zurückkommt. Daher wird hier der Weg über die commands.conf beschrieben}}
  
[vdr4arch-next]
+
Folgende Datei nach /usr/lib/vdr/start_kodi erstellen
  SigLevel = PackageRequired
+
  #!/bin/bash
  Server = http://creimer.net/vdr4arch/repos/next
+
  (
 +
  export DISPLAY=:0
 +
  svdrpsend remo off
 +
  svdrpsend plug graphlcd off
 +
  svdrpsend plug softhddevice deta
 +
 +
  kodi
 +
 +
  svdrpsend remo on
 +
  svdrpsend plug graphlcd on
 +
  svdrpsend plug softhddevice atta
 +
) > /dev/null 2>&1 &
 +
Die Freigabe des Displays (oben beispielhaft für graphlcd) funktioniert natürlich auch bei imolcd, lcdproc und targavfd
  
aus /etc/pacman.conf entfernt werden
+
Danach die /var/lib/vdr/commands.conf um folgenden Eintrag erweitern:
 +
Kodi: /usr/lib/vdr/start_kodi
 +
===VDR aus Kodi heraus starten===
 +
{{Box Hinweis|Im Aufbau}}
  
Danach muss der Paketspeicher von pacman geleert werden.
+
===Wakeup mit Kodi und VDR auf dem selben System===
 +
{{Box Hinweis|Im Aufbau}}
  
pacman -Sc --noconfirm
+
==VDR4Arch-Testing==
  
Dies ist notwendig um mögliche Konflikte durch gleichnamige Pakete zu vermeiden.
+
[vdr4arch-testing]
Ein Beispiel
+
Server = http://creimer.net/vdr4arch/repos/$repo/os/$arch
 +
 +
[vdr4arch]
 +
Server = http://creimer.net/vdr4arch/repos/$repo/os/$arch
  
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].
+
====Wechsel zurück von VDR4Arch-Testing nach VDR4Arch====
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.
+
Zuerst muss
  
Ist der Paketspeicher geleert wird über
+
[vdr4arch-testing]
 +
Server = http://creimer.net/vdr4arch/repos/$repo/os/$arch
  
pacman -Syuu (Achtung zweimal "u")
+
aus /etc/pacman.conf entfernt werden
  
der eigentliche Downgrade ausgelöst.
+
Der eigentliche Downgrade läuft über
 +
pacman -Syuu (Achtung zweimal "u")
  
 
==Selbst kompilieren==
 
==Selbst kompilieren==
In einer Archlinux-Installation aufgesetzt auf einer virtuellen Maschine folgendes ausführen.
+
In einer Archlinux-Installation, aufgesetzt auf einer virtuellen Maschine folgendes ausführen.
  
 
Installation der Entwicklungsumgebung
 
Installation der Entwicklungsumgebung
Zeile 259: Zeile 452:
  
 
[[Kategorie:VDR-Distributionen]]
 
[[Kategorie:VDR-Distributionen]]
 +
[[Kategorie:Arch-Linux]]

Aktuelle Version vom 15. November 2015, 13:37 Uhr

Inhaltsverzeichnis

[Bearbeiten] 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.

[Bearbeiten] 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 -sf /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

[Bearbeiten] 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.

[Bearbeiten] Ausgabe VA-API/VDPAU

[Bearbeiten] 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


[Bearbeiten] 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"


[Bearbeiten] 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

[Bearbeiten] Plugins

[Bearbeiten] Softhddevice
# pacman -S vdr-softhddevice

Und über einen entsprechenden Symlink aktivieren

# cd /etc/vdr/conf.d
# ln -s ../conf.avail/50-softhddevice.conf .
[Bearbeiten] 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

[Bearbeiten] Xineliboutput (Client/Server)
[Bearbeiten] 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

[Bearbeiten] 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>

[Bearbeiten] 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

[Bearbeiten] 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.


In der Datei /boot/config.txt sollte noch nach gpu_mem gesucht werden. Das steht standardmäßig auf 64MB, was für unsere Zwecke zu wenig ist.

Im offiziellen Kodi-Wiki werden 128MB für den RaspberryPi 1 und 256MB für den RaspberryPi 2 vorgeschlagen

gpu_mem=256

Wenn wir schon an der config.txt beschäftigt sind können wir auch gleich die Lizenzcodes für die Codecs eingeben.

decode_MPG2=0x12345678
decode_WVC1=0x12345678

(Das sind nur Beispieleinträge eure eigenen Lizenzcodes könnt ihr hier kaufen.)


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 all --cursor off

Jetzt noch den VDR für den Autostart aktivieren

# systemctl enable vdr

Und schließlich starten.

# systemctl daemon-reload
# systemctl start vdr

[Bearbeiten] Optionale Einstellungen

[Bearbeiten] 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

[Bearbeiten] 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.

[Bearbeiten] Kodi

[Bearbeiten] Kodi aus dem VDR heraus starten

Hinweis
Hinweis

Mit dem externalplayer-Plugin bleibt der VDR hängen nachdem man aus Kodi zurückkommt. Daher wird hier der Weg über die commands.conf beschrieben


Folgende Datei nach /usr/lib/vdr/start_kodi erstellen

#!/bin/bash
(
  export DISPLAY=:0
  svdrpsend remo off
  svdrpsend plug graphlcd off
  svdrpsend plug softhddevice deta

  kodi

  svdrpsend remo on
  svdrpsend plug graphlcd on
  svdrpsend plug softhddevice atta
) > /dev/null 2>&1 &

Die Freigabe des Displays (oben beispielhaft für graphlcd) funktioniert natürlich auch bei imolcd, lcdproc und targavfd

Danach die /var/lib/vdr/commands.conf um folgenden Eintrag erweitern:

Kodi: /usr/lib/vdr/start_kodi

[Bearbeiten] VDR aus Kodi heraus starten

Hinweis
Hinweis

Im Aufbau


[Bearbeiten] Wakeup mit Kodi und VDR auf dem selben System

Hinweis
Hinweis

Im Aufbau


[Bearbeiten] VDR4Arch-Testing

[vdr4arch-testing]
Server = http://creimer.net/vdr4arch/repos/$repo/os/$arch

[vdr4arch]
Server = http://creimer.net/vdr4arch/repos/$repo/os/$arch

[Bearbeiten] 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")

[Bearbeiten] 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"