Linux: Wie ordnen Sie USB-Treiber für den Gerät
Diese Frage ist zwei-Fach:
1 - Wie kann man manuell lösen, einen Treiber von einem USB-Gerät und schließen Sie ein anderes ein? Ich habe zum Beispiel ein Gerät, das bei Anschluss automatisch verwendet das usb-storage-Treiber.
//usbview Ausgabe
Vendor Id: xxxx
Product Id: xxxx
...
Number of Interfaces: 2
Interface Number: 0
Name: usb-storage
Number of Endpoints: 2
...
Interface Number: 1
Name: (none)
Number of Endpoints: 2
...
Möchte ich nicht verwenden, das usb-storage-Treiber, so habe ich eine Anwendung auf dem host ausgeführt werden, in dem ich die libusb-Bibliothek zum trennen der usb-storage Treiber und dann habe ich Anspruch auf die Schnittstelle. Ich kann dann das senden von Daten zu und von den Anwendungen, die auf meinem USB-Gerät und auf meinem Linux-host-system.
Wie trennen Sie eine Treiber manuell außerhalb der Anwendung?
2 - Wie kann ich automatisch die Zuordnung der Fahrer zu befestigen, auf dem Gerät plugin. Ich habe derzeit eine udev-Regel einrichten, um das Gerät Berechtigungen automatisch.
SUBSYSTEM=="usb", ATTR{idVendor}=="xxxx", MODE="0666"
Kann ich mit udev-Regeln zum zuweisen von Treibern für spezifische Schnittstellen auf dem USB-Gerät? Zum Beispiel, wenn ich wollte, das usbnet Modul verwendet werden auf automatisch auf die Schnittstelle 0 anstelle von usb-storage ist möglich, dass in udev?
Dank,
(Ich bin ein wenig verwirrt darüber, wie StackExchange arbeitet mit verschiedenen Standorten oder wenn Sie alle das gleiche. Dies ist eine Linux-Frage, so war es auch geschrieben auf Unix & Linux. Verzeihen Sie mir, wenn es sollte nicht sein, hier gepostet zu werden, aber StackOverflow übernimmt auch Linux, also...)
- Ähnliche Frage auf Unix & Linux unix.stackexchange.com/questions/13964/...
- Ich habe gelesen, dass Artikel, und das ist ähnlich, aber nicht die Lösung zu meinem problem. Wie ich schon in meiner Frage, ich habe eine Anwendung, die ich ausführen kann, verwendet die libusb-API zu trennen und behaupten, die Schnittstelle. Aber ich muss wissen, wie zu lösen, und fügen Sie eine LKM, die von der Eingabeaufforderung oder automatisch durch udev außerhalb der Anwendung Platz.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese Frage klingt wie eine Menge, ein USB-Gerät mit einem kleinen flash-Laufwerk, enthält die Windows-Treiber, aber tatsächlich ist es eine Art von Netzwerk-Zugangs-Gerät (UMTS-modem kommt mir in den Sinn). Wenn dies der Fall ist, versuchen Sie, mit USB_ModeSwitch, enthält eine Datenbank von USB-Geräten und die Befehle und Daten, die verwendet werden muss, um das Gerät von "storage-Modus" auf "network-access-Modus". Wenn das Gerät nicht in der Datenbank konfiguriert, Usb-Sniffer für Windows kann verwendet werden, auf Windows-Spur-USB-Verkehr, und extrahieren Sie die notwendigen Befehls - /Daten-combo.
Automatisierung von usb_modeswitch, so führt, dass es es ist Magie, wenn Sie plug-in Ihr Gerät getan werden kann mithilfe von udev-Regeln. Wenn Sie ein Fedora oder Ubuntu-basierte distribution, das erledigt für Sie, wenn Sie die Pakete installieren die Bereitstellung von usb_modeswitch (leider habe ich keine info über SUSE, aber ich denke, es ist ähnlich).In Fedora ist es das Paket use_modeswitch_data, die ein wrapper für die usb_modeswitch cmd und die notwendigen Regel-Dateien.
Wenn Sie wirklich wollen, bind/unbind-USB-Geräte-Treiber, siehe in diesem LWN-Artikel. Als root
echo $usbid > /sys/bus/usb/drivers/usb-storage/unbind
wird, trennen Sie das USB-Gerät mit$usbid
aus dem "usb-storage" - Treiber. Mit dem gleichen Befehl, aber mitbind
stattunbind
werde versuchen, binden Sie das Gerät an den Fahrer. Aber bewusst sein, dass es keinen Sinn macht (und funktioniert nicht) zu binden, ein Gerät, das wirkt wie ein Speicher-Gerät an einen usbnet-Treiber.