Saya perlu mendapatkan judul perangkat USB yang terpasang. Saya bisa melakukannya dengan lsusb
.
udev memungkinkan beberapa pergantian ketika saya menulis aturan: katakanlah, kita dapat menggunakan $kernel
untuk mendapatkan nama perangkat, atau $devpath
untuk mendapatkan jalur ke perangkat.
Tapi masalahnya adalah lsusb
mengembalikan string seperti itu:
Bus 005 Device 032: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
Tapi devpath udev adalah:
/devices/pci0000:00/0000:00:1d.0/usb5/5-2
Nomor bus adalah sama ( 5
), tetapi jumlahnya berbeda: Device 032
tampaknya ada beberapa nomor logis (ketika saya memasang kembali perangkat, angka ini bertambah), dan 2
tampaknya menjadi nomor perangkat fisik.
Jadi udev mengembalikan bilangan fisik, dan saya perlu mendapatkan bilangan logis. Lalu, saya dapat mengambil data seperti ini:lsusb -D /dev/bus/usb/005/032
Jadi, bagaimana saya bisa mendapatkan nomor perangkat logis 032
dengan jalur fisik seperti /devices/pci0000:00/0000:00:1d.0/usb5/5-2
?
udev
vslsusb
dansys/devices/..
vs./dev/bus/usb/..
dan menilai jawaban Anda, sepertinya Anda tahu :) Mungkin Anda bisa menjelaskan dua pertanyaan ini? askubuntu.com/questions/342061/power-on-off-usb-ports dan askubuntu.com/questions/498950/…/sys/devices/...
vs/dev/...
:/sys
diisi oleh kernel, ini merupakan representasi dari hirarki perangkat kernel yang sebenarnya. Udev adalah daemon ruang pengguna yang menangani/sys
hierarki dan populate/dev/...
(mengambil aturan dalam akun). Jadi, udev sepenuhnya bertanggung jawab atas/dev
konten.Jawaban yang diterima benar-benar tidak banyak membantu saya. Saya akhirnya menemukan cara dengan memeriksa idProduct dan idVendor jika ada. Ini skrip shell
Inilah yang saya dapatkan di sistem saya.
Di sini saya bisa melihat, bahwa misalnya
0a5c:21e6
, yang merupakan perangkat bluetooth, peta ke2-1.4
.Untuk kenyamanan yang lebih besar Anda bisa mendefinisikan ini sebagai fungsi di shell Anda, sesuatu seperti
sumber