Bagaimana cara mengidentifikasi modul yang seharusnya mengklaim perangkat hanya oleh vendor / ID produk?

14

Misalkan saya tahu produk numerik / ID vendor perangkat keras yang tidak saya miliki di sini dan saya ingin tahu apakah ada dukungan untuk saya di kernel, saya bisa melakukan ini (contoh penerima 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*
[...]

Dari sini saya bisa melihat perangkat mana yang harus diklaim btusbdan mengharuskan saya untuk mengetahui nama modul sebelumnya. Namun dalam beberapa kasus, saya tidak memiliki petunjuk tentang nama modul yang mendukung perangkat tersebut.

Perangkat keras jaringan adalah salah satu kategori yang tampaknya sangat sulit untuk diketahui. Juga, lspcidan lsusbnama-nama kadang-kadang tidak meyakinkan atau hanya salah. Saat ini saya memahami seluruh pohon sumber kernel, yang tidak begitu elegan.

  • Apakah ada cara untuk mendaftar semua modaliases dari semua modul (termasuk built-in ke kernel) dalam sekali jalan sehingga saya dapat menemukan kecocokan?
  • Atau, sebagai alternatif, apakah ada cara untuk meminta kernel untuk memberikan saya modul kernel yang mengklaim perangkat seperti itu yang sebenarnya tidak saya miliki?

Gunakan kasing:

  • Pengguna yang mengajukan pertanyaan di sini yang dapat saya jawab / tiru dengan benar-benar memverifikasi bahwa "dukungan ada jika Anda meningkatkan ke ..." atau "Coba rmmod module1; modprobe module2 sebagai module2 tampaknya mendukung perangkat Anda juga."
  • Memeriksa dukungan sebelum membeli perangkat keras dengan pengetahuan ID sebelumnya. Selain mencari dengan ID, saya kemudian dapat mencari laporan bug pada modul kernel itu sendiri.
gertvdijk
sumber
Sebenarnya tidak ada cara mudah untuk mendapatkan informasi ini. Tidak semua perangkat USB diklaim berdasarkan ID mereka. Perangkat berbasis kelas (penyimpanan, HID, dan banyak perangkat serial dan jaringan) diidentifikasi berdasarkan antarmuka apa yang mereka sediakan.
Alistair Buxton
mungkin usb-modewitch dapat membantu dengan itu. jika Anda tidak memilikinya:sudo apt-get install usb-modeswitch
Dimitris Theodoridis
ketik lsusb dan Anda akan melihat ID
Dimitris Theodoridis
dari pertanyaan Anda, saya hanya melihat bahwa Anda ingin melihat id dan mengubahnya, apakah saya salah?
Dimitris Theodoridis
sekarang aku benar-benar tidak mengerti kamu. tolong jelaskan pertanyaan Anda daripada yang bisa saya pahami dengan lebih baik dan lihat apakah saya benar-benar dapat membantu Anda
Dimitris Theodoridis

Jawaban:

3

Jika Anda menyatakan kembali masalahnya sebagai "Bagaimana saya bisa menjalankan modinfosemua (atau beberapa) modul dan memilih beberapa output untuk digunakan lebih lanjut?", Anda bisa menggunakan trik ini (saya telah meninggalkan perintah yang saya gunakan untuk mencari cara mendapatkan ke hasil akhir):

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

Trik ini bisa digunakan di tempat lain, bersenang-senang!

waltinator
sumber