Come identificare il modulo che deve rivendicare un dispositivo solo per ID fornitore / prodotto?


14

Supponiamo che io conosca gli ID numerici di prodotto / fornitore dell'hardware che non ho qui e voglio sapere se c'è un supporto per me nel kernel, posso farlo (esempio di ricevitore 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*
[...]

Da questo posso vedere quali dispositivi devono essere rivendicati btusbe mi richiede di conoscere il nome del modulo in anticipo. In alcuni casi, tuttavia, non ho la minima idea del nome o dei moduli che supportano tale dispositivo.

L'hardware di rete è una di quelle categorie che sembra molto difficile da scoprire. Inoltre, i nomi lspcie lsusbsono talvolta inconcludenti o semplicemente sbagliati. Attualmente sto esaminando l'intero albero dei sorgenti del kernel, che non è così elegante.

  • C'è un modo per elencare tutte le modalità di tutti i moduli (incluso il kernel integrato) in una volta sola in modo che io possa trovare una corrispondenza?
  • Oppure, in alternativa, c'è un modo per interrogare il kernel per fornirmi i moduli del kernel che affermano che un tale dispositivo non possiedo?

Casi d'uso:

  • Gli utenti che pongono qui domande a cui posso rispondere / duplicare verificando effettivamente che "il supporto è disponibile se esegui l'aggiornamento a ..." o "Prova rmmod module1; modprobe module2 come module2 sembra supportare anche il tuo dispositivo."
  • Verifica dell'assistenza prima di acquistare hardware con conoscenza preliminare degli ID. Oltre a cercare con gli ID, posso quindi cercare segnalazioni di bug sul modulo del kernel stesso.

Non c'è davvero un modo semplice per ottenere queste informazioni. Non tutti i dispositivi USB vengono rivendicati in base ai loro ID. I dispositivi di classe (archiviazione, HID e molti dispositivi seriali e di rete) sono identificati in base all'interfaccia fornita.
Alistair Buxton,

forse USB-ModeSwitch può essere d'aiuto. se non ce l'hai:sudo apt-get install usb-modeswitch
Dimitris Theodoridis,

digita lsusb e vedrai ID
Dimitris Theodoridis il

dalla tua domanda ho appena visto che vuoi vedere l'id e cambiarlo, sbaglio?
Dimitris Theodoridis,

ora non ti capisco davvero. per favore, spiega la tua domanda di quanto io possa capirla meglio e vedi se posso davvero aiutarti
Dimitris Theodoridis,

Risposte:


3

Se il problema viene riaffermato come "Come posso funzionare modinfosu tutti (o alcuni) moduli e selezionare un po 'dell'output per un ulteriore utilizzo?", Potresti usare questo trucco (ho lasciato i comandi che ho usato per capire come ottenere al risultato finale):

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

Questo trucco può essere usato altrove, buon divertimento!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.