DVB Installation 1.1.1 (Kernel 2.6)
(→Support für (kleiner gleich) <) |
(→Vorbemerkung) |
||
Zeile 1: | Zeile 1: | ||
==Vorbemerkung== | ==Vorbemerkung== | ||
− | + | Beim Kernel 2.6 gibt es drei Möglichkeiten die DVB Treiber zu verwenden. | |
− | + | *Die DVB Treiber die mit dem Kernel ausgeliefert werden | |
− | + | *Treiber von linuxTV als Kernel Module | |
+ | *Treiber von linuxTV ohne Kernel Module | ||
+ | |||
Die Treiber, die von Klaus (dem Programmierer des VDR) empfohlen werden (aktuell linux-dvb.2004-12-26) sind für Kernel 2.4 und lassen sich mit Kernel 2.6 nicht kompilieren! | Die Treiber, die von Klaus (dem Programmierer des VDR) empfohlen werden (aktuell linux-dvb.2004-12-26) sind für Kernel 2.4 und lassen sich mit Kernel 2.6 nicht kompilieren! | ||
Version vom 29. November 2005, 16:27 Uhr
Inhaltsverzeichnis |
Vorbemerkung
Beim Kernel 2.6 gibt es drei Möglichkeiten die DVB Treiber zu verwenden.
- Die DVB Treiber die mit dem Kernel ausgeliefert werden
- Treiber von linuxTV als Kernel Module
- Treiber von linuxTV ohne Kernel Module
Die Treiber, die von Klaus (dem Programmierer des VDR) empfohlen werden (aktuell linux-dvb.2004-12-26) sind für Kernel 2.4 und lassen sich mit Kernel 2.6 nicht kompilieren!
Download
Das Archiv wird im selben Verzeichnis in welches später auch VDR kommt entpackt und ein symbolischer Link auf DVB angelegt.
- Standard
http://www.linuxtv.org/downloads
cd $SOURCEDIR tar xjvf /path/to/linuxtv-dvb-<VERSION>.tar.bz2 ln -s linuxtv-dvb-<VERSION> DVB cd DVB ln -s linux/include include
- CVS
cd $SOURCEDIR cvs -d :pserver:anonymous@linuxtv.org:/cvs/linuxtv login cvs -d :pserver:anonymous@linuxtv.org:/cvs/linuxtv co dvb-kernel ln -s dvb-kernel DVB cd DVB ln -s linux/include include
mit Kernel Modulen
Voraussetzung ist, daß man bereits die Kernel(!) Sourcen nach /usr/src/ entpackt und die DVB Treiber über CVS geholt hat.
cd DVB ./makelinks /usr/src/<kernel>
Jetzt muß(!) der Kernel neu gebaut werden.
ohne Kernel Module
Achtung! Für diese Methode müssen trotzdem die kernel-sourcen installiert sein - eine make oldconfig ist ebenfalls zwingend!
Diese Methode ist prinzipiell flexibler, da bei einem Treiberupdate nicht der gesamte Kernel neu gebaut werden muß. Allerdings können die Module nicht(!) über "modprobe" geladen werden, das Laden erfolgt dann zwingend über das "insmod.sh" Script.
cd DVB/build-2.6 ./getlinks make ./insmod.sh load
Im $VDR muß die Datei "Make.config.template" in "Make.config" umbenannt werden und der Pfad für die CVS Treiber in der Variable "DVBDIR" angepasst werden
DVBDIR = ../DVB
wird zu
DVBDIR = /usr/local/src/DVB/build-2.6
Voraussetzungen
Hier gibt es zwei Möglichkeiten zu einem DVB-Treiber zu kommen
- ein extra Treiber
- der im Kernel integrierte Treiber
Installation des Treibers über Kernel
Wenn man sich für den Kernel-DVB-Treiber entscheidet, müssen bei den Kernelkonfiguration zusätzlich zu den oben genannten Optionen die folgenden aktiviert werden:
- DVB For Linux (CONFIG_DVB) :
- DVB Core Support (CONFIG_DVB_CORE) :
- das entsprechende Frontend der DVB-Karte (im Zweifel mehrere) z.B. für eine Hauppauge Nexus mit der Firmware 2.1/2.2 STV0299
Bei einer Full-featured-DVB-Karte:
AV7110 cards (CONFIG_DVB_AV7110) [x] Compile AV7110 [[firmware]] into the driver (CONFIG_DVB_AV7110_FIRMWARE) [x] AV7110 OSD support (CONFIG_DVB_AV7110_OSD)
Bei einer Budget-DVB-Karte:
- Budget cards (CONFIG_DVB_BUDGET)
Nach Möglichkeit sollte der DVB-Treiber als Modul übersetzt werden, da er im Falle eines Absturzes neu geladen werden kann, ohne den Rechner neu starten zu müssen. Nach Abschluss der Konfiguration des Kernels einfach
make modules make modules_install
Hinweise
Support für (kleiner gleich) <= 2.6.13
Aktueller CVS Treiber läßt sich nur noch mit Kernel 2.6.13 oder höher übersetzen?
Grund: CVS muß zum aktuellen Kernel passen, da der Treiber regelmäßig in den Kernel übernommen wird.
In der Mailinglist wurde ein Patch veröffentlicht, um den aktuellen Treiber auch mit älteren Kernel versionen übersetzen zu können.
Folgende Schritte sind hierfür Notwendig. (Die Umgebungsvariable $SOURCEDIR muss hierbei auf /usr/local/src gesetzt werden. Bei einer SuSe geschieht dies mittels export SOURCEDIR='/usr/local/src').
cd $SOURCEDIR cvs -d :pserver:anonymous@linuxtv.org:/cvs/linuxtv login cvs -d :pserver:anonymous@linuxtv.org:/cvs/linuxtv co dvb-kernel wget http://linuxtv.org/downloads/patches/dvb-kernel-pre-2.6.12.patch ln -s dvb-kernel DVB cd DVB patch -p0 < ../dvb-kernel-pre-2.6.12.patch ln -s linux/include include cd build-2.6 sh MAKEDEV-DVB.sh make
Oder den letzten Snapshot für < 2.6.9 laden.
cvs -d :pserver:anonymous@linuxtv.org:/cvs/linuxtv login cvs -z3 -d:pserver:anonymous@linuxtv.org:/cvs/linuxtv co -D 2005-06-19 dvb-kernel
Einsehen kann man das ganze in der ../dvb-kernel/build-2.6/version_check.c.
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,9) ^^^^^ #error compiling dvb-kernel works only with linux version greater or equal 2.6.9 ^^^^^ #endif
Major Nummer ändern
Die DVB Treiber von Kernel 2.6 haben jetzt einen offizielles device, dies sitzt auf Major 212 ! Um VDR ans laufen zu bekommen müssen diese neu angelegt werden.
Achtung ! Um VDR unter Kernel 2.4 laufen zu lassen die Major Nummer auf 250 ändern! Also ggf. die 212 im Script gegen 250 austauschen. Sonst läuft VDR leider auch unter Kernel 2.4 nicht mehr. (gilt so nicht, neuer Treiber aus CVS braucht 212, auch bei Kernel 2.4)
Folgendes Script hilft bei der Umstellung auf Kernel 2.6.
#!/bin/sh rm -rf /dev/dvb/adapter*/* device=0 for card in `seq 0 3`; do device=`echo $card \* 64 | bc` for dev in video audio sec frontend demux dvr ca net osd; do mknod /dev/dvb/adapter${card}/${dev}0 c 212 $device chmod 0660 /dev/dvb/adapter${card}/${dev}0 let device=device+1 done done
Scripts
#!/bin/sh # insmod modules from current directory without having to install them first # KERNELVER=`uname -r` # KERNELDIR="/lib/modules/$KERNELVER/misc" sync case "$1" in load) echo -n -e "\nInserting DVB modules into kernel\n" # make sure input stuff is there for IR remote controls # modprobe input # modprobe evdev # modprobe crc32 # vide4linux for av7110 based "full featured" cards # modprobe videodev # insmod $KERNELDIR/v4l1-compat.o # insmod $KERNELDIR/v4l2-common.o # insmod $KERNELDIR/video-buf.o # DVB core # insmod $KERNELDIR/dvb-core.o # frontend drivers # insmod $KERNELDIR/stv0299.o modprobe stv0299 # saa7146 based siemens/technotrend/hauppauge cards # insmod $KERNELDIR/saa7146.o # insmod $KERNELDIR/saa7146_vv.o # insmod $KERNELDIR/ttpci-eeprom.o # insmod $KERNELDIR/dvb-ttpci.o modprobe dvb-ttpci echo ;; debug) echo -n -e "\nInserting DVB modules (debug) into kernel\n" # modprobe videodev # modprobe crc32 # insmod $KERNELDIR/v4l1-compat.o # insmod $KERNELDIR/v4l2-common.o # insmod $KERNELDIR/video-buf.o # insmod $KERNELDIR/dvb-core.o # insmod $KERNELDIR/stv0299.o modprobe stv0299 # insmod $KERNELDIR/saa7146.o # insmod $KERNELDIR/saa7146_vv.o saa7146_debug=247 modprobe saa7146_vv saa7146_debug=247 # insmod $KERNELDIR/ttpci-eeprom.o # insmod $KERNELDIR/dvb-ttpci.o av7110_debug=247 modprobe dvb-ttpci av7110_debug=247 echo ;; unload) echo -n -e "\nDeleting DVB modules from kernel\n" rmmod stv0299 dvb-ttpci \ ttpci-eeprom \ saa7146_vv saa7146 \ video-buf v4l2-common v4l1-compat dvb-core videodev crc32 i2c_core echo ;; reload) $0 unload && $0 load ;; *) echo "Usage$0 {load|unload|debug|reload}" exit 1 esac sync