Mischsysteme Beispiel1
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.
# ll -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:
# ll -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