Reihenfolge der DVB-Treiber festlegen

Aus VDR Wiki
Wechseln zu: Navigation, Suche

Hier geht es darum, daß die DVB-Treiber bei einem neuen Kernel mit Hotplug bzw. Udev zwar automatisch geladen werden, jedoch die Reihenfolge durchaus variieren kann.

Möchte man nun immer seine Full-Featured DVB-Karte als erstes Modul und damit als Device /dev/dvb/adapter0 laden gibt es mehrere Möglichkeiten. Das mplayer-plugin hat es nämlich nicht gerne, wenn die Full-Featured Karte erst als zweites Device geladen wird.

Die Anleitung beschreibt die Vorgehensweise unter Debian, ist aber evtl. auch auf andere Distributionen übertragbar.

Inhaltsverzeichnis

Hotplug

Bis vor kurzem waren Hotplug und Udev noch zwei verschiedene Pakete. Um die Ladereihenfolge von Modulen zu ändern reichte es, sie in der richtigen Reihenfolge in die Datei /etc/modules einzutragen.

z.B:

dvb_ttpci
b2c2_flexcop_pci

Udev + Hotplug

Neuere Versionen von Udev und Hotplug wurden zu einem Paket zusammengefaßt. Damit ist Hotplug wesentlich schneller geworden, wird nun aber beim Bootvorgang VOR dem Laden der Module in /etc/modules ausgeführt. Damit reicht es nicht mehr, nur die Module in dieser Datei in der richtigen Reihenfolge einzutragen. Zusätzlich ist es erforderlich, die Module für Hotplug zu blacklisten. Das geschieht nicht mehr in einer Datei im Verzeichnis /etc/hotplug/blacklist.d/irgendeinedatei (wie bei älteren Versionen von Hotplug), sondern in der Datei /etc/modprobe.d/blacklist und abhängig von den verwendeten Treibern sieht ein zusätzlicher Abschnitt dann folgendermaßen aus

#don't load the dvb drivers automatically
blacklist dvb_ttpci
blacklist b2c2_flexcop_pci

Wichtig ist hierfür noch, daß die module-init-tools erst ab einer bestimmten Version das Schlüsselwort blacklist verstehen. Es funktionieren auf jeden Fall Versionen ab 3.2.2 (in Debian Etch enthalten).

Udev-Rules

Wer nicht zwei verschiedene Dateien editieren möchte, kann auch eine Udev-Rule erstellen. Dieses Regeln befinden sich im Verzeichnis /etc/udev/rules.d und legen fest, wo unter /dev/ ein Device zu finden ist. Um eine Full-Featured-Karte als /dev/dvb/adpater0/... und eine Budget-Karte als /dev/dvb/adapter1/... einzubinden, muss so eine Udev-Rule erstellt werden:

# video devices
KERNEL=="dvb*", DRIVERS=="dvb", NAME="dvb/adapter0/%k"
KERNEL=="dvb*", DRIVERS=="budget_ci dvb", NAME="dvb/adapter1/%k"

Diese Rule wird unter etc/udev/rules.d/62-dvb.rules abgelegt. Beim nächsten Systemstart wird dann die Full-Featured-Karte als /dev/dvb/adapter0/ eingebunden.

Falls die Udev-Rule die Namen der Devices bei einer neueren Kernel-Version falsch vergibt (z.B. dvb0.frontend0 anstatt frontend0) müssen die Devices umbenannt werden. Dies erledigt folgende Änderung an o.g. Udev-Rule:

# video devices
KERNEL=="dvb*", DRIVERS=="dvb", PROGRAM="/bin/sh -c 'K=%k; K=$${K#dvb}; printf dvb/adapter0/%%s $${K#*.}", NAME="%c"
KERNEL=="dvb*", DRIVERS=="budget_ci dvb", PROGRAM="/bin/sh -c 'K=%k; K=$${K#dvb}; printf dvb/adapter1/%%s $${K#*.}", NAME="%c"

Aktuelle Methode

Bei aktuellen VDR Versionen (ab 1.7.xx + ) ist es normalerweise nicht nötig die Ladereihenfolge der DVB-Karten Treiber zu fixieren. VDR kann diese beim Start automatisch erkennen und richtig verwenden. Wenn dies jedoch erwünscht oder nötig ist z.b. wegen unterschiedliche Diseqc-Kommandos pro Karte, oder wenn man andere geräteabhängige Konfigurationen hat, dann ist es möglich den Modulen die Adapternummer vorzugeben:

z.b. für SD-FF und Budget im Verzeichnis /etc/modprobe.d legt man eine Datei dvb_ttpci.conf an mit dem Inhalt:

options dvb_ttcpi adapter_nr=1

und eine budget.conf mit

options budget adapter_nr=0

an.


Links