Comment identifier le module censé revendiquer un appareil uniquement par ID de fournisseur / produit?

14

Supposons que je connaisse les identifiants numériques de produit / fournisseur du matériel que je n'ai pas ici et que je veux savoir s'il y a un support pour moi dans le noyau, je peux le faire (exemple de récepteur Bluetooth USB):

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*
[...]

À partir de là, je peux voir quels appareils doivent être réclamés btusbet cela nécessite que je connaisse le nom du module au préalable. Dans certains cas cependant, je n'ai aucune idée du nom du ou des modules prenant en charge un tel périphérique.

Le matériel réseau est l'une de ces catégories qui semble très difficile à découvrir. De plus, les noms lspciet lsusbsont parfois peu concluants ou tout simplement faux. Je suis en train de parcourir l'ensemble de l'arborescence des sources du noyau, ce qui n'est pas si élégant.

  • Existe-t-il un moyen de répertorier toutes les modalias de tous les modules (y compris ceux intégrés au noyau) en une seule fois afin que je puisse trouver une correspondance?
  • Ou bien, existe-t-il un moyen d'interroger le noyau pour me fournir les modules du noyau revendiquant un tel périphérique que je ne possède pas réellement?

Cas d'utilisation:

  • Les utilisateurs qui posent ici des questions auxquelles je peux répondre / duper en vérifiant que "le support est disponible si vous passez à ..." ou "Essayez rmmod module1; modprobe module2 car module2 semble également prendre en charge votre appareil."
  • Vérifier le support avant d'acheter du matériel avec une connaissance préalable des identifiants. En plus de rechercher avec les ID, je peux ensuite rechercher des rapports de bogues sur le module du noyau lui-même.
gertvdijk
la source
Il n'y a pas vraiment de moyen facile d'obtenir ces informations. Tous les périphériques USB ne sont pas revendiqués en fonction de leurs identifiants. Les périphériques basés sur la classe (stockage, HID et de nombreux périphériques série et réseau) sont identifiés en fonction de l'interface qu'ils fournissent.
Alistair Buxton
peut-être que le mode usb peut vous aider. si vous ne l'avez pas:sudo apt-get install usb-modeswitch
Dimitris Theodoridis
tapez lsusb et vous verrez ID
Dimitris Theodoridis
à partir de votre question, je viens de voir que vous voulez voir l'identifiant et le changer, je me trompe?
Dimitris Theodoridis
maintenant je ne te comprends vraiment pas. veuillez expliquer votre question que je peux mieux comprendre et voir si je peux réellement vous aider
Dimitris Theodoridis

Réponses:

3

Si vous reformulez le problème comme "Comment puis-je exécuter modinfosur tous (ou certains) modules et sélectionner une partie de la sortie pour une utilisation ultérieure?", Vous pouvez utiliser cette astuce (j'ai laissé les commandes que j'ai utilisées pour comprendre comment obtenir au résultat final):

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

Cette astuce peut être utilisée ailleurs, amusez-vous!

waltinator
la source