BTTV Treiber lässt sich nicht entladen (Debian Kernel 2.6.10)

  • Tach, zusammen,


    nachdem mein VDR nun nach gut einem Jahr so langsam da angekommen ist, wo er hinsollte, kümmere ich mich mal um die grundsätzlichen Probleme, die ich nie verstanden habe.


    Heute: Treiber entladen


    Ich habe es noch nie hingekriegt, dass meine Treiber (z.B. bei vdr-Absturz) ordentlich entladen und neu geladen werden. Stattdessen muss ich immer, wenn vdr weggeschmiert ist, das ganze System neu starten, denn der wiedergestartete vdr findet keine Treiber mehr...


    Mein Setup: Debian stable mit Tobis vdr (momentan 1.3.32) und dem Debian-Kernel 2.6.10.


    Ich lade die Treiber durch eine Datei "bttv" in /etc/modprobe.d:

    Zitat

    alias dvb bttv


    install bttv modprobe dvb-core; modprobe --ignore-install bttv; modprobe bt878;
    modprobe dvb-bt8xx; modprobe dst; modprobe sp887x; modprobe rtc


    remove bttv modprobe -r sp887x; modprobe -r dst; modprobe -r
    dvb-bt8xx; modprobe -r --ignore-remove bttv


    Zumindest die install-Zeile ist okay, die läuft bei mir seit einem Jahr anstandslos.


    Nur die remove-Zeile, die will nicht so, wie sie soll. Wenn ich das ganze händisch probiere (modprobe -r sp887x), kommt jeweils

    Zitat

    FATAL: Module sp887x in use


    Anschliessend spielt der Rechner verrückt ("Out Of Memory" und hastenichgesehen) und braucht zehn Minuten, um überhaupt noch runterzufahren.
    Mir ist schon klar, dass die Reihenfolge wichtig ist. Nur: Einfach rückwärts einen nach dem anderen entladen tut's nicht. Wenn ich ein lsmod abgebe, steht da auszugsweise folgendes (vorm Entladen):


    Ich habe immer gedacht, dass ich noch nicht die richtige "Reihenfolge" beim Entladen gefunden habe. Nur: Wenn "dst" von "dvb_bt8xx" abhängt, und "dvb_bt8xx" hängt (anscheinend) von "dst" ab, wie soll ich denn in drei Teufels Namen einen von den beiden als ersten entladen? Der einzige Treiber, der sich entladen lässt, ohne ein "FATAL" zu spucken, ist der (automatisch geladene) snd_bt87x.


    Falls dazu jemand einen Gedanken über hat, wäre ich ihm/ihr sehr dankbar.


    jeremia

    debian testing, wintv nova 500-t + hama dvb-t budget cards, c't-vdr-experimental mit xineliboutput

  • Hallo,


    Zitat

    Original von jeremia


    Ich habe immer gedacht, dass ich noch nicht die richtige "Reihenfolge" beim Entladen gefunden habe. Nur: Wenn "dst" von "dvb_bt8xx" abhängt, und "dvb_bt8xx" hängt (anscheinend) von "dst" ab, wie soll ich denn in drei Teufels Namen einen von den beiden als ersten entladen? Der einzige Treiber, der sich entladen lässt, ohne ein "FATAL" zu spucken, ist der (automatisch geladene) snd_bt87x.


    jeremia


    Mal zur Erklärung der Ausgabe von lsmod:
    [list=1]
    [*]Spalte: Name des Modul
    [*]Spalte: Größe des Moduls
    [*]Spalte: Wieviele andere Prozesse greifen darauf zu. Entladen werden können nur Module, von denen keine weiteren abhängen, d.h. der Wert 0 ist.
    [*]Spalte: Welche Module greifen auf dieses zu. Diese müssen entladen werden, bevor das Modul entladen wird. modprobe -r schaut nach, ob die untergeordneten Module noch benötigt werden und entläd diese gegebenenfalls gleich mit. Ein modprobe -r dvb_bt8xx sollte also auch zum Beispiel dst entladen, wenn es nicht mehr benutzt wird.
    [/list=1]
    Theoretisch sollte ein modprobe -r dvb_bt8xx ausreichen, um den ganzen Spuk zu beenden, d.h. alle abhängigen Module sollten auch gleich entladen werden. Das klappt nur, wenn erstens kein Prozess auf die von den Modulen bereitgestellten Gerätedateien //dev/dvb/adapter0/*) zugreift und zweitens die Modulabhängigkeiten richtig erstellt wurden.
    Versuch doch mal folgendes:
    Entferne testweise die remove-Zeile in der modprobe.d. Diese ist fehlerhaft und sollte eigentlich auch nicht gebraucht werden. Nach einem Neustart rufe als root depmod auf, um die Modulabhängigkeiten neu erstellen zu lassen. Danach vdr beenden, hinter dvb_bt8xx sollte jetzt als Anzahl der Zugriffe 0 stehen. Wenn dieses nicht der Fall sein sollte, deckt lsof /dev/dvb/adapter0/* die Übeltäter auf, die dann brutal zu killen sind.
    Jetzt sollte modprobe -r dvb_bt8xx ausreichen, um alles zu entladen.


    Grüße,
    EddieT

    PIII-866, 512 MB Ram, Avermedia 761 DVB-T, PVR150MCE, Debian unstable, vdr 1.3.38, Xine über Xorg auf GF2MX

  • EddieT, you're my man!


    Das hat's gebracht.


    Für alle potentiellen Leidensgenossen nochmal die neue /etc/modprobe.d/bttv:

    Zitat

    alias dvb dvb_bt8xx


    install dvb_bt8xx modprobe dvb-core; modprobe bttv; modprobe bt878; modprobe --ignore-install dvb-bt8xx; modprobe dst; modprobe sp887x; modprobe rtc


    Danke schön
    jeremia

    debian testing, wintv nova 500-t + hama dvb-t budget cards, c't-vdr-experimental mit xineliboutput

    Einmal editiert, zuletzt von jeremia ()

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!