Kategorie:Raspbian VDR Streaming Client mittels Streamdev und rpihddevice

Aus VDR Wiki
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Einleitung

Diese Step-by-Step-Anleitung beschreibt die Installation und Konfiguration eines VDR Streaming Client Systems mittels Streamdev Plugin und einem Raspberry Pi. Es wird davon ausgegangen, dass es bereits einen VDR mit lauffähigem Streamdev-Server Plugin gibt. Für die Bildausgabe auf den TV kommt das rpihddevice Plugin zum Einsatz.

Voraussetzungen

  • ein vorhandenes VDR System mit lauffähigem Streamdev-Server Plugin (Beispiel VDR System)
  • einen Raspberry Pi der als Streaming Client fungiert

Optional: MPEG-2 und VC-1 Lizenzen

Die Lizenzen sind nötig damit der Raspberry Pi die MPEG-2 sowie VC-1 Datenstreams per Hardware decodieren kann. Die Lizenzen können im offiziellen Raspberry Pi Onlineshop erworben werden.

  • MPEG-2 sowie VC-1 Lizenzen für den Raspberry Pi

Welche Hardware wird benötigt?

Hardwarebeispiel

Hier die Übersicht über meine Hardware:

VDR System

VDR System

Raspberry Pi

Raspberry Pi:      Raspberry Pi Model B+ original "UK" mit Samsung Speicher 512MB
Gehäuse:           Raspberry Pi B+ Gehäuse - belüftet, Farbe schwarz durchsichtiges Plexiglas
Netzteil:          Steckernetzteil Micro-USB 5V 2000mA für Raspberry Pi
SD-Karte:          SanDisk Class 10 Ultra Micro SDHC 32GB
Kupfer Kühlkörper: Cooltek BGA VGA-RAM Cooler - Maße (LxBxH): ca. 21x16x6.5 mm

Stromverbrauch

  • Muss noch ergänzt werden *

Wie schnell startet das System?

Vom einschalten bis zum TV Bild vergehen 10 Sekunden.

Welche Softwareversionen werden eingesetzt?

Betriebssystem

  • Raspbian Wheezy vom 20.06.2014 (Kernel 3.12.26+ armv6l)

Video Disc Recorder

  • VDR 2.1.6

Video Disk Recorder Plugins

  • rpihddevice Plugin (aus dem GIT vom 13.07.2014)
  • Streamdev Plugin (aus dem CVS vom 09.08.2014)
  • epg2VDR Plugin (aus dem GIT vom 12.06.2014)
  • svdrpservice Plugin 1.0.0
  • remotetimers Plugin 1.0.1

Installation und Konfiguration Raspberry Pi Betriebssystem

Einleitung

Um den Raspberry Pi nutzen zu können ist es nötig ein Betriebssystem (OS) zu installieren. Als Betriebssystem verwende ich Raspbian Wheezy und dieses kann hier kostenfrei heruntergeladen werden. Nach dem herunterladen muss die Datei auf der Festplatte entpackt werden. Die darin enthaltene *.img Datei wird später benötigt. Für die Vorbereitungen verwende ich einen Windows Client. Es können aber auch Mac OS X oder Linux verwendet werden siehe hier.

Betriebssystem vorbereiten

SD-Karte für den Raspberry Pi formatieren

Um das Betriebssystem auf der SD-Karte zu installieren muss diese zuerst formatiert und vorbereitet werden.

  1. SD-Karte in den Computer einlegen
  2. Herunterladen eines Formatierungs-Tools (ich empfehle den SD Formatter)
  3. SD Formatter installieren und starten
  4. Optionen für die Formatierung auswählen
    Format Type -> QUICK
    Format Size Adjustment -> ON
  5. Volume Label überprüfen
    Hier muss sichergestellt sein das die SD-Karte ausgewählt ist. In meinem Beispiel Laufwerk E:
  6. Mit der Schaltfläche "Format" die Formatierung starten
    Achtung! Alle Daten auf dem Laufwerk werden gelöscht.


Nach erfolgreicher Formatierung kann der SD Formatter geschlossen werden.

Betriebssystem auf die SD-Karte übertragen

Das Raspbian Betriebssystem muss auf die formatierte SD-Karte übertragen werden.

  1. SD-Karte in den Computer einlegen
  2. Herunterladen eines Diskimage-Tools (ich empfehle Win32 Disk Imager)
  3. Win32DiskImager installieren und starten
    Betriebssystem Image und passendes Laufwerk (SD-Karte) auswählen und starten:
    Image File: D:/2014-06-20-wheezy-raspbian.img
    Device: E:
    Write
    Nach erfolgreicher Übertragung kann der Win32 Disk Imager geschlossen werden.
  4. SD-Karte in den Raspberry Pi einlegen und starten

Konfiguration Raspberry Pi

Nach dem ersten Start des Raspberry Pi wird automatisch das Raspbian Betriebssystem gestartet und das Konfigurationstool raspi-config wird angezeigt. Folgende Konfigurationen habe ich der Reihe nach durchgeführt:

Update Raspberry Configuration Tool

8 Advanced Options -> Select -> A7 Update -> Select

Expand Filesystem

1 Expand Filesystem -> Select -> Ok

Change User Password

2 Change User Password -> Select -> Ok

Enter new Unix password: Euer Passwort

-> Ok

Enable Boot to Desktop/Scratch

3 Enable Boot to Desktop/Scratch -> Select -> Console Text console, requiring login (default) -> Ok

Internationalisation Options

Change Timezone

4 Internationalisation Options -> Select -> I2 Change Timezone -> Return -> Europe -> Return -> Berlin -> Return

Change Keyboard Layout

4 Internationalisation Options -> Select -> I3 Change Keyboard Layout -> Select -> Generic 105-key (Intl) PC -> Select -> Other -> Ok ->
German -> Ok -> German -> Ok -> The default for the keyboard layout -> Ok -> No compose key -> Ok -> No

Change Locale

4 Internationalisation Options -> Select -> I1 Change Locale -> Select ->
Locales to be generated:

Uncheck: en_GB.UTF-8 UTF-8
Check:   de_DE.UTF-8 UTF-8
 
-> OK

Default locale for the system environment:
de_DE.UTF-8

-> OK

Advanced Options

8 Advanced Options -> Select -> A2 Hostname -> Select -> Ok -> pi01 -> Ok
8 Advanced Options -> Select -> A3 Memory Split -> Select-> 128 -> Ok
8 Advanced Options -> Select -> A4 SSH -> Select -> Enable -> Ok

Optional: Overscan deaktivieren

Unter Umständen kann es vorkommen das später das TV Bild oder OSD vom VDR nicht komplett bzw. zu groß angezeigt wird. Dann kann es nötig sein den Overscan zu deaktivieren.

8 Advanced Options -> Select -> A1 Overscan -> Disable -> Ok

Abschließen der Konfiguration

Finish -> Would you like to reboot now? -> Yes

Netzwerkkonfiguration

Um zukünftig euren Raspbery Pi mit einer feste IP Adresse ansprechen zu können muss diese konfiguriert werden. Die IP Adressdaten müssen an euer Netzwerk angepasst werden.

Logindaten für die Konsole

Benutzername: pi
Passwort:     <euer Passwort>

Feste IP Adresse einrichten

sudo vi /etc/network/interfaces

Ändern von:

iface eth0 inet dhcp

Ändern nach:

iface eth0 inet static
address 192.168.0.11
netmask 255.255.255.0
gateway 192.168.0.254
network 192.168.0.0
broadcast 192.168.0.255

DNS Server einrichten

sudo vi /etc/resolv.conf
nameserver 192.168.0.254

Raspberry Pi neustarten

sudo init 6

Remotezugriff per SSH auf die Linux Konsole

Als Remoteclient kommt Putty zum Einsatz. Putty ist Freeware und kann kostenfrei auf der Webseite http://www.putty.org/ heruntergeladen werden. Nach dem starten von Putty kann auf die Linux Konsole zugegriffen werden:

Host name:    192.168.0.11
Benutzername: pi
Passwort:     <euer Passwort>

Optional: MPEG-2 und VC-1 Lizenzen

Die Lizenzen sind nötig damit der Raspberry Pi die MPEG-2 sowie VC-1 Datenstreams per Hardware decodieren kann.

Lizenzen einspielen

Eure Lizenzen müssen in der Datei config.txt eintragen werden:

sudo vi /boot/config.txt
# MPEG-2 and VC-1 license keys
decode_MPG2=<euer Lizenzkey>
decode_WVC1=<euer Lizenzkey>

Raspberry Pi neustarten

sudo init 6

Prüfen der eingespielten Lizenzen

vcgencmd codec_enabled MPG2
MPG2=enabled
vcgencmd codec_enabled WVC1
WVC1=enabled

Firmware auf dem Raspberry Pi aktualisieren

Prüfen der vorhandenen Versionen

uname -a

Linux pi01 3.12.22+ #691 PREEMPT Wed Jun 18 18:29:58 BST 2014 armv6l GNU/Linux
/opt/vc/bin/vcgencmd version

Jun 18 2014 18:46:58
Copyright (c) 2012 Broadcom
version 1a6f79b82240693dcdb9347b33ab16f656b5f067 (clean) (release)

Firmware Update starten

sudo apt-get install rpi-update
sudo rpi-update
sudo init 6

Prüfen der aktualisierten Versionen

uname -a

Linux pi01 3.12.26+ #703 PREEMPT Tue Aug 12 18:13:52 BST 2014 armv6l GNU/Linux
/opt/vc/bin/vcgencmd version

Aug 12 2014 18:25:27
Copyright (c) 2012 Broadcom
version f32b2bbfdea55d48c9a52b92e5c798f9aa5f47bc (tainted) (release)

Nicht benötigte Systempakete deinstallieren

sudo apt-get remove wolfram-engine

Raspbian Softwarepakete auf den aktuellen Stand bringen

sudo apt-get update
sudo apt-get upgrade
sudo init 6

Für VDR benötigte Systempakete installieren

Raspbian benötigte Pakete:
sudo apt-get install vim git
VDR benötigte Pakete:
sudo apt-get install gettext g++ libfreetype6-dev libfontconfig1-dev libcap-dev libjpeg-dev libncurses5-dev libncursesw5-dev
Raspberry Pi HD Device Plugin benötigte Pakete:
sudo apt-get install libavcodec-dev libavformat-dev libavutil-dev
Lirc benötigte Pakete:
sudo apt-get install lirc

Datenverzeichnis vorbereiten

In diesem Verzeichnis werden später die Installationspakete etc. abgelegt.

sudo mkdir /data
sudo chown -R pi.pi /data

Bildschirmschoner sowie Standby deaktivieren

sudo vi /etc/kbd/config
# screen blanking timeout.  monitor remains on, but the screen is cleared to
# range: 0-60 min (0==never)  kernels I've looked at default to 10 minutes.
# (see linux/drivers/char/console.c)
#BLANK_TIME=30
BLANK_TIME=1
 
# Powerdown time.  The console will go to DPMS Off mode POWERDOWN_TIME
# minutes _after_ blanking.  (POWERDOWN_TIME + BLANK_TIME after the last input)
#POWERDOWN_TIME=30
POWERDOWN_TIME=0

Logausgaben auf eine andere Konsole ausgeben

Damit später beim TV schauen keine Logausgaben im TV Bild erscheinen ist es nötig diese auf eine andere Konsole umzuleiten.

sudo vi /boot/cmdline.txt

Ändern von:

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

Abändern in:

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty10 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

Wechseln auf die tty10 Konsole

Um später die Logausgaben auf der tty10 Konsole sehen zu können kann auf diese mit folgender Tastenkombination gewechselt werden:

STRG + ALT + F10

zur Standardkonsole tty1 kommt Ihr wieder zurück:

STRG + ALT + F1

Installation VDR

Downloadverzeichnis vorbereiten

mkdir -p /data/installfiles/vdr

Installationsmedien herunterladen

cd /data/installfiles/vdr
wget ftp://ftp.tvdr.de/vdr/Developer/vdr-2.1.6.tar.bz2

pi Benutzer in die Gruppe video und audio aufnehmen

sudo adduser pi video
sudo adduser pi audio

VDR entpacken, vorbereiten und installieren

Der VDR wird als Benutzer root installiert.

sudo su -
cd /usr/local/src
tar -xjf /data/installfiles/vdr/vdr-2.1.6.tar.bz2 
ln -s vdr-2.1.6/ vdr

Shutdownskript erstellen und ablegen

vi /usr/local/bin/vdrpoweroff.sh
#!/bin/bash
sudo /sbin/poweroff

und anschließend das Skript ausführbar machen:

chmod +x /usr/local/bin/vdrpoweroff.sh

Skripte/Module mit Root-Rechten und ohne Passwortaufforderung ausführen

Damit der Benutzer pi die benötigten Skripte/Module mit Root-Rechten und ohne Passwortaufforderung ausführen kann muss dies mittels visudo konfiguriert werden. Achtung! Die Einträge müssen untereinander und am Ende der Datei eingefügt werden.

visudo
pi ALL=(ALL) NOPASSWD: /usr/local/bin/vdrpoweroff.sh,/sbin/poweroff

Installation starten

cd /usr/local/src/vdr
make REMOTE=LIRC && make install
exit

VDR mittels runvdr starten

Das Skript runvdr wird benötigt um den VDR zu starten.

runvdr vorbereiten

sudo cp /usr/local/src/vdr/runvdr.template /usr/local/bin/runvdr

runvdr anpassen

Achtung! Die erste Zeile im Skript muss von #!/bin/sh nach #!/bin/bash angepasst werden.

sudo vi /usr/local/bin/runvdr
#!/bin/bash

# runvdr: Loads the DVB driver and runs VDR
#
# If VDR exits abnormally, the driver will be reloaded
# and VDR restarted.
#
# In order to actually use this script you need to implement
# the functions DriverLoaded(), LoadDriver() and UnloadDriver()
# and maybe adjust the VDRPRG and VDRCMD to your particular
# requirements.
#
# Since this script loads the DVB driver, it must be started
# as user 'root'. Add the option "-u username" to run VDR
# under the given user name.
#
# Any command line parameters will be passed on to the
# actual 'vdr' program.
#
# See the main source file 'vdr.c' for copyright information and
# how to reach the author.
#
# $Id: runvdr.template 3.0 2011/04/17 12:34:30 kls Exp $

export LANG=de_DE.utf8
export LC_COLLATE=de_DE.utf8
export VDR_CHARSET_OVERRIDE=ISO-8859-9

setterm -clear -cursor off > /dev/tty9; chvt 9;

VDRPRG="/usr/local/bin/vdr"

VDROPTIONS="-w 60 -u pi -c /var/lib/vdr -s /usr/local/bin/vdrpoweroff.sh"
# For other options see manpage vdr.1

VDRKONSOLE="< /dev/tty9"

VDRPLUGINS=""
# You will need to select your output device plugin if you want
# to use VDR to watch video. For instance, for a "Full Featured"
# SD DVB card that would be
# VDRPLUGINS="-P dvbsddevice"
# For a "Full Featured" HD DVB card you could use
# VDRPLUGINS="-P dvbhddevice"
# There are also other output device plugins available, see
# http://www.vdr-wiki.de/wiki/index.php/Plugins.

VDRCMD="$VDRPRG $VDROPTIONS $VDRPLUGINS $VDRKONSOLE $*"

KILL="/usr/bin/killall -q -TERM"

# Detect whether the DVB driver is already loaded
# and return 0 if it *is* loaded, 1 if not:
function DriverLoaded()
{
  return 1
}

# Load all DVB driver modules needed for your hardware:
function LoadDriver()
{
  return 0
}

# Unload all DVB driver modules loaded in LoadDriver():
function UnloadDriver()
{
  return 0
}

# Load driver if it hasn't been loaded already:
if ! DriverLoaded; then
   LoadDriver
   fi

while (true) do
      eval "$VDRCMD"
      if test $? -eq 0 -o $? -eq 2; then exit; fi
      echo "`date` reloading DVB driver"
      $KILL $VDRPRG
      sleep 10
      UnloadDriver
      LoadDriver
      echo "`date` restarting VDR"
      done

runvdr Skript ausführbar machen

sudo chmod +x /usr/local/bin/runvdr

Skripte/Module mit Root-Rechten und ohne Passwortaufforderung ausführen

Damit der Benutzer pi die benötigten Skripte/Module mit Root-Rechten und ohne Passwortaufforderung ausführen kann muss dies mittels visudo konfiguriert werden. Achtung! Die Einträge müssen untereinander und am Ende der Datei eingefügt werden.

sudo visudo
pi ALL=(ALL) NOPASSWD: /usr/local/bin/runvdr,/usr/local/bin/vdr,/usr/bin/killall

VDR auf non-root Benutzer umstellen

sudo chown pi.pi -R /usr/local/share/vdr
sudo chown pi.pi -R /usr/local/bin
sudo chown pi.pi -R /usr/local/include/vdr
sudo chown pi.pi -R /usr/local/lib/vdr
sudo chown pi.pi -R /usr/local/src/vdr*
sudo chown pi.pi -R /srv/vdr
sudo chown pi.pi -R /var/cache/vdr
sudo chown pi.pi -R /var/lib/vdr/

Optional: remote.conf erstellen

Die Datei muss nicht manuell erstellt werden. Startet der VDR ohne diese Datei wird automatisch ein Anlernmenü am TV gestartet. Nach Konfiguration über das Anlernmenü wird automatisch eine remote.conf erzeugt.

vi /var/lib/vdr/remote.conf

Es sieht so aus als ob der VDR beim Anlernen der Tasten zwei unterschiedliche Codes für jede Taste erzeugen.

Die Menü-Taste für die nachfolgende remote.conf ist die "M" Taste der Tastatur.

KBD.Up         00000000001B5B41 # Pfeiltaste nach oben
KBD.Down       00000000001B5B42 # Pfeiltaste nach unten
KBD.Menu       000000000000006D # Taste M
KBD.Ok         000000000000000D # Taste Return
KBD.Back       000000000000007F # Taste Backspace
KBD.Left       00000000001B5B44 # Pfeiltaste nach links
KBD.Right      00000000001B5B43 # Pfeiltaste nach rechts
KBD.Red        0000000000000072 # Taste R
KBD.Green      0000000000000067 # Taste G
KBD.Yellow     0000000000000079 # Taste Y
KBD.Blue       0000000000000062 # Taste B
KBD.0          0000000000000030 # Taste 0
KBD.1          0000000000000031 # Taste 1
KBD.2          0000000000000032 # Taste 2
KBD.3          0000000000000033 # Taste 3
KBD.4          0000000000000034 # Taste 4
KBD.5          0000000000000035 # Taste 5
KBD.6          0000000000000036 # Taste 6
KBD.7          0000000000000037 # Taste 7
KBD.8          0000000000000038 # Taste 8
KBD.9          0000000000000039 # Taste 9
KBD.Info       0000000000000069 # Taste I
KBD.Power      0000001B5B32347E # Taste F12
KBD.Channel+   000000001B5B357E # Taste Bild nach oben
KBD.Channel-   000000001B5B367E # Taste Bild nach unten
KBD.Volume+    000000000000002B # Taste + auf dem Ziffernblock
KBD.Volume-    000000000000002D # Taste - auf dem Ziffernblock
KBD.Mute       0000000000000073 # Taste S

remote.conf für LIRC erweitern

Ihr könnt euch die remote.conf mittels VDR über das OSD-Anlernprogramm erstellen. Wenn Ihr euch die remote.conf manuell erstellen möchtet müssen die VDR-LIRC Kommandos mit den Tasten aus der obigen IRTrans Konfigurationsdatei zugeordnet werden. Achtung! Die Namen sind Case Sensitive.

vi /var/lib/vdr/remote.conf
LIRC.Up          KEY_UP
LIRC.Down        KEY_DOWN
LIRC.Menu        KEY_MENU
LIRC.Ok          KEY_OK
LIRC.Back        KEY_BACK
LIRC.Left        KEY_LEFT
LIRC.Right       KEY_RIGHT
LIRC.Red         KEY_RED
LIRC.Green       KEY_GREEN
LIRC.Yellow      KEY_YELLOW
LIRC.Blue        KEY_BLUE
LIRC.0           KEY_0
LIRC.1           KEY_1
LIRC.2           KEY_2
LIRC.3           KEY_3
LIRC.4           KEY_4
LIRC.5           KEY_5
LIRC.6           KEY_6
LIRC.7           KEY_7
LIRC.8           KEY_8
LIRC.9           KEY_9
LIRC.Play        KEY_PLAY
LIRC.Pause       KEY_PAUSE
LIRC.Stop        KEY_STOP
LIRC.Record      KEY_RECORD
LIRC.FastFwd     KEY_FASTFORWARD
LIRC.FastRew     KEY_REWIND
LIRC.Next        KEY_VIDEO_NEXT
LIRC.Prev        KEY_VIDEO_PREV
LIRC.Power       KEY_POWER
LIRC.Channel+    KEY_CHANNELUP
LIRC.Channel-    KEY_CHANNELDOWN
LIRC.PrevChannel KEY_PREVIOUS
LIRC.Volume+     KEY_VOLUMEUP
LIRC.Volume-     KEY_VOLUMEDOWN
LIRC.Mute        KEY_MUTE
LICR.Audio       KEY_AUDIO     
LIRC.Schedule    KEY_EPG       
LIRC.Channels    KEY_CHANNEL   
LIRC.Recordings  KEY_VIDEO     
LIRC.Setup       KEY_SETUP     
LIRC.Commands    KEY_MACRO     
LIRC.User0       KEY_GOTO      
LIRC.User1       KEY_M 
LIRC.User2       KEY_P
LIRC.Info        KEY_NOT_USED1
LIRC.Play/Pause  KEY_NOT_USED2
LIRC.Subtitles   KEY_NOT_USED3
LIRC.Timers      KEY_NOT_USED4
LIRC.User3       KEY_NOT_USED5
LIRC.User4       KEY_NOT_USED6
LIRC.User5       KEY_NOT_USED7
LIRC.User6       KEY_NOT_USED8
LIRC.User7       KEY_NOT_USED9
LIRC.User8       KEY_NOT_USED10
LIRC.User9       KEY_NOT_USED11

svdrphosts.conf anpassen

vi /var/lib/vdr/svdrphosts.conf
# svdrphosts    This file describes a number of host addresses that
#               are allowed to connect to the SVDRP port of the Video
#               Disk Recorder (VDR) running on this system.
# Syntax:
#
# IP-Address[/Netmask]
#

127.0.0.1             # always accept localhost
#192.168.100.0/24     # any host on the local net
#204.152.189.113      # a specific host
#0.0.0.0/0            # any host on any net (USE THIS WITH CARE!)
192.168.0.0/24        # Euer Netzwerk

VDR in den Autostart

sudo vi /etc/rc.local
sudo /usr/local/bin/runvdr
exit 0

VDR auf Lauffähigkeit überprüfen

Achtung! Bisher kann noch kein TV Bild angezeigt werden da noch kein Ausgabedevice Plugin eingerichtet ist. Die ERROR Meldungen sind hier vorerst normal. Am besten Ihr öffnet zwei SSH Sessions, wie folgt, auf eurem Pi.

SSH Session 1

Hier wird das syslog geöffnet um die VDR Meldungen beim starten zu sehen:

tail -f /var/log/syslog

SSH Session 2

Hier wird der VDR manuell gestartet:

sudo /usr/local/bin/runvdr

VDR Logausgabe

Jetzt könnt Ihr auf der "SSH Session 1" genau mitverfolgen was der VDR macht. Wenn der VDR, vorerst ohne TV Bild, ordnungsgemäß läuft sollte es so aussehen:

Aug 18 18:55:20 pi01 vdr: [10825] VDR version 2.1.6 started
Aug 18 18:55:20 pi01 vdr: [10825] switched to user 'pi'
Aug 18 18:55:20 pi01 vdr: [10825] codeset is 'UTF-8' - known
Aug 18 18:55:20 pi01 vdr: [10825] found 28 locales in /usr/local/share/locale
Aug 18 18:55:20 pi01 vdr: [10825] creating directory /var/lib/vdr/themes
Aug 18 18:55:20 pi01 vdr: [10825] loading /var/lib/vdr/sources.conf
Aug 18 18:55:20 pi01 vdr: [10825] loading /var/lib/vdr/diseqc.conf
Aug 18 18:55:20 pi01 vdr: [10825] loading /var/lib/vdr/scr.conf
Aug 18 18:55:20 pi01 vdr: [10825] loading /var/lib/vdr/channels.conf
Aug 18 18:55:20 pi01 vdr: [10825] loading /var/lib/vdr/svdrphosts.conf
Aug 18 18:55:20 pi01 vdr: [10825] loading /var/lib/vdr/keymacros.conf
Aug 18 18:55:20 pi01 vdr: [10825] registered source parameters for 'A - ATSC'
Aug 18 18:55:20 pi01 vdr: [10825] registered source parameters for 'C - DVB-C'
Aug 18 18:55:20 pi01 vdr: [10825] registered source parameters for 'S - DVB-S'
Aug 18 18:55:20 pi01 vdr: [10825] registered source parameters for 'T - DVB-T'
Aug 18 18:55:20 pi01 vdr: [10825] no DVB device found
Aug 18 18:55:20 pi01 vdr: [10825] ERROR: invalid primary device number: 1
Aug 18 18:55:20 pi01 vdr: [10828] epg data reader thread started (pid=10825, tid=10828, prio=high)
Aug 18 18:55:20 pi01 vdr: [10828] epg data reader thread ended (pid=10825, tid=10828)
Aug 18 18:55:20 pi01 vdr: [10827] video directory scanner thread started (pid=10825, tid=10827, prio=high)
Aug 18 18:55:20 pi01 vdr: [10827] video directory scanner thread ended (pid=10825, tid=10827)
Aug 18 18:55:20 pi01 vdr: [10825] ERROR: no primary device found - using first device!
Aug 18 18:55:20 pi01 vdr: [10825] ERROR: invalid primary device number: 1
Aug 18 18:55:20 pi01 vdr: [10826] video directory scanner thread started (pid=10825, tid=10826, prio=high)
Aug 18 18:55:20 pi01 vdr: [10826] video directory scanner thread ended (pid=10825, tid=10826)
Aug 18 18:55:20 pi01 vdr: [10825] max. latency time 0 seconds
Aug 18 18:55:20 pi01 vdr: [10825] exiting, exit code 2

Optional: Aufnahmeverzeichnis auf NFS Server

Standardmäßig wird als VDR Aufnahmeverzeichnis das lokale Dateisystem verwendet. Da ich in meinem Raspberry Pi eine SD Karte für das Betriebssystem verwende habe ich mich dazu entschieden das Dateisystem von meinem VDR System zu verwenden. Somit landen alle Aufnahmen automatisch auf meinem VDR System und der Raspberry Pi greift darauf über das Netzwerk zu. Hierfür ist es nötig auf dem VDR System einen NFS Server zu konfigurieren und der Raspberry Pi wird als NFS Client eingebunden.

NFS Server - VDR System

Installation

sudo apt-get install nfs-kernel-server

lokale Verzeichnisse vorbereiten

sudo mkdir -p /srv/nfsv4/vdrrecords
sudo mount --bind /data/vdrrecords /srv/nfsv4/vdrrecords
sudo vi /etc/fstab

/data/vdrrecords	/srv/nfsv4/vdrrecords		none	bind	0	0

Kerberos Sicherheit deaktivieren

sudo vi /etc/default/nfs-kernel-server
# Do you want to start the svcgssd daemon? It is only required for Kerberos
# exports. Valid alternatives are "yes" and "no"; the default is "no".
NEED_SVCGSSD="no"

Benutzer Zuordnung

sudo vi /etc/idmapd.conf
[General]

Verbosity = 0
Pipefs-Directory = /run/rpc_pipefs
# set your own domain here, if id differs from FQDN minus hostname
# Domain = localdomain

[Mapping]

Nobody-User = nobody
Nobody-Group = nogroup

NFS Freigaben konfigurieren

Der Raspberry Pi läuft im Standard mit dem vom Betriebssystem angelegten Benutzer pi. Da auf einem VDR System meist ein anderer Benutzer verwendet wird muss sichergestellt werden das beide Systeme mit dem gleichen Benutzer auf das Verzeichnis zugreifen. Auf meinem VDR System verwende ich den Benutzer vdruser. Bei der NFS Freigabe kann dieser Benutzer über seine ID angegeben werden. Im Normalfall hat der erste angelegte Benutzer auf einem Linuxsystem die ID 1000.

sudo cat /etc/passwd

vdruser:x:1000:1000:vdruser,,,:/home/user01:/bin/bash
sudo vi /etc/exports

/srv/nfsv4              192.168.0.0/24(rw,fsid=0,secure,no_subtree_check,sync)
/srv/nfsv4/vdrrecords   192.168.0.0/24(rw,secure,no_subtree_check,sync,all_squash,anonuid=1000,anongid=1000)

Jeder berechtigte NFS Lese- oder Schreibzugriff wird jetzt automatisch auf die Benutzer ID 1000 (vdruser) gemappt, unabhängig mit welchem Benutzeraccount auf die Freigabe zugegriffen wird.

Hosts Zugrifflisten erstellen

sudo vi /etc/hosts.deny

rpcbind mountd nfsd statd lockd rquotad : ALL
sudo vi /etc/hosts.allow

rpcbind mountd nfsd statd lockd rquotad : 127.0.0.1 192.168.0.11

Neustart VDR System

sudo init 6

NFS Client - Raspberry Pi

Installation

sudo apt-get install nfs-common

Hosts Zugrifflisten erstellen

sudo vi /etc/hosts.deny

rpcbind : ALL
sudo vi /etc/hosts.allow

rpcbind : 127.0.0.1 192.168.0.10

Benutzer Zuordnung

sudo vi /etc/idmapd.conf
[General]

Verbosity = 0
Pipefs-Directory = /run/rpc_pipefs
# set your own domain here, if id differs from FQDN minus hostname
#Domain = localdomain

[Mapping]

Nobody-User = nobody
Nobody-Group = nogroup

NFS Freigaben auflisten

showmount -e 192.168.0.10

fstab anpassen

Hier wird der Pfad zu eurem VDR Aufnahmeverzeichnis angegeben sowie der lokale Dateisystempfad wo die Aufnahmen auf eurem Raspbery Pi landen sollen.

sudo vi /etc/fstab
192.168.0.10:/srv/nfsv4/vdrrecords     /srv/vdr/video     nfs     auto    0       0

Neustart Pi System

sudo init 6

Testen der NFS Verbindung

Nach einem Neustart vom System sollte auf eurem Raspberry Pi das Aufnahmeverzechnis vom VDR System per NFS eingehängt sein.

ls -l /srv/vdr/video

VDR Plugins

Downloadverzeichnis für Plugins vorbereiten

mkdir /data/installfiles/vdrplugins

rpihddevice Plugin

Download

cd /data/installfiles/vdrplugins
git clone git://projects.vdr-developer.org/vdr-plugin-rpihddevice.git
tar -czf vdr-plugin-rpihddevice-git-13072014.tar.gz vdr-plugin-rpihddevice

Was hat sich geändert?

Auf der folgenden Webseite können die aktuellen Änderungen des Plugins eingesehen werden:

http://projects.vdr-developer.org/git/vdr-plugin-rpihddevice.git/

Installation

cd /usr/local/src/vdr/PLUGINS/src
cp -a /data/installfiles/vdrplugins/vdr-plugin-rpihddevice .
ln -s vdr-plugin-rpihddevice rpihddevice
cd /usr/local/src/vdr/
sudo make plugins && sudo make install

runvdr anpassen

Die Plugins werden in das bestehende runvdr Skript hintereinander eingefügt:

Zum Beispiel:

VDRPLUGINS="-P Plugin1 -P Plugin2 -P Plugin3"

Hier der Eintrag für das dvbhddevice Plugin:

vi /usr/local/bin/runvdr
VDRPLUGINS="-P rpihddevice"

Streamdev Plugin

Download

cd /data/installfiles/vdrplugins
git clone git://projects.vdr-developer.org/vdr-plugin-streamdev.git vdr-plugin-streamdev
tar -czf vdr-plugin-streamdev-09082014.tar.gz vdr-plugin-streamdev/

Was hat sich geändert?

Auf der folgenden Webseite können die aktuellen Änderungen des Plugins eingesehen werden:

http://projects.vdr-developer.org/repositories/show/plg-streamdev

Installation

cd /usr/local/src/vdr/PLUGINS/src
cp -a /data/installfiles/vdrplugins/vdr-plugin-streamdev .
ln -s vdr-plugin-streamdev/ streamdev
cd /usr/local/src/vdr/
sudo make plugins && sudo make install

runvdr anpassen

vi /usr/local/bin/runvdr
-P streamdev-client

System neustarten

sudo init 6

Streamdev-Client zum Streamdev-Server verbinden

Nach dem Neustart sollte das VDR OSD am TV angezeigt werden. Hierüber kann dann der Streamdev-Client konfiguriert werden.

  • VDR Menü -> Einstellungen -> Plugins -> streamdev-client ->
Gleichzeitig genutzte DVB-Karten: 1
IP der Gegenseite:                192.168.0.10
Port der Gegenseite:              2004
Filter-Daten streamen:            nein

Danach auf einen Kanal umschalten dann sollte das TV Bild sichtbar sein.

svdrpservice Plugin

Download

cd /data/installfiles/vdrplugins
wget http://vdr.schmirler.de/svdrpservice/vdr-svdrpservice-1.0.0.tgz

Was hat sich geändert?

Auf der folgenden Webseite können die aktuellen Änderungen des Plugins eingesehen werden:

http://vdr.schmirler.de/svdrpservice/HISTORY

Installation

cd /usr/local/src/vdr/PLUGINS/src
tar -xzf /data/installfiles/vdrplugins/vdr-svdrpservice-1.0.0.tgz
ln -s svdrpservice-1.0.0 svdrpservice
cd /usr/local/src/vdr/
sudo make plugins && sudo make install

runvdr anpassen

vi /usr/local/bin/runvdr
-P'svdrpservice 192.168.0.10:6419'

epgsync Plugin

Download

cd /data/installfiles/vdrplugins
wget http://vdr.schmirler.de/epgsync/vdr-epgsync-1.0.1.tgz

Was hat sich geändert?

Auf der folgenden Webseite können die aktuellen Änderungen des Plugins eingesehen werden:

http://vdr.schmirler.de/epgsync/HISTORY

Installation

cd /usr/local/src/vdr/PLUGINS/src
tar -xzf /data/installfiles/vdrplugins/vdr-epgsync-1.0.1.tgz
ln -s epgsync-1.0.1 epgsync
cd /usr/local/src/vdr/
sudo make plugins && sudo make install

runvdr anpassen

vi /usr/local/bin/runvdr
-P epgsync

epgsync Plugin konfigurieren

Nach dem Neustart sollte das VDR OSD am TV angezeigt werden. Hierüber kann dann das epgsync Plugin konfiguriert werden.

  • VDR Menü -> Einstellungen -> Plugins -> epgsync ->
Server IP:                        192.168.0.10
Server Port:                      aus svdrpservice
Kanalweise synchronisieren:       ja
EPG sync beim Starten:            ja
Zeit bis zum EPG sync (h):        1
Ziel-Kanäle:                      DVB-S

remotetimers Plugin

Download

cd /data/installfiles/vdrplugins
wget http://vdr.schmirler.de/remotetimers/vdr-remotetimers-1.0.1.tgz
wget https://raw.githubusercontent.com/VDR4Arch/vdr4arch/master/plugins/vdr-remotetimers/remotetimers-vdr2.1.2compat.diff

Was hat sich geändert?

Auf der folgenden Webseite können die aktuellen Änderungen des Plugins eingesehen werden:

http://vdr.schmirler.de/remotetimers/HISTORY

Installation

cd /usr/local/src/vdr/PLUGINS/src
tar -xzf /data/installfiles/vdrplugins/vdr-remotetimers-1.0.1.tgz
ln -s remotetimers-1.0.1 remotetimers
cd remotetimers
patch -p1 -i /data/installfiles/vdrplugins/remotetimers-vdr2.1.2compat.diff
cd /usr/local/src/vdr/
sudo make plugins && sudo make install

runvdr anpassen

vi /usr/local/bin/runvdr
-P remotetimers

Optional: Lirc - Raspberry Pi mit der Fernbedienung steuern

Der Raspberry Pi bringt bereits am GPIO-Header Anschlussmöglichkeiten für einen IR-Empfänger mit. Mit etwas Bastelgeschick lässt sich ein passender IR-Empfänger für kleines Geld selber bauen. Wie ich das gemacht habe beschreibe ich hier.

Materialliste für den IR-Empfänger

IR-Empfänger:         TSOP4836 axial bedrahtet 36 kHz 950 nm oder TSOP4838 axial bedrahtet 38 kHz 950 nm
Verbindungskabel:     RB-CB3-25 Bunt oder RB-CB3-50 Bunt (25cm Länge oder 50cm Länge)
Schrumpfschlauch:     Dünnwandiger Schrumpfschlauch Ø vor/nach Schrumpfung: 9 mm/3 mm Schrumpfrate 3:1 Schwarz
Schrumpfschlauch-Set: Nachfüllbeutel für Schrumpfschlauch-Set 2 : 1 40 mm Bunt 125 St.

Fernbedienung

Da ich noch eine alte TechnoTrend Fernbedienung habe verwende ich vorerst diese.

Raspberry Pi Schaltbild

Das gezeigte Schaltbild ist von einem Raspberry Pi Modell B. Die PIN Belegung von einem Raspberry PI B+ ist identisch zu dem Vorgängermodell.

RaspberryPI Schaltbild.png

IR-Empfänger zusammenbauen

Ich habe drei Verbindungskabel für meinen IR-Empfänger verwendet (Rot, Schwarz und Lila). Auf einer Seite der Verbindungskabel habe ich die Stecker abgeschnitten und diese, wie auf dem obigen Schaltbild, am TSOP angelötet.

VS:  rotes Kabel
GND: schwarzes Kabel
Out: lila Kabel

Über die einzelnen Lötstellen habe ich Schrumpfschläuche gezogen und diese mit einem Heißluftfön verschmolzen (Feuerzeug geht auch). Wer nicht die einzelnen Verbindungskabel sehen möchte kann nochmals einen Schrumpfschlauch über die gesammten Verbindungskabel ziehen. Zum Schluss werden die Verbindungskabel wie auf dem obigen Schaltbild auf den Raspberry Pi aufgesteckt.

Lirc Konfiguration

Module laden

sudo modprobe lirc_rpi

Module in den Autostart

Damit die Module nach einem System start automatisch geladen werden müssen diese in die modules eingetragen werden.

sudo vi /etc/modules
lirc_rpi

Lirc device ermitteln

ls -l /dev/lir*
crw-rw---T 1 root video 248, 0 Aug 24 13:06 /dev/lirc0

Hardware konfiguration

sudo cp /etc/lirc/hardware.conf /etc/lirc/hardware.conf_orig
sudo vi /etc/lirc/hardware.conf
# Run "lircd --driver=help" for a list of supported drivers.
DRIVER="default"

# usually /dev/lirc0 is the correct setting for systems using udev
DEVICE="/dev/lirc0"
MODULES="lirc_rpi"

Neustarten des Lirc Daemon

sudo /etc/init.d/lirc restart

Erster Test vom IR-Empfänger

Kernelmodul laden

sudo modprobe lirc_rpi
dmesg |grep lirc

lirc_dev: IR Remote Control driver registered, major 248
lirc_rpi: module is from the staging directory, the quality is unknown, you have been warned.
lirc_rpi: auto-detected active low receiver on GPIO pin 18
lirc_rpi lirc_rpi.0: lirc_dev: driver lirc_rpi registered at minor = 0
lirc_rpi: driver registered!

Hier ist zu sehen das der IR-Empfänger am GPIO Pin 18 erkannt wird.

Prüfen ob Signale der Fernbedienung ankommen

sudo /etc/init.d/lirc stop
mode2 -d /dev/lirc0

Danach ein paar Tasten auf der Fernbedienung drücken, wenn alles funktionoiert sollte es so aussehen:

space 3260954
pulse 876
space 805
pulse 1718
space 1636
pulse 1722
space 1630
pulse 1724
space 1632
pulse 1714
space 820
pulse 864
space 795
pulse 882
space 793
pulse 886
space 799
pulse 874
space 1638
pulse 882

Anlernen der Fernbedienung

Datei mit gültigen Lirc Namespaces erstellen

sudo irrecord --list-namespace | grep KEY &> ~/lirc_strings.txt

Aus dieser Datei holt Ihr euch dann die passenden Namen für eure Tasten. Anzeigen der Datei:

sudo cat ~/lirc_strings.txt

Anlernmodus starten

sudo /etc/init.d/lirc stop
sudo irrecord -d /dev/lirc0 ~/lircd.conf

Nach starten dem Dialog auf der Konsole folgen.

irrecord -  application for recording IR-codes for usage with lirc

Copyright (C) 1998,1999 Christoph Bartelmus(lirc@bartelmus.de)

This program will record the signals from your remote control
and create a config file for lircd.

A proper config file for lircd is maybe the most vital part of this
package, so you should invest some time to create a working config
file. Although I put a good deal of effort in this program it is often
not possible to automatically recognize all features of a remote
control. Often short-comings of the receiver hardware make it nearly
impossible. If you have problems to create a config file READ THE
DOCUMENTATION of this package, especially section "Adding new remote
controls" for how to get help.

If there already is a remote control of the same brand available at
http://www.lirc.org/remotes/ you might also want to try using such a
remote as a template. The config files already contain all
parameters of the protocol used by remotes of a certain brand and
knowing these parameters makes the job of this program much
easier. There are also template files for the most common protocols
available in the remotes/generic/ directory of the source
distribution of this package. You can use a template files by
providing the path of the file as command line parameter.

Please send the finished config files to <lirc@bartelmus.de> so that I
can make them available to others. Don't forget to put all information
that you can get about the remote control in the header of the file.

Press RETURN to continue. 
Now start pressing buttons on your remote control.

It is very important that you press many different buttons and hold them
down for approximately one second. Each button should generate at least one
dot but in no case more than ten dots of output.
Don't stop pressing buttons until two lines of dots (2x80) have been
generated. 

Press RETURN now to start recording.
................................................................................
Found const length: 107332
Please keep on pressing buttons like described above.
................................................................................
RC-5 remote control found.
Found possible header: 876 828
No repeat code found.
Signals are biphase encoded.
Removed header.
Signal length is 13
Now enter the names for the buttons.

Please enter the name for the next button (press <ENTER> to finish recording)
KEY_POWER

Now hold down button "KEY_POWER".

Please enter the name for the next button (press <ENTER> to finish recording)
KEY_MUTE

Now hold down button "KEY_MUTE".

Please enter the name for the next button (press <ENTER> to finish recording)
...
...
...

Lirc Konfiguration einspielen

sudo cp /etc/lirc/lircd.conf /etc/lirc/lircd.conf_orig
sudo cp ~/lircd.conf /etc/lirc/lircd.conf
sudo /etc/init.d/lirc start

Neustart vom System

sudo init 6

Nach einem Neustart vom VDR wird automatisch das Anlernmenü für die Fernbedienung gestartet.

Optional: VDR und Lirc Konfigurationen

Die beiden untigen Konfigurationen werden durch den Anlernprozess von VDR und Lirc erstellt. Falls Ihr die gleiche Hardware verwendet könnt Ihr die Konfigurationen verwenden und somit den Anlernprozess umgehen.

remote.conf

sudo vi /var/lib/vdr/remote.conf
LIRC.Up         KEY_UP
LIRC.Down       KEY_DOWN
LIRC.Menu       KEY_TEXT
LIRC.Ok         KEY_OK
LIRC.Back       KEY_EXIT
LIRC.Left       KEY_LEFT
LIRC.Right      KEY_RIGHT
LIRC.Red        KEY_RED
LIRC.Green      KEY_GREEN
LIRC.Yellow     KEY_YELLOW
LIRC.Blue       KEY_BLUE
LIRC.0          KEY_0
LIRC.1          KEY_1
LIRC.2          KEY_2
LIRC.3          KEY_3
LIRC.4          KEY_4
LIRC.5          KEY_5
LIRC.6          KEY_6
LIRC.7          KEY_7
LIRC.8          KEY_8
LIRC.9          KEY_9
LIRC.Info       KEY_INFO
LIRC.Play       KEY_PLAY
LIRC.Pause      KEY_PAUSE
LIRC.Stop       KEY_STOP
LIRC.Record     KEY_RECORD
LIRC.FastFwd    KEY_FORWARD
LIRC.FastRew    KEY_REWIND
LIRC.Power      KEY_POWER
LIRC.Channel+   KEY_CHANNELUP
LIRC.Channel-   KEY_CHANNELDOWN
LIRC.Volume+    KEY_VOLUMEUP
LIRC.Volume-    KEY_VOLUMEDOWN
LIRC.Mute       KEY_MUTE
LIRC.Schedule   KEY_EPG

lircd.conf

sudo vi /etc/lirc/lircd.conf
# Please make this file available to others
# by sending it to <lirc@bartelmus.de>
#
# this config file was automatically generated
# using lirc-0.9.0-pre1(default) on Sun Aug 24 12:08:49 2014
#
# contributed by
#
# brand:                       /home/pi/lircd.conf
# model no. of remote control:
# devices being controlled by this remote:
# 

begin remote

  name  /home/pi/lircd.conf
  bits           13
  flags RC5|CONST_LENGTH
  eps            30
  aeps          100

  one           857   818
  zero          857   818
  plead         887
  gap          107346
  toggle_bit_mask 0x800

      begin codes
          KEY_POWER                0x1541
          KEY_MUTE                 0x1558
          KEY_1                    0x1543
          KEY_2                    0x1544
          KEY_3                    0x1545
          KEY_4                    0x1546
          KEY_5                    0x1547
          KEY_6                    0x1548
          KEY_7                    0x1549
          KEY_8                    0x154A
          KEY_9                    0x154B
          KEY_0                    0x154C
          KEY_VOLUMEDOWN           0x1566
          KEY_VOLUMEUP             0x1565
          KEY_UP                   0x154D
          KEY_LEFT                 0x154E
          KEY_RIGHT                0x1550
          KEY_DOWN                 0x1551
          KEY_OK                   0x154F
          KEY_CHANNELDOWN          0x1564
          KEY_CHANNELUP            0x1563
          KEY_EXIT                 0x1553
          KEY_RED                  0x1554
          KEY_GREEN                0x1555
          KEY_YELLOW               0x1556
          KEY_BLUE                 0x1557
          KEY_RECORD               0x157A
          KEY_PLAY                 0x157B
          KEY_STOP                 0x157C
          KEY_INFO                 0x1552
          KEY_REWIND               0x157D
          KEY_PAUSE                0x157E
          KEY_FORWARD              0x157F
          KEY_EPG                  0x1562
          KEY_TEXT                 0x1559
      end codes

end remote

Danksagungen

Hiermit möchte ich mich bei allen Bedanken die mir bei meinem Problemen, Fragen etc. weitergeholfen haben. Insbesondere bedanke ich mich bei:

  1. VDR-Portal
  2. kls
  3. johns
  4. fnu
  5. copperhead
  6. seahawk1986
  7. mini73
  8. TheChief
  9. UFO
  10. CKone
  11. utility
  12. louis
  13. reufer
  14. gda
  15. decembersoul
  16. tehlers
  17. vectra130
  18. argus

Linksammlung

  1. Webseite Raspberry Pi
  2. Raspberry Pi Forum
  3. Video Disk Recorder
  4. VDR FTP-Server
  5. VDR Portal
  6. Plugins and Patches for VDR-to-VDR streaming
  7. Putty
  8. Rpihddevice-plugin
  9. Streamdev Plugin
  10. Svdrpservice-plugin
  11. Remotetimers-plugin
  12. Epgsync-plugin

Kategrorien