Hallo Martin, On Friday 12 September 2008 23:32:17 Martin Hofius wrote:
Hallo Liste, ich suche seit 2 Tagen nach der Möglichkeit, für einen USB-Barcodescanner den usb-serial Treiber zu laden und dem entstehenden Device einen bestimmten (persistenten) Namen zuzuweisen.
Nach dem Studium diverser Google-Tips bin ich immerhin schon mal so weit gekommen, den Treiber selbst mit modprobe usbserial 080c 0400 zu starten, nachdem ich vorher den acm-Treiber entladen habe, der unerwünscht für den Scanner geladen wird, weil der eine USB-Class 2 (Modem) angibt. Dann wird mir ein ttyUSB0 erstellt, das auch den gewünschten Zweck erfüllt (ich kann die Schnittstelle mit minicom öffnet und dann bewundern, was den Scanner an Barcodes erkennt).
Die Treiber werden schon beim Booten geladen, bevor udev zum Tragen kommt. Bei mehreren gleichartigen Devices kann sich dadurch die Reihenfolge der Gerätenamen (Devicenummern) verändern, je nachdem, welche Treiber und welche Geräte in welcher Reihenfolge antworten. Abhilfe schaffst Du dadurch, daß Du die betroffenen Treiber (auch den, den Du benutzen möchtest) in die Blacklist aufnimmst (/etc/modules.d/blacklist). Die Reihenfolge, in der die Treiber manuell geladen werden, hängt von der Datei /etc/modprobe.conf und den Dateien unter /etc/modprobe.d/ ab. Da kannst Du dann eine Datei z.B. Barcode anlegen und den richtigen Treiber eintragen (options dein_Treiber index=??). Beim Index würde ich eine hohe Nummer >> aller usb-devises versuchen (hab ich noch nicht getestet. ob das so funktioniert).
Das habe ich auch soweit (als Aufruf von einem kurzen Script) in eine udev-Regel eingebunden - ziemlich weit vorne (15xxx) in Abhängigkeit von einem Event mit der VendorId und ProductId.
Meine Herausforderung ist nun aber, dass ich für diesen speziellen Scanner auch einen festen Devicenamen haben muss. Nur: Wenn ich als weitere udev-Regel nach des Scripts mit denselben Kriterien versuche, einen Symlink anzulegen, passiert gar nichts.
Nun noch unter /etc/udev/rules.d eine neue Datei erstellen. Zum Beispiel "10- Barcodescanner.rules" oder deine vorhandene 15xxx verwenden. Da trägst Du nun eine passende Regel ein, wohin dein Barcodescanner eingehängt werden soll. Mit lsusb und udevinfo mußt Du dir die Informationen suchen, um die passende Regel zu erstellen. Passt deine Regel, funktioniert dann auch das Anlegen des Symlinks. Der Eintrag als bestimmte Devicenummer funktioniert in udev nicht, da diese schon beim Laden des Treibers vergeben wird. Versuche es doch mal mit /dev/barcode. Auch wenn es nicht auf Anhieb klappt, sollte der Weg annährend richtig sein.
Die Frage ist nun: kann man über udev den richtigen Treiber laden UND das Device umbenennen? Wenn ja, dann wie?
Ich habe auch mal mknode im Script hinter dem modeprobe ausprobiert. Nur: woher weiß ich die Major no, - die war bisher 188, aber das könnte sich mit der Reihenfolge von USB-Geräten ja auch mal ändern?
Dank im Voraus fü Eure Antworten :-)
Gern geschehen, ich hoffe ich konnte Dir helfen. Die Suche nach diesen Informationen hatte mich viel Zeit gekostet, als ich Probleme mit der Zuordnung von Soundkarten hatte, die auch immer wieder in unterschiedlicher Reihenfolge geladen wurden. Viele Grüße Klaus -- Have a nice day ;-) -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org