Das hier beschriebene Problem dürfte in der Weile ( ab Kernel 2.4.x ) und hotplug grundsätzlich behoben sein. -KaiEhlers-
Ich hatte mir einen ( billigen ) USB-Stick gekauft und wollte ihn nun auch unter Linux benutzen. Klar, ein Modul zum Betreiben des USB-Anschlusses bedarf es. Der war vorhanden ( naja, einkompiliert im Kernel ). Mit modprobe usb-storage konnte ich auch auf Anhieb den Stick in Betrieb nehmen. Er wird bei mir als /dev/sda1/ geführt. Man benötigt also auch das Modul scsi_mod. Das war bei mir wohl auch im Kernel schon vorhanden. Was nicht funktionieren wollte, war das automatische Erkennen beim Reinstecken des Sticks im laufenden Betrieb. Zuständig für so etwas ist der usbmgr. Der hat eine eigen Konfigurationsdatei, die man unter /etc/usbmgr/usbmgr.conf findet. Dort gibt es viele Einträge allermöglichen USB-Geräte. Sie haben die Form vendor 0xZZZZ product 0xZZZZ module <modulliste> oder class 0xZ subclass 0xZ module <modulliste>.
Man muss sich also die beiden Hexzahlen für den Hersteller und das Produkt heraussuchen. Dies konnte ich nur in der Datei /var/log/syslog finden. Dort kann man die Versuche sehen, den Stick zu erkennen, und dabei werden einige Angaben zum Stick gemacht. Die Angaben für den vendor, das product, der class und subclass sollte man sich gut merken. Die Angabe des protocol('s) war bei mir nicht wichtig. Da ich mit Debian arbeite, sollte es eigentlich eine wenigstens kleine Beschreibung geben. Und siehe da, in /usr/share/doc/usbmgr/ gibt es die Datei 'README.gz', die tatsächlich eine Beschreibung enthält. Mit dem Befehl dump_usbdev enthält man die genaue Angabe, wie sie in die Datei 'usbmgr.conf' eingtragen werden soll.
Das Eintragen der Angaben für den 'vendor' und 'product' und/oder für die 'class' und 'subclass' führten zu keinem Erfolg. Sie wurden ignoriert - warum siehe weiter unten - . Es gibt in dem Ordner /etc/usbmgr/ aber einen weiteren Ordner mit dem Namen class. Dort folgen weitere Unterordner die als letztes eine Datei namens 'module' enthalten. Die Ordnerstruktur entspricht den class-Angaben in der Datei 'usbmgr.conf'. Ich habe dann den Angaben aus der Syslogdatei entsprechend im Ordner class den Unterordner 08 ( class : 08 ),darin den Unterordner 06 ( subclass : 06 ) und darin den Unterordner 50 ( protocol : 50 ) erzeugt. In diesem letzten Unterordner habe ich die Datei module mit den Eintrag : usb-storage erzeugt. Es war ein Versuchsballon, der zum Erfolg führte. Nun wird mein Stick beim Reinstecken erkannt und das device /dev/sda1 angelegt und beim Herausziehen auch wieder gelöscht. Den Ordner für das 'protocol' habe ich dann noch weggelassen und die Datei 'module' in den Subclass-Ordner getan. Auch das führte zum Erfolg. Es kommt zwar zuerst immer eine Fehlermeldung über fehlende Treiber für vendor 0xZZZ und Typ 0xZZZ, dann aber bindet er den Stick sauber ein. Der usbmgr möchte anscheinend zuerst den Stick über die vendor-Angabe einbinden, erst dann probiert er die class-Angabe.
Das Eintragen in die Datei 'usbmgr.conf' ist nicht das Ende der Konfiguration. Man muss anschließend noch den Befehl update_usbdb usbmgr.conf ausführen. Und genau dabei werden die class-Einträge genauso ausgeführt, wie ich es von Hand gemacht habe. Obgleich ich nun nach 'Vorschrift' vorgegangen bin fängt er immer noch mit der Fehlermeldung an, dass die Treiber den vendor nicht unterstützen, obgleich ich die Angabe in 'usbmgr.conf' gemacht habe, bevor ich update_usbdev ausgeführt habe. --KaiEhlers
Übrigens sollte das hier geschriebene im Prinzip für alle USB-Geräte gelten, die Speichermedien verwalten wie z.B. Flash-Reader und Digitalkameras. Ich habe vor einiger Zeit mal eine Seite zu Franz'ens SanDiskImageMate geschrieben, auf der vielleicht auch noch ein paar Tips stehen, wenn jemand hiermit nicht weiterkommt. -- ThomasBayen
Mit meiner Kamera ( Jenoptic ) bin ich nicht weitergekommen. Es gibt scheints kein Modul, das diese Kamera unterstützt -- KaiEhlers
In der Weile (heute ist der 23.1.2004) habe ich weitere negativ wie positiv Erlebnisse mit dem USB-Stick gehabt. Mit der Kernel-Version, die ich zuerst hatte wurde auch ein hub.c beim Starten ausgeführt. Dieses Programm/Modul? scheint für USB einige wichtige Dinge zu machen. In einem zweiten Kernel wurde hub.c nicht ausgeführt und den Stick konnte ich nicht mehr lesen. Beim Aufruf von dump_usbdev bekam ich die tolle Fehlermeldung, dass der usb nicht gemountet sei. In der Datei mtab war ein solches mounten aber angegeben. Ich habe dann irgend wann hotplug installiert. Laut apt wird dabei der usbmanager wieder deinstalliert( ich habe ihn aber trotzdem noch wiedergefunden????????). Das führte zum vollen Erfolg. Ich habe dann nichts weiter getan als ihn einzubinden und konnt den Stick auslesen und beschreiben. -- KaiEhlers --