Inhaltsverzeichnis

Anpassungen

Die hier verwendeten Anpassungen an der YaVDR 0.5 Version basieren auf eigenen vorlieben und / oder Fehlern beim tägl. Gebrauch.

Ring Buffer Overflows

Wenn Aufnahmen immer wieder stehen bleiben oder sich das ganze VDR-System aufhängt, dann kommen evtl. Fehlermeldungen im Syslog:
ring buffer overflows…

Bei mir kamen die Probleme von meiner Tevi S480 Dual Tuner DVB-Karte.
Hier hat sich immer der 2. Tuner verabschiedet.

Hier müssen dann die Buffer-Werte angepasst werden.

apt-get install build-essential vdr-dev dpatch libssl-dev fakeroot mercurial cdbs 
apt-get install libbz2-dev 
apt-get install dpkg-dev devscripts expect wget gettext dpatch
apt-get build-dep vdr-dev

Nun dieses:

stop vdr
cd /usr/src
apt-get source vdr-plugin-xvdr
cd vdr-plugin-xvdr-<VERSION>
vi src/live/livequeue.c

Zeile mit Inhalt wie folgt anpassen.

FD_SET(fd, &set);
121	 121	
 
122	 122	
   to.tv_sec = 0;
123	  	
-  to.tv_usec = 10 * 1000;
 	 123	
+  to.tv_usec = 100 * 1000;
vi src/live/livestreamer.c

Zeile mit Inhalt wie folgt anpassen.

cLiveStreamer::cLiveStreamer(uint32_t timeout)
53	 53	
  : cThread("cLiveStreamer stream processor")
54	  	
- , cRingBufferLinear(MEGABYTE(1), TS_SIZE*2, true)
 	 54	
+ , cRingBufferLinear(MEGABYTE(5), TS_SIZE*2, true)
55	 55	
  , m_scanTimeout(timeout)
56	 56	
 {
57	 57	
   m_Channel         = NULL;
...	 ...	
@@ -85,7 +85,7 @@
85	 85	
   if(m_scanTimeout == 0)
86	 86	
     m_scanTimeout = XVDRServerConfig.stream_timeout;
87	 87	
 
88	  	
-  SetTimeouts(0, 100);
 	 88	
+  SetTimeouts(0, 50);
89	 89	
 }

VDR-Pakete neu erstellen und neue Pakete installieren:

dpkg-buildpackage -rfakeroot -us -uc -b -d
cd ..
dpkg -i vdr-plugin-xvdr_<VERSION>

DIESE NUN FOLGENDEN ANGABEN HABEN NICHTS GEBRACHT. MAN KANN ES ABER DENNOCH TESTEN!!
Danach dieses:

stop vdr
cd /usr/src
apt-get source vdr
cd vdr-<VERSION>
dpatch apply-all

Nun die Buffer-Werte anpassen und die VDR-Pakete neu erstellen.

vi recorder.c

Zeile mit Inhalt wie folgt anpassen:

#define RECORDERBUFSIZE MEGABYTE(100)
vi dvbplayer.c

Zeile mit Inhalt wie folgt anpassen:

#define PLAYERBUFSIZE MEGABYTE(50)
dpkg-buildpackage -rfakeroot -us -uc -b -d

Nun noch den VDR, mit den angepassten Werten, installieren (ACHTUNG: Die Versionsnummern können abweichen):

cd ..
dpkg -i vdr-dev_1.7.27-5yavdr1~precise_all.deb vdr-plugin-dvbhddevice_1.7.27-5yavdr1~precise_amd64.deb vdr-plugin-dvbsddevice_1.7.27-5yavdr1~precise_amd64.deb vdr-plugin-epgtableid0_1.7.27-5yavdr1~precise_amd64.deb vdr-plugin-examples_1.7.27-5yavdr1~precise_amd64.deb

Ich musste noch danach das Skin wieder auf das Alte („anthra_1920_FSE-0.1.0a“) setzen.

DVB-Tuner abschalten

Man kann normalerweise einen Tuner über den VDR Startparameter -D <NUM> deaktivieren.
Wenn aber das Plugin „dynamite“ verwendet wird, dann setzt dieses Plugin diesen Startparameter ausser Gefecht.
Hier müssen für das Plugin „udev“ Regeln angelegt werden. Die Regeln findet man in /etc/udev/rules.d.
Eine Regel muss ein Device eindeutig beschreiben. Dafür kann man mit folgendem Befehl div. Eigenschaften eines Devices ausgeben.
Das folgende Beispiel zeigt die Eigenschaften einer DVB-Karte:

udevadm info --query=all --name=/dev/dvb/adapter0/frontend0

Die Ausgabe sieht etwa so aus:

P: /devices/pci0000:00/0000:00:1c.0/0000:02:00.3/usb4/4-1/dvb/dvb2.frontend0
N: dvb/adapter2/frontend0
E: DEVNAME=/dev/dvb/adapter2/frontend0
E: DEVPATH=/devices/pci0000:00/0000:00:1c.0/0000:02:00.3/usb4/4-1/dvb/dvb2.frontend0
E: DVBMODULE=dvb_usb_dw2102
E: DVB_ADAPTER_NUM=2
E: DVB_DEVICE_NUM=0
E: DVB_DEVICE_TYPE=frontend
E: ID_PATH=pci-0000:02:00.3-usb-0:1
E: ID_PATH_TAG=pci-0000_02_00_3-usb-0_1
E: MAJOR=212
E: MINOR=11
E: SUBSYSTEM=dvb
E: TAGS=:udev-acl:
E: UDEV_LOG=3
E: USEC_INITIALIZED=12318394
E: dynamite_attach=no

Für die Udev-Regel verwendet man am besten den „DEVPATH“, der ist am eindeutigsten.

vi /etc/udev/rules.d/11-dynamite.rules

Der Inhalt ist also wie folgt:

#Tuner 1 der Tevii S480 abschalten
ACTION=="add", SUBSYSTEM=="dvb", ENV{DVB_DEVICE_TYPE}=="frontend", DEVPATH=="/devices/pci0000:00/0000:00:1c.0/0000:02:00.3/usb4/4-1/dvb/dvb2.frontend0", ENV{dynamite_attach}="no"

Nach dem nächsten Neustart wird der 2. Tuner nicht aktiviert und somit im VDR auch nicht verwendet.