Reihenfolge der DVB-Treiber festlegen
Zeile 28: | Zeile 28: | ||
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. | 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" | ||
+ | |||
==Links== | ==Links== | ||
* [http://www.vdr-portal.de/board/thread.php?postid=479909#post479909 Thread "Probleme mit FB beim restart/Reihenfolge der DVB Karten festlegen - Zusammenfassung"] | * [http://www.vdr-portal.de/board/thread.php?postid=479909#post479909 Thread "Probleme mit FB beim restart/Reihenfolge der DVB Karten festlegen - Zusammenfassung"] |
Version vom 19. September 2010, 18:47 Uhr
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"