Pvrinput-plugin
Inhaltsverzeichnis |
Beschreibung
Autor: Andreas Regel (bis 2006). Weiterentwicklung seitdem durch Winfried Koehler und Martin Dauskardt
Dieses Plugin ermöglicht es, analoges TV (und UKW-Radio) mit dem VDR in Verbindung mit einer vom Plugin unterstützen PVR-Karte zu benutzen. Die Funktion ist prinzipiell die gleiche wie beim analogtv-plugin, die Bedienung und Einrichtung jedoch deutlich einfacher.
Ab ivtv-0.8.0 wurde die Treiber Struktur geändert, so dass die letzte reguläre Version 0.1.1 von pvrinput damit nicht mehr funktioniert.
Für die Erstellung der channels.conf siehe die Datei README zum Plugin. Alternativ kann die channels.conf auch mit w pvrscan oder dem Wirbelscan-plugin erstellt werden, die einen automatischen Kanalsuchlauf durchführen.
Hardwareanforderungen
- Unterstützt werden derzeit die folgenden analogen TV-Karten mit Hardware-Enconder, Details siehe PVR Karten:
- PVR150
- PVR250
- PVR350 (Encoder-Teil)
- PVR500
- PVRUSB2 (ab 2008-06-01)
- HVR 1900 (ab 2008-06-01) -siehe Hinweise-
Softwareanforderungen
- ivtv Treiber, empfohlen wird ivtv-Treiber 1.x.x.
- pvrusb2 Treiber im Falle der pvrusb2
Konfiguration
ab Version 2008-06-01 ist eine alternative Kanalsyntax möglich, falls VDR mit dem IPTV pluginparamspatch gepacht wurde. Hier ein Beispiel:
Radio Fritz!;wirbelscan:102600:PVRINPUT|RADIO:P:0:301:300:305:0:1642:0:0:1 CCIR I/III E5;wirbelscan:175250:PVRINPUT|TV|PAL:P:0:301:300:305:0:2804:0:0:6 CCIR SL/SH SE4;wirbelscan:126250:PVRINPUT|TV|PAL:P:0:301:300:305:0:2020:0:0:17 CCIR SL/SH SE20;wirbelscan:294250:PVRINPUT|TV|PAL:P:0:301:300:305:0:4708:0:0:33 UHF 21;wirbelscan:471250:PVRINPUT|TV|PAL:P:0:301:300:305:0:7540:0:0:55 S-Video 1;wirbelscan:1:PVRINPUT|SVIDEO1|PAL:P:0:301:300:305:0:9001:0:0:0 Composite 1;wirbelscan:1:PVRINPUT|COMPOSITE1|PAL:P:0:301:300:305:0:9002:0:0:0 S-Video 2;wirbelscan:1:PVRINPUT|SVIDEO2|PAL:P:0:301:300:305:0:9003:0:0:0 Composite 2;wirbelscan:1:PVRINPUT|COMPOSITE2|PAL:P:0:301:300:305:0:9004:0:0:0 Composite 3;wirbelscan:1:PVRINPUT|COMPOSITE3|PAL:P:0:301:300:305:0:9005:0:0:0
Die Identifier sind
- PVRINPUT
- TV, RADIO, COMPOSITE0..COMPOSITE4, SVIDEO0..SVIDEO3
- (optional: Angabe der Videonorm) PAL, SECAM, NTSC
- (optional: Angabe der TV-Karte) CARD0..CARD7
Bitte beachten:
- 'P' wie Plugin statt 'C' wie Kabel-TV in der channels.conf angeben!
- Es wird keine CA-ID mehr angegeben
Mit der neuen Syntax kann erstmals festgelegt werden auf welcher TV-Karte ein externer Eingang benutzt wird. Die neue Syntax wird ebenso von wirbelscan ab Version 0.0.4b unterstützt.
Das folgende bash script erlaubt die Konvertierung einer existierenden channels.conf mit alter Syntax in die neue Syntax.
#!/bin/bash # new syntax needs vdr with iptv patch! # have phun, --wirbel 20090526 if [ -z "$2" ] # expecting two args then echo "Usage: `basename $0` channels.conf.old channels.conf" echo " " echo "converts existing pvrinput channels.conf to new channels.conf syntax." echo " * first arg is path to old channels.conf" echo " * second arg is path to new channels.conf" echo " " echo "-- MISSING ARGUMENTS. EXITING NOW. --" exit -1 else OLDFILE=$1 NEWFILE=$2 fi NUM=0 nsid=0 need_ext_inputs=0 while IFS=: read name freq param source srate vpid apid tpid caid sid nid tid rid do if [ -z "$name" ]; then echo ":"$freq"" >> $NEWFILE continue fi if [[ "$caid" == "A1" ]]; then if (( freq < 10000 )); then # ext input; *impossible* to convert. skip them now and add new(!) entries at the end of conf. need_ext_inputs=1 continue fi let "nsid=(500 + freq*16)/1000" echo -n "$name:$freq:PVRINPUT|" >> $NEWFILE if (( freq < 87500 )) || (( freq > 108000 )); then echo -n "TV" >> $NEWFILE norm="PAL" vtest=$(echo $param | grep "I0") if [[ ! -z "$vtest" ]]; then norm="NTSC" fi vtest=$(echo $param | grep "I1") if [[ ! -z "$vtest" ]]; then norm="SECAM" fi echo -n "|$norm:P:0:301:300:305:0:" >> $NEWFILE else echo -n "RADIO:P:0:0:300:0:0:" >> $NEWFILE fi echo "$nsid:$nid:$tid:$rid" >> $NEWFILE else # non-pvrinput channel; copy n paste it echo "$name:$freq:$param:$source:$srate:$vpid:$apid:$tpid:$caid:$sid:$nid:$tid:$rid" >> $NEWFILE fi NUM=$NUM+1 done < $OLDFILE # I/O redirection. # create ext inputs if needed; no scanning - just a dumb adding all of them. if (( $need_ext_inputs == 1 )); then ext_sid=9000 echo -n ":ext analog inputs" >> $NEWFILE && echo "" >> $NEWFILE for (( i=0; i<=4; i++ )); do echo "Composite $i;pvrinput:1:PVRINPUT|COMPOSITE$i:P:0:301:300:0:0:$ext_sid:0:0:0" >> $NEWFILE let "ext_sid=ext_sid+1" done for (( i=0; i<=3; i++ )); do echo "S-Video $i;pvrinput:1:PVRINPUT|SVIDEO$i:P:0:301:300:0:0:$ext_sid:0:0:0" >> $NEWFILE let "ext_sid=ext_sid+1" done fi
Sonstiges
Betrieb mit vdr-1.6/1.7
Für VDR ab Version 1.6.0 muss vdr gepatcht werden, siehe Ordner patches.
Probleme
- Beim Umschalten tritt sporadisch ein Flackern im oberen Drittel des Bildes auf: Dieses Problem haben offenbar nur Karten mit einem cx23415-Chip (PVR350, ältere PVR250). Die Lösung besteht darin, den Encoder vor dem Kanalwechsel zu stoppen und nach dem Tunen wieder zu starten. In der Version pvrinput-1.0.0_20070523 ist hierzu der "Anti-Flacker workaround" im plugin-setup zu aktivieren. siehe auch http://www.gossamer-threads.com/lists/ivtv/devel/32970
- neuere Versionen des Plugins lassen sich nicht kompilieren: Fast immer liegt es daran, dass in /usr/include/linux eine veraltete Version von videodev2.h vorhanden ist (siehe README)
- Seit August 2007 erfordert der ivtv-Treiber 1.x.x im v4l-dvb hg einen Encoder-Stop/Neustart, wenn der Input gewechselt oder auf den radio tuner umgeschaltet wird. Diese Änderung ist auch in Kernel 2.6.24 eingeflossen. In pvrinput-1.0.0_20070523 muss hierzu der "Anti-Flacker workaround" im plugin-setup aktiviert werden. Seit der Entwicklerversion aus 11/2007 (Link siehe unten) wird der Encoder daher nun immer automatisch während des Umschaltens gestoppt. Aufgrund der zahlreichen Treiberverbesserungen erhöht dies die Umschaltdauer inzwischen nur minimal.
- Die Version 2008-10-04 ist mit vdr 1.7.x nicht lauffähig. Eine neue Version befindet sich derzeit (Stand 10/2009) in der Fertigstellung. Wer Betatester werden möchte, kann Sourcen bei Dr. Seltsam (siehe README) anfordern.
- Die HVR 1900 ist ein Hybridgerät. Sie enthält ebenfalls einen DVB-T-Empfänger. Analog und DVB können jedoch nicht gleichzeitig benutzt werden. Sobald vdr das DVB device gefunden hat, steht somit der analoge teil für pvrinput nicht mehr zur Verfügung. Lösung: Beim Laden des Treibermoduls pvrusb2 muss mit der Moduloption adapter_nr eine device Nummer vorgegeben werden, die eine Nummer über dem letzten vorhandenen DVB-Gerät liegt.
- Beispiel: vdr soll nur die FF-Karte (/dev/dvb/adapter0) verwenden. Man lädt pvrusb2 nun wie folgt: "modprobe pvrusb2 adapter_nr=2". vdr findet beim Start adapter0 und bricht die Suche ab, nachdem auf adapter1 kein Gerät gefunden wurde. Somit wird adapter3 von vdr nicht geöffnet, und pvrinput kann das analoge device öffnen.