Mischsysteme Beispiel1

Aus VDR Wiki
Version vom 1. Dezember 2009, 22:52 Uhr von Hulk (Diskussion | Beiträge)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Hilfestellung bei Problemen

Hinweis: der folgende Text ist das Ergebnis der Fehlersuche *eines* Problemfalls. Es wurde versucht, das Thema allgemeiner zu halten. Ergänzungen durch andere Erfahrungen zum Thema sind sehr erwünscht.

Die Ausgaben beziehen sich auf ein System, bei dem drei DVB-Karten installiert sind:

  • Pinnacle PCTV 300i -- DVB-T, analog
  • Fujitsu Siemens DVB-C -- DVB-C, analog
  • Medion 7134 (?) -- DVB-T, analog?


Grundlegende Informationen zur installierten Hardware finden

(Vielleicht sollte dieser Teil in eine eigene Seite ausgelagert werden.)

PCI-Steckkarten - Programm lspci

lspci zeigt Informationen über PCI-Steckkarten, was für die meisten DVB-Karten sind.

# lspci | grep "Multimedia controller"
0000:00:0a.0 Multimedia controller: Philips Semiconductors SAA7134 (rev 01)
0000:00:0c.0 Multimedia controller: Philips Semiconductors SAA7146 (rev 01)
0000:00:0f.0 Multimedia controller: Philips Semiconductors SAA7134 (rev 01)

Die Ausgabe ist leider nicht sehr aussagekräftig, da sie sich auf spezielle Chips auf den DVB-Karten bezieht, aber sie ist zumindest ein Anhaltspunkt. Mit der Option verbose von lspci gelingt die Zuordnung schon besser:

# lspci -v
[...]
0000:00:0a.0 Multimedia controller: Philips Semiconductors SAA7134 (rev 01)
        Subsystem: Creatix Polymedia GmbH: Unknown device 0003
        Flags: bus master, medium devsel, latency 64, IRQ 9
        Memory at dffff800 (32-bit, non-prefetchable) [size=1K]
        Capabilities: [40] Power Management version 1
0000:00:0c.0 Multimedia controller: Philips Semiconductors SAA7146 (rev 01)
        Subsystem: Siemens Nixdorf AG Fujitsu/Siemens DVB-C card rev1.5
        Flags: bus master, medium devsel, latency 64, IRQ 11
        Memory at dffffc00 (32-bit, non-prefetchable) [size=512]
0000:00:0f.0 Multimedia controller: Philips Semiconductors SAA7134 (rev 01)
        Subsystem: Pinnacle Systems Inc.: Unknown device 002d
        Flags: bus master, medium devsel, latency 64, IRQ 10
        Memory at dffff400 (32-bit, non-prefetchable) [size=1K]
        Capabilities: [40] Power Management version 1
[...]

Da alle Karten mind. ein Jahr alt sind, wundert man sich, dass die Hardware noch nicht in die PCI-Device eingetragen ist.

USB-Geräte - Programm lsusb

Bei USB-Geräten hift vielleicht das Kommando lsusb weiter.

Programm hwinfo

Von Suse gibt das Programm hwinfo. Dies muss ggf. aber noch installiert werden, z. B. mit 'apt-get install hwinfo' (Debian) oder 'ACCEPT_KEYWORDS="~x86" emerge hwinfo' (Gentoo).

Der Aufruf mit 'hwinfo --dvb' ergab in obiger Beispielkonfiguration aber nur die Ausgabe für ein Gerät, so dass hier 'hwinfo --pci' verwendet wurde. Die Ausgabe enthält Informationen zu den verwendeten Treibern.

# hwinfo --pci
[...]
25: PCI 0f.0: 11200 TV Card
  [Created at pci.244]
  Unique ID: _+Pw.wvAFGqF+rP8
  SysFS ID: /devices/pci0000:00/0000:00:0f.0
  SysFS BusID: 0000:00:0f.0
  Hardware Class: tv card
  Model: "Pinnacle SAA7134"
  Vendor: pci 0x1131 "Philips Semiconductors"
  Device: pci 0x7134 "SAA7134"
  SubVendor: pci 0x11bd "Pinnacle Systems Inc."
  SubDevice: pci 0x002d
  Revision: 0x01
  Driver: "saa7134"
  Memory Range: 0xdffff400-0xdffff7ff (rw,non-prefetchable)
  IRQ: 10 (no events)
  Driver Info #0:
    Driver Status: saa7134 is active
    Driver Activation Cmd: "modprobe saa7134"
  Config Status: cfg=new, avail=yes, need=no, active=unknown
[...]

Treiber verwalten (lsmod, modprobe, insmod, rmmod)

Die Treiber ("Module") befinden sich (beim Kernel 2.6?) im Verzeichnis /lib/modules/<Kernel-Version>/kernel/drivers/ und darunter, also z. B. /lib/modules/2.6.16-ct-1/kernel/drivers/media/dvb/.

Module können mit den Programmen lsmod, modprobe, insmod und rmmod verwaltet werden. Eine Beschreibung der Befehle würde hier zu weit gehen.

Ausgaben der Treiber - Programm dmesg

Die Ausgaben der Kerneltreiber können mit dmesg betrachtet werden. Je nach Linux-Distribution befinden sich Informationen auch in den Dateien /var/log/messages, /var/log/kern.log, /var/log/dmesg, /var/log/everything/current, usw.

# dmesg
[... sehr viel Informationen über alles mögliche ...]

Eine Ausgabe mit den wichtigen Informationen konnte auf einem System mit Kernel 2.6 so erzeugt werden:

# dmesg | grep -E '('$(  find /lib/modules/$(uname -r)/kernel/drivers/media/ -type f | rev | cut -d. -f2 | cut -d/ -f1 | rev | tr "\n" "|"  )'DVB|v4l|video|frontend|tuner)' | grep -v "i2c eeprom"
Boot video device is 0000:01:00.0
Linux video capture interface: v1.00
saa7130/34: v4l2 driver version 0.2.14 loaded
saa7134[0]: found at 0000:00:0a.0, rev: 1, irq: 9, latency: 64, mmio: 0xdffff800
saa7134[0]: subsystem: 16be:0003, board: Medion 7134 [card=12,autodetected]
saa7134[0]: board init: gpio is 0
saa7134[0] Board has DVB-T
saa7134[0] Tuner type is 63
tuner 1-0061: chip found @ 0xc2 (saa7134[0])
tuner 1-0061: type set to 63 (Philips FMD1216ME MK3 Hybrid Tuner)
tda9887 1-0043: chip found @ 0x86 (saa7134[0])
saa7134[0]: registered device video0 [v4l2]
saa7134[0]: registered device vbi0
saa7134[0]: registered device radio0
saa7134[1]: found at 0000:00:0f.0, rev: 1, irq: 10, latency: 64, mmio: 0xdffff400
saa7134[1]: subsystem: 11bd:002d, board: Pinnacle PCTV 300i DVB-T + PAL [card=50,autodetected]
saa7134[1]: board init: gpio is c806000
tuner 2-0060: Chip ID is not zero. It is not a TEA5767
tuner 2-0060: chip found @ 0xc0 (saa7134[1])
tuner 2-0060: microtune: companycode=3cbf part=42 rev=2f
tuner 2-0060: microtune MT2050 found, OK
tda9887 2-0043: chip found @ 0x86 (saa7134[1])
saa7134[1]: registered device video1 [v4l2]
saa7134[1]: registered device vbi1
saa7146: register extension 'dvb'.
saa7146: found saa7146 @ mem d0918c00 (revision 1, irq 11) (0x110a,0x0000).
DVB: registering new adapter (Fujitsu Siemens DVB-C).
dvb-ttpci: gpioirq unknown type=0 len=0
dvb-ttpci: info @ card 0: firm f0240009, rtsl b0250018, vid 71010068, app 80002622
dvb-ttpci: firmware @ card 0 supports CI link layer interface
dvb-ttpci: DVB-C analog module @ card 0 detected, initializing MSP3400
saa7146_vv: saa7146 (0): registered device video2 [v4l2]
saa7146_vv: saa7146 (0): registered device vbi2 [v4l2]
DVB: registering frontend 0 (VLSI VES1820 DVB-C)...
input: DVB on-card IR receiver as /class/input/input2
dvb-ttpci: found av7110-0.

Wie man sieht, ist die Ausgabe über die Hardware sehr vom jeweiligen Treiber abhängig.

/dev/

Für jede Karte muss ein Eintrag im Device-Filesystem vorhanden sein.

# ls -d /dev/dvb/*
drwxr-xr-x  2 root root 200 2006-05-21 17:00 /dev/dvb/adapter0

Aha, da fehlen zwei! Richtig wäre:

# ls -d /dev/dvb/*
drwxr-xr-x  2 root root 200 2006-05-21 20:00 /dev/dvb/adapter0
drwxr-xr-x  2 root root 120 2006-05-21 18:02 /dev/dvb/adapter1
drwxr-xr-x  2 root root 120 2006-05-21 18:02 /dev/dvb/adapter2

Check: Sind die auch Frontend-Treiber geladen?

Im obigen Beispiel wurden zwar die Treiber für die drei Karten geladen, aber nur ein Frontent-Treiber:

# dmesg | grep frontend
DVB: registering frontend 0 (VLSI VES1820 DVB-C)...

Das laden der Frontend-Module (hier: /lib/modules/2.6.16-ct-1/kernel/drivers/media/dvb/frontends/) brachte *keinen* Erfolg! :-(

Folgendes funtionierte *hier*:

# modprobe -v saa7134-dvb
insmod /lib/modules/2.6.16-ct-1/kernel/drivers/media/dvb/frontends/tda1004x.ko
insmod /lib/modules/2.6.16-ct-1/kernel/drivers/media/dvb/frontends/dvb-pll.ko
insmod /lib/modules/2.6.16-ct-1/kernel/drivers/media/dvb/frontends/nxt200x.ko
insmod /lib/modules/2.6.16-ct-1/kernel/drivers/media/video/video-buf-dvb.ko
insmod /lib/modules/2.6.16-ct-1/kernel/drivers/media/dvb/frontends/mt352.ko
insmod /lib/modules/2.6.16-ct-1/kernel/drivers/media/video/saa7134/saa7134-dvb.ko

Ergebnis:

# dmesg | grep frontend
DVB: registering frontend 0 (VLSI VES1820 DVB-C)...
DVB: registering frontend 1 (Philips TDA10046H DVB-T)...
DVB: registering frontend 2 (Zarlink MT352 DVB-T)...

# ls -d /dev/dvb/*
drwxr-xr-x  2 root root 200 2006-05-21 20:00 /dev/dvb/adapter0
drwxr-xr-x  2 root root 120 2006-05-21 18:02 /dev/dvb/adapter1
drwxr-xr-x  2 root root 120 2006-05-21 18:02 /dev/dvb/adapter2

TODO

  • Beim booten automatisch Modul laden ...


Neustart des VDR

# /etc/init.d/vdr restart

Ggf. weitere Programme starten (/etc/init.d/vdradmin-am start)

Check: Wurde die notwendige Firmware geladen?

# dmesg | grep firmware
tda1004x: found firmware revision 26 -- ok


Check: channels.conf

Die Datei channels.conf muss für alle Karten-Typen (DVB-T, DVB-S, DVB-C) die Einträge enthalten.

Detaillierte Informationen und Beispiele inklusive aktueller channels.confs finden sich hier im Wiki: allgemein, DVB-T, DVB-S, DVB-C

In obigen System (c't-VDR 2006-05) mit VDR 1.4 war die channels.conf nicht mehr unter /etc/vdr/, sondern unter /var/lib/vdr/:

# ls -l /var/lib/vdr/channels.conf
-rw-r--r--  1 vdr vdr  3990  2006-05-21 15:10  /var/lib/vdr/channels.conf

Beispiele, die bei der c't-VDR-Ditribution von Mai 2006 mitgeliefert werden:

# ls -l /var/lib/ctvdrcfg/base/vdr/channels

-rw-r--r--  1 root root 10177 2006-04-30 22:42 DVB-C-IESY
-rw-r--r--  1 root root  3181 2006-05-12 09:26 DVB-C-Kabel-Deutschland

-rw-r--r--  1 root root  8864 2006-04-30 22:42 DVB-S-Astra

-rw-r--r--  1 root root  2177 2006-04-30 22:42 DVB-T-BerlinBrandenburg
-rw-r--r--  1 root root  1632 2006-04-30 22:42 DVB-T-Bonn
-rw-r--r--  1 root root  1545 2006-04-30 22:42 DVB-T-Braunschweig
-rw-r--r--  1 root root  2035 2006-04-30 22:42 DVB-T-BremenOldenburg
-rw-r--r--  1 root root  1701 2006-04-30 22:42 DVB-T-Dortmund
-rw-r--r--  1 root root  1708 2006-04-30 22:42 DVB-T-Duesseldorf
-rw-r--r--  1 root root  1540 2006-04-30 22:42 DVB-T-Frankfurt
-rw-r--r--  1 root root  2043 2006-04-30 22:42 DVB-T-Hamburg
-rw-r--r--  1 root root  1551 2006-04-30 22:42 DVB-T-Hannover
-rw-r--r--  1 root root  1558 2006-04-30 22:42 DVB-T-Kiel
-rw-r--r--  1 root root   250 2006-04-30 22:42 DVB-T-Leipzig
-rw-r--r--  1 root root  1613 2006-04-30 22:42 DVB-T-Mainz
-rw-r--r--  1 root root   256 2006-04-30 22:42 DVB-T-Muenchen

Backup der alten Liste

# cd /var/lib/vdr/
# cp -a channels.conf channels.conf__2006-05-21a 

Erstellen der neuen Liste

# cd /var/lib/ctvdrcfg/base/vdr/channels/
# cat DVB-C-Kabel-Deutschland DVB-T-Braunschweig > /var/lib/vdr/channels.conf 

Reihenfolgen bearbeiten mit beliebigen Editor, z. B. joe.

TODO

  • Konfigurationsmöglichkeiten des VDR zur automatischen Ergänzung der Liste