Autostart-plugin

Aus VDR Wiki
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Beschreibung

Autor: Ulrich Eckhardt

Ermöglicht das automatische Starten von Plugins oder Erzeugen von Keypress Events beim Einlegen von Wechselmedien.

Status

Letzes Update 06/2013

Softwareanforderungen

Installation

Das Plugin wird wie üblich installiert.

Konfiguration

Die Konfiguration des Plugins wird in der Datei $VDRCONFIG/conf/plugins/autostart/autostart.conf vorgenommen. Hier werden die Zuordnungen zwischen Medien und aufzurufenden Plugins konfiguriert.

Die autostart.conf ist ähnlich einer Windows ini Datei aufgebaut. Ein Abschnitt wird mit [Name] eingeleitet, darunter kommen Schlüssel/Werte Paare, getrennt durch ein =.

Der so genannte Media-Tester ist eine Instanz, die es ermöglicht nach bestimmten Medien zu suchen. Innerhalb eines Abschnittes muss der Media-Tester mittels einer "TYPE = tester" Zeile spezifiziert werden. Mittels des Schlüsselwortes KEY werden dann die Aktionen spezifiziert, die ausgeführt werden sollen sollen, wenn der Media-Tester ein entsprechendes Medium detektiert hat.

Schlüsselwörter für alle Media Tester.

Die folgenden zwei Schlüsselwörter müssen in jedem Abschnitt enthalten sein:

Schlüsselwort Beschreibung
TYPE Definiert die Instanz eines Media-Testers. Derzeit stehen folgende Media-Tester zur Verfügung:
DVD Erkennt Video DVDs mittels libdvdread.
CD Erkennt Audio CDs mittels libcdio.
FILE Mountet Wechselmedien und versucht anhand der Endung den Dateityp zu erkennen.
KEY Definiert das zu startende Plugin und die auszuführenden Tasten, wenn ein Medium eingelegt und erkannt wurde. Ein @ am Anfang des Namens kennzeichnet das zu startende Plugin.

Die Zeile "keys = @externalplayer OK" bedeutet, starte Plugin externalplayer und sende die OK Taste.

Schlüsselwörter für den FILE-Media Tester

Keyword Beschreibung
FILES Datei-Endungen die der Media-Tester prüfen soll.
LINKPATH Generiert einen symbolischen Link vom automatisch gemounteten Medium zu einem fixen Verzeichnis. In der Sektion [MP3] zum Beispiel wird für einen USB-Stick, der z.B. automatisch nach /media/USB-Stick gemountet wird ein Link nach /video/mount/mp3 angelegt.

GLOBAL Abschnitt

Hier gibt es das Schlüsselwort FILTERDEV. Hier sollte das root devices und alle devices eingetragen werden, die nicht automatisch geprüft werden. Wird FILTERDEV = AUTO eingetragen, so versucht das Plugin automatisch alle internen Platten anhand der /etc/fstab zu erkennen. Andere Devices, die auch nicht geprüft werden sollen, können hinter AUTO angehängt werden.

Beispiel für eine autostart.conf

Eine Audio-CD soll mit dem CD-Player Plugin abgespielt werden, eine Video-DVD via externalplayer-Plugin, ein USB-Stick oder Wechselplatte mit MP3-Files sollte mit dem Music Plugin abgespielt werden und bei Grafik-Dateien soll das Image Plugin verwendet werden.

; The global section contains definitions global to all detectors                                                  
[GLOBAL]
; exclude the given devices from media detection, e.g. the root hard drives                                        
filterdev = sda sdb hda hdb                                                                                        
[DVD]
type = dvd   ; DVD Media tester
keys = @externalplayer OK                                                                                          
[CD]
type = cd           ; CD Media tester
keys = @cdplayer    ; Start CD-Player plug-in
[MP3]                                                                                                              
type = file             ; File Media tester
files = mp3             ; Suffix to match 
keys = @music YELLOW    ; If a file ending with .mp3 is found, start music plug-in
linkpath = /video/mount/mp3
[IMG]
type = file             ; File Media tester
files = jpg gif bmp     ; If a file ends with .jpg .gif or .bmp, start image plug-in
keys = @image YELLOW DOWN RED RED
linkpath = /video/mount/image

Beispielkonfiguration für das externalplayer-Plugin

Bei dieser Konfiguration gibt es nur einen Menüpunkt, entsprechend ist es ausreichend nur einen OK-Tastendruck zu simulieren.

# Externalplayer-plugin example configuration.
{
  Command          = "xine -L --stdctl -c /video/etc/xine.conf dvd://";
  MenuEntry        = "Xine DVD";
  OutputMode       = extern;
  InputMode        = slave;
  BlockMenu        = true; # This makes sense, because an invisible main menu would block all the keys.
  vdrKeyUp         = specialKeyPageUp; # See below for a full list of "special keys."
  vdrKeyDown       = specialKeyPageDown;
  vdrKeyLeft       = specialKeyLeft;
  vdrKeyRight      = specialKeyRight;
  vdrKeyOk         = specialKeyReturn;
  vdrKeyBack       = noKey;
  vdrKeyRed        = noKey;
  vdrKeyGreen      = "<"; 
  vdrkeyyellow     = ">";
         ....
}

Beispielkonfiguration für das music-Plugin

Die musicsources.conf sollte für obiges Beispiel in der ersten Zeile folgenden Eintrag haben:

/video/mount/mp3;USB-Stick;0;*.mp3/*.ogg/*.wav/*.MP3/*.OGG/*.WAV/*.m3u/*.M3U/*.pls/*.PLS

Beispielkonfiguration für das image-Plugin

Ein etwas komplexeres Beispiel für das Image-Plugin:

/video/images; Bilder;0; *.jpg *.jpeg *.png *.tif* *.bmp
/video/mount/image; USB; 0; *.jpg *.jpeg *.png *.tif* *.bmp

Parameter

Parameter (kurz) Parameter (lang) Beschreibung
-c <directory> --configdir=<directory> Konfigurationsverzeichnis

SVDRP Befehle

Die Medienerkennung kann mittels svdrpsend.pl plug autostart DETECT z.B. per Skript gestartet werden.

PolicyKit configuration

Falls der VDR nicht als root oder unter X gestartet wird, hat VDR nicht die Berechtigung Geräte automatisch zu mounten. Im syslog findet sich in dem Falle folgende Fehlermeldung: AutoMount DeviceKit Error dbusdevkit.cc dbus_connection_send_with_reply failed Not Authorized

Im Verzeichnis contrib des Plugins gibt es die Datei "com.vdr.autostart.pkla". Diese muss nach /var/lib/polkit-1/localauthority/10-vendor.d kopiert werden. Wird der VDR nicht mit dem vdr-Benutzer gestartet, muss in der Datei noch der Benutzer angepasst werden.

com.vdr.autostart.pkla:

[Mounting, checking, etc. of internal drives]
Identity=unix-user:vdr
Action=org.freedesktop.udisks.filesystem-*
ResultActive=yes
ResultAny=auth_admin
ResultInactive=yes

Probleme

Um Probleme und Bugs zu Melden ist es hilfreich möglichst viele Ansatzpunkte zu haben. Entsprechend sollte dann der vdr mittels der Kommandozeilenoption -l 3 möglichst viele Debugging-Infos ins syslog loggen.

Bei Abstürzen ist ein Backtrace äußerst hilfreich. Dazu muß zumindest das Plugin mit Debugging-Informationen compiliert werden. Der Compiler muß mit der -g Option aufgerufen werden. In der Datei Make.config sollte dann folgendes stehen (noch besser ist es, das -O2 noch durch ein -O0 zu ersetzten):

### The C compiler and options:

CC       = gcc
CFLAGS   = -g -O2 -Wall

CXX      = g++
CXXFLAGS = -g -O2 -Wall -Woverloaded-virtual -Wno-parentheses

Dann in einer Shell mittels

ulimit -c unlimited

das schreiben eines Core-Files erlauben und aus der Shell den VDR starten. Nach dem Absturz gibt es dann eine Datei "core", die man mit folgendem Shell-Script auswerten kann:

#!/bin/sh
gdb $1 --core $2  --quiet --batch -ex "thread apply all bt full" -ex "where" -ex "quit"

Das erste Argument ist das VDR-Executable, das zweite Argument das Core-File. Diese Ausgabe kann man dann dem Bugreport noch anhängen.

Entwicklerversion

git clone http://git.uli-eckhardt.de/vdr-plugin-autostart.git

Aktuelle Version

  1. Version 0.9.7 mit UDisks2 support gibt es derzeit nur über die Projekthomepage oder git repository
  2. Version 0.9.6

Links

  1. Homepage des Plugins
  2. Git Repository des Plugins
In anderen Sprachen