DVB Installation 1.1.1 (Kernel 2.6)

Aus VDR Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(v4l-dvb (aktueller Stand))
(Variante B - Seperate Treiber von LinuxTV)
 
(50 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
==Vorbemerkung==
 
==Vorbemerkung==
Beim Kernel 2.6 gibt es drei Möglichkeiten die DVB Treiber zu verwenden.
+
Beim Kernel '''2.6*''' gibt es mehrere 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!
+
* Kernel-Treiber (welche mit dem Kernel ausgeliefert werden) - diese Methode ist zu empfehlen!
 +
* Separate Treiber von LinuxTV
  
==Download==
+
==Variante A - Kernel Treiber==
 +
Wenn man sich für den Kernel DVB Treiber entscheidet, müssen bei der Kernelkonfiguration folgenden Einstellungen aktiviert werden.
  
Das Archiv wird im selben Verzeichnis in welches später auch [[VDR]] kommt entpackt und ein symbolischer Link auf [[DVB]] angelegt.
+
<b>Kernelkonfiguration</b>
 +
<pre>
 +
Code maturity level options --->
 +
    [*] Prompt for development and incomplete code / driver
 +
    [*] Select only drivers expected to compile cleanly
  
===v4l-dvb (aktueller Stand)===
+
Loadable module support --->
* '''CVS - v4l-dvb'''
+
    [*] Enable loadable module support
cd [[Struktur|$SOURCEDIR]]
+
    [*] Module unloading
cvs -d :pserver:anonymous@cvs.linuxtv.org:/cvs/video4linux login
+
    [*] Automatic kernel module loading
cvs -z3 -d :pserver:anonymous@cvs.linuxtv.org:/cvs/video4linux co -P v4l-dvb
+
ln -s v4l-dvb DVB
+
cd DVB
+
ln -s linux/include include
+
cd v4l
+
ln -s scripts/insmod.sh .
+
  
===dvb-kernel (dieser Treiber wird nicht mehr gepflegt)===
+
Device Drivers --->
* '''Standard'''
+
    Generic Driver Options --->
http://www.linuxtv.org/downloads
+
        [*] Select only drivers that don't need compile-time external firmware
 +
        [*] Prevent firmware from being built
 +
        <M> Hotplug firmware loading support
  
cd [[Struktur|$SOURCEDIR]]
+
    Block Devices --->
tar xjvf /path/to/linuxtv-dvb-<VERSION>.tar.bz2
+
        <*> RAM disk support
ln -s linuxtv-dvb-<VERSION> DVB
+
        [*] Initial RAM disk (initrd) support
cd DVB
+
ln -s linux/include include
+
  
* '''CVS'''
+
    Input Device Support --->
cd [[Struktur|$SOURCEDIR]]
+
        <M> Event Interface (i.e. notwendig für den intergierten IR-Empfänger der Hauppauge Nexus)
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
+
  
==Installation==
+
    Character Devices --->
 +
        Serial Drivers -->
 +
            [ ] 8250/16550 and compatible serial support (oder als Modul, nur notwendig für LIRC)
  
===Installation der im Kernel integrierten Treiber===
+
        [*] Legacy (BSD) PTY support
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:
+
        <M> /dev/nvram support
 +
        <M> Enhance Realtime Clock support
  
(zu finden unter Device Drivers->Multimedia devices->Digital Video Broadcasting Devices)
+
    I2C support --->
 +
        <M> I2C support
 +
        <M>   I2C device interface
  
* '''DVB For Linux (CONFIG_DVB)''' :
+
        I2C Algorithms --->
 +
            <M> I2C bit-banging interfaces
 +
            <M> I2C PCF 8584 interfaces
  
* '''DVB Core Support (CONFIG_DVB_CORE)''' :
+
    Multimedia Devices --->
 +
      <M> Video For Linux aktivieren
  
* das entsprechende '''Frontend''' der [[DVB-Karte]] (im Zweifel mehrere) z.B. für eine Hauppauge Nexus mit der Firmware 2.1/2.2 STV0299
+
      Digital Video Broadcasting Devices --->
 +
          [*] DVB For Linux
 +
          <M> DVB Core Support
  
Bei einer [[Full-featured-DVB-Karte]]:
+
          <M> AV7110 cards
 +
          [*]   AV7110 OSD support
  
<pre>
+
          (enable every module in here)
AV7110 cards (CONFIG_DVB_AV7110)
+
[x] Compile AV7110 [[firmware]] into the driver (CONFIG_DVB_AV7110_FIRMWARE)
+
[x] AV7110 OSD support (CONFIG_DVB_AV7110_OSD)
+
</pre>
+
  
Bei einer [[Budget-DVB-Karte]]:
+
File Systems --->
; '''Budget cards (CONFIG_DVB_BUDGET)'''
+
    <*> Kernel automounter version 4 support (also supports v3)
  
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
+
    Pseudo filesystems -->
 
+
        [*] /proc file system support
<pre>
+
        [*] Virtual memory file system support (former shm fs)
make modules
+
        [*] /dev/pts file system for Unix98 PTYs
make modules_install
+
 
</pre>
 
</pre>
  
===mit Kernel Modulen===
+
===[[Firmware]]===
Voraussetzung ist, daß man bereits die Kernel(!) Sourcen nach '''/usr/src/''' entpackt und die DVB Treiber über CVS oder den download geholt hat.  
+
Vor dem laden / entladen [[Firmware]] überprüfen.
  
cd DVB
+
===Treiber laden / entladen===
./makelinks /usr/src/<kernel>
+
  
Jetzt muß(!) der Kernel neu gebaut werden.
+
Unter Suse 10.1 einfach die TV-Hardware einrichten. Die Module werden dann automatisch geladen. Achtung: bei eigenen Modules außerhalb des Kernel-Baums kommt es dadurch zu massiven Probleme. Also besser die aus dem Kernel verwenden.
  
===ohne Kernel Module===
+
'''>>> Bitte ergänzen <<<'''
  
Achtung!
+
==Variante B - Separate Treiber von LinuxTV==
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.
  
 +
Hier werden nur die grundlegenden Dinge im Kernel selber aktiviert. Die Treiber für die DVB-Karten werden vom Kernel getrennt compiliert.
  
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.
+
<b>Kernelkonfiguration</b>
  
cd DVB/build-2.6
+
wie in Variante A, jedoch mit dem Unterschied:
./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
+
<pre>
DVBDIR  = ../DVB
+
      Digital Video Broadcasting Devices --->
 +
          [ ] DVB For Linux
 +
</pre>
 +
===Download===
 +
Das Archiv wird im selben Verzeichnis in welches später auch [[VDR]] kommt entpackt und ein symbolischer Link auf [[DVB]] angelegt.
  
wird zu
+
* '''Source'''
 +
http://www.linuxtv.org/downloads
  
  DVBDIR  = /usr/local/src/DVB/build-2.6
+
  cd [[Struktur|$SOURCEDIR]]
 +
tar xjvf /path/to/linuxtv-dvb-<VERSION>.tar.bz2
 +
ln -s linuxtv-dvb-<VERSION> DVB
 +
cd DVB
 +
ln -s linux/include include
  
==Firmware==
+
* '''CVS'''
Nach der Installation der Treiber muss noch die Firmware eingespielt werden. Mehr dazu gibt es in der Rubrik
+
  cd [[Struktur|$SOURCEDIR]]
[[Firmware|Firmware]]
+
==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 login
  cvs -d :pserver:anonymous@linuxtv.org:/cvs/linuxtv co dvb-kernel
+
  cvs -z3 -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
 
  ln -s dvb-kernel DVB
 
  cd DVB
 
  cd DVB
patch -p0 < ../dvb-kernel-pre-2.6.12.patch
 
 
  ln -s linux/include include
 
  ln -s linux/include include
  cd build-2.6
+
 
  sh MAKEDEV-DVB.sh
+
===Übersetzen===
 +
  cd $SOURCEDIR/DVB/build-2.6
 +
  sh getlinks
 
  make
 
  make
  
Oder den letzten Snapshot für '''< 2.6.9''' laden.
+
===[[Firmware]]===
 +
Vor dem laden / entladen [[Firmware]] überprüfen.
  
cvs -d :pserver:anonymous@linuxtv.org:/cvs/linuxtv login
+
===Treiber laden / entladen===
cvs -z3 -d:pserver:anonymous@linuxtv.org:/cvs/linuxtv co -D 2005-06-19 dvb-kernel
+
cd $SOURCEDIR/DVB/build-2.6
 
+
sh insmod.sh load
Einsehen kann man das ganze in der '''../dvb-kernel/build-2.6/version_check.c'''.
+
sh insmod.sh unload
 
+
#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.
+
 
+
<pre>
+
#!/bin/sh
+
rm -rf /dev/dvb/adapter*/*
+
device=0
+
for card in `seq 0 3`; do
+
  mkdir -p /dev/dvb/adapter${card}
+
  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
+
</pre>
+
 
+
==Scripts==
+
<pre>
+
#!/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
+
</pre>
+
  
 
[[Kategorie:Installationsanleitungen]]
 
[[Kategorie:Installationsanleitungen]]

Aktuelle Version vom 2. Juli 2007, 17:48 Uhr

Inhaltsverzeichnis

[Bearbeiten] Vorbemerkung

Beim Kernel 2.6* gibt es mehrere Möglichkeiten die DVB Treiber zu verwenden.

  • Kernel-Treiber (welche mit dem Kernel ausgeliefert werden) - diese Methode ist zu empfehlen!
  • Separate Treiber von LinuxTV

[Bearbeiten] Variante A - Kernel Treiber

Wenn man sich für den Kernel DVB Treiber entscheidet, müssen bei der Kernelkonfiguration folgenden Einstellungen aktiviert werden.

Kernelkonfiguration

Code maturity level options --->
    [*] Prompt for development and incomplete code / driver
    [*] Select only drivers expected to compile cleanly

Loadable module support --->
    [*] Enable loadable module support
    [*] Module unloading
    [*] Automatic kernel module loading

Device Drivers --->
    Generic Driver Options --->
        [*] Select only drivers that don't need compile-time external firmware
        [*] Prevent firmware from being built
        <M> Hotplug firmware loading support

    Block Devices --->
        <*> RAM disk support
        [*] Initial RAM disk (initrd) support

    Input Device Support --->
        <M> Event Interface (i.e. notwendig für den intergierten IR-Empfänger der Hauppauge Nexus)

    Character Devices --->
        Serial Drivers -->
            [ ] 8250/16550 and compatible serial support (oder als Modul, nur notwendig für LIRC)

        [*] Legacy (BSD) PTY support
        <M> /dev/nvram support
        <M> Enhance Realtime Clock support

    I2C support --->
        <M> I2C support
        <M>   I2C device interface

        I2C Algorithms --->
            <M> I2C bit-banging interfaces
            <M> I2C PCF 8584 interfaces

    Multimedia Devices --->
       <M> Video For Linux aktivieren

       Digital Video Broadcasting Devices --->
           [*] DVB For Linux
           <M> DVB Core Support

           <M> AV7110 cards
           [*]   AV7110 OSD support

           (enable every module in here)

File Systems --->
    <*> Kernel automounter version 4 support (also supports v3)

    Pseudo filesystems -->
        [*] /proc file system support
        [*] Virtual memory file system support (former shm fs)
        [*] /dev/pts file system for Unix98 PTYs

[Bearbeiten] Firmware

Vor dem laden / entladen Firmware überprüfen.

[Bearbeiten] Treiber laden / entladen

Unter Suse 10.1 einfach die TV-Hardware einrichten. Die Module werden dann automatisch geladen. Achtung: bei eigenen Modules außerhalb des Kernel-Baums kommt es dadurch zu massiven Probleme. Also besser die aus dem Kernel verwenden.

>>> Bitte ergänzen <<<

[Bearbeiten] Variante B - Separate Treiber von LinuxTV

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.

Hier werden nur die grundlegenden Dinge im Kernel selber aktiviert. Die Treiber für die DVB-Karten werden vom Kernel getrennt compiliert.

Kernelkonfiguration

wie in Variante A, jedoch mit dem Unterschied:

       Digital Video Broadcasting Devices --->
           [ ] DVB For Linux

[Bearbeiten] Download

Das Archiv wird im selben Verzeichnis in welches später auch VDR kommt entpackt und ein symbolischer Link auf DVB angelegt.

  • Source

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 -z3 -d :pserver:anonymous@linuxtv.org:/cvs/linuxtv co dvb-kernel
ln -s dvb-kernel DVB
cd DVB
ln -s linux/include include

[Bearbeiten] Übersetzen

cd $SOURCEDIR/DVB/build-2.6
sh getlinks
make

[Bearbeiten] Firmware

Vor dem laden / entladen Firmware überprüfen.

[Bearbeiten] Treiber laden / entladen

cd $SOURCEDIR/DVB/build-2.6
sh insmod.sh load
sh insmod.sh unload