Wie identifiziert man das Modul, das ein Gerät beanspruchen soll, anhand der Hersteller- / Produkt-ID?

14

Angenommen, ich kenne die numerischen Produkt- / Anbieter-IDs der Hardware, die ich hier nicht habe, und möchte wissen, ob der Kernel Unterstützung für mich bietet. Ich kann dies tun (Beispiel für einen USB-Bluetooth-Empfänger):

modinfo btusb
filename:       /lib/modules/3.7.5-030705-generic/kernel/drivers/bluetooth/btusb.ko
[...]
alias:          usb:v0A5Cp*d*dc*dsc*dp*icFFisc01ip01in*
alias:          usb:v0489p*d*dc*dsc*dp*icFFisc01ip01in*
alias:          usb:v413Cp8197d*dc*dsc*dp*ic*isc*ip*in*
[...]

Daraus kann ich ersehen, von welchen Geräten Ansprüche geltend gemacht werden sollen btusbund es setzt voraus, dass ich den Modulnamen vorher kenne. In einigen Fällen habe ich jedoch keine Ahnung, welche Modulnamen ein solches Gerät unterstützen.

Netzwerkhardware ist eine dieser Kategorien, über die es sehr schwierig zu sein scheint, etwas herauszufinden. Außerdem sind die Namen lspciund lsusbmanchmal nicht schlüssig oder einfach falsch. Ich bin gerade dabei, den gesamten Kernel-Source-Tree zu durchsuchen, was nicht so elegant ist.

  • Gibt es eine Möglichkeit, alle Modaliases aller Module (einschließlich der im Kernel integrierten) auf einmal aufzulisten , damit ich eine Übereinstimmung finden kann?
  • Oder gibt es alternativ eine Möglichkeit, den Kernel abzufragen, um mir die Kernelmodule zur Verfügung zu stellen, die behaupten, ein solches Gerät zu besitzen, das ich eigentlich nicht besitze?

Anwendungsfälle:

  • Benutzer, die hier Fragen stellen, die ich beantworten / täuschen kann, indem sie tatsächlich überprüfen, ob "Unterstützung vorhanden ist, wenn Sie auf ... aktualisieren" oder "Probieren Sie rmmod module1; modprobe module2 als module2 scheint auch Ihr Gerät zu unterstützen".
  • Überprüfung des Supports vor dem Kauf von Hardware mit vorheriger Kenntnis der IDs. Zusätzlich zur Suche mit den IDs kann ich dann auf dem Kernelmodul selbst nach Fehlerberichten suchen.
gertvdijk
quelle
Es gibt keinen einfachen Weg, an diese Informationen zu kommen. Nicht alle USB-Geräte werden anhand ihrer IDs beansprucht. Klassenbasierte Geräte (Speicher-, HID- und viele serielle Geräte und Netzwerkgeräte) werden anhand der von ihnen bereitgestellten Schnittstelle identifiziert.
Alistair Buxton
vielleicht kann usb-modeswitch dabei helfen. wenn Sie es nicht haben:sudo apt-get install usb-modeswitch
Dimitris Theodoridis
Geben Sie lsusb ein und Sie sehen ID
Dimitris Theodoridis
Von Ihrer Frage habe ich gerade gesehen, dass Sie ID sehen und ändern möchten, irre ich mich?
Dimitris Theodoridis
Jetzt verstehe ich dich wirklich nicht. Bitte erklären Sie Ihre Frage, als ich es besser verstehen kann und sehen, ob ich Ihnen tatsächlich helfen kann
Dimitris Theodoridis

Antworten:

3

Wenn Sie das Problem wie folgt wiederholen: "Wie kann ich modinfoauf allen (oder einigen) Modulen ausführen und einen Teil der Ausgabe für die weitere Verwendung auswählen?" zum Endergebnis):

ls /lib/modules
ls /lib/modules/$(uname -r)
ls /lib/modules/$(uname -r)/kernel
find  /lib/modules/$(uname -r)/kernel -type f -name '*.ko' -print
for i in $( !! ) ; do
for i in $( find  /lib/modules/$(uname -r)/kernel -type f -name '*.ko' -print ) ; do
   j=${i##.*/}
   j=${j%%.ko}
   echo $j
   modinfo $i | egrep 'filename:|alias:'
   echo ""
   done

Dieser Trick kann an anderer Stelle verwendet werden, viel Spaß!

Waltinator
quelle