¿Cómo identificar el módulo que supuestamente reclama un dispositivo solo por la identificación del proveedor / producto?

14

Supongamos que conozco las identificaciones numéricas de productos / proveedores de hardware que no tengo aquí y quiero saber si hay soporte para mí en el kernel, puedo hacer esto (ejemplo de receptor USB Bluetooth):

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

A partir de esto, puedo ver qué dispositivos deben ser reclamados btusby me exige conocer el nombre del módulo de antemano. Sin embargo, en algunos casos, no tengo ni idea sobre los nombres de los módulos que admiten dicho dispositivo.

El hardware de red es una de esas categorías que parece muy difícil de encontrar. Además, los nombres lspciy a lsusbveces no son concluyentes o simplemente están equivocados. Actualmente estoy trabajando en todo el árbol de fuentes del núcleo, que no es tan elegante.

  • ¿Hay alguna manera de enumerar todas las modalidades de todos los módulos (incluido el núcleo) de una sola vez para que pueda encontrar una coincidencia?
  • O, alternativamente, ¿hay alguna manera de consultar el núcleo para proporcionarme los módulos del núcleo que reclaman un dispositivo que en realidad no tengo?

Casos de uso:

  • Los usuarios que hacen preguntas aquí con las que puedo responder / engañar verificando realmente que "el soporte técnico está disponible si actualizas a ..." o "Prueba rmmod module1; modprobe module2 ya que el módulo2 también parece ser compatible con tu dispositivo".
  • Comprobación de soporte antes de comprar hardware con conocimiento previo de las ID. Además de buscar con las ID, puedo buscar informes de errores en el propio módulo del kernel.
gertvdijk
fuente
Realmente no hay una manera fácil de obtener esta información. No todos los dispositivos USB se reclaman en función de sus ID. Los dispositivos basados ​​en clases (almacenamiento, HID y muchos dispositivos seriales y de red) se identifican en función de la interfaz que proporcionan.
Alistair Buxton
tal vez usb-modeswitch pueda ayudar con eso. si no lo tiene:sudo apt-get install usb-modeswitch
Dimitris Theodoridis
escriba lsusb y verá la identificación
Dimitris Theodoridis
de su pregunta acabo de ver que quiere ver la identificación y cambiarla, ¿me equivoco?
Dimitris Theodoridis
ahora realmente no te entiendo. explique su pregunta para que pueda entenderla mejor y vea si realmente puedo ayudarlo
Dimitris Theodoridis

Respuestas:

3

Si vuelve a plantear el problema como "¿Cómo puedo ejecutar modinfoen todos (o algunos) módulos y seleccionar parte de la salida para usarlo más?", Podría usar este truco (he dejado los comandos que usé para descubrir cómo obtener hasta el resultado 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

Este truco se puede usar en otros lugares, ¡diviértete!

Waltinator
fuente