কোন ইউএসবি ডিভাইসের জন্য কোন ড্রাইভারটি ব্যবহৃত হচ্ছে তা বোঝার কোনও উপায় আপনি সুপারিশ করতে পারেন? lspci -k
কমান্ডের সমতুল্য ইউএসবি বাছাই করুন ।
কোন ইউএসবি ডিভাইসের জন্য কোন ড্রাইভারটি ব্যবহৃত হচ্ছে তা বোঝার কোনও উপায় আপনি সুপারিশ করতে পারেন? lspci -k
কমান্ডের সমতুল্য ইউএসবি বাছাই করুন ।
উত্তর:
$ lsusb
Bus 010 Device 002: ID 046d:c01e Logitech, Inc. MX518 Optical Mouse
Bus 010 Device 003: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
আমরা এপিসি ইউপিএসের জন্য ড্রাইভার কী ব্যবহৃত হয় তা জানার চেষ্টা করতে যাচ্ছি। মনে রাখবেন যে এই প্রশ্নের দুটি উত্তর রয়েছে: কার্নেলটি ব্যবহার করবে এমন ড্রাইভার এবং বর্তমানে ব্যবহৃত ড্রাইভার use ইউজারস্পেস কার্নেলকে একটি ভিন্ন ড্রাইভার ব্যবহার করতে নির্দেশ দিতে পারে (এবং আমার এপিসি ইউপিএসের ক্ষেত্রে nut
রয়েছে)।
usbutils
প্যাকেজ (ডেবিয়ান, অন্তত দিকে) একটি স্ক্রিপ্ট নামক অন্তর্ভুক্ত usb-devices
। আপনি যদি এটি চালনা করেন তবে এটি সিস্টেমে থাকা ডিভাইসগুলি সম্পর্কে কোন চালক ব্যবহৃত হয় সে সম্পর্কে তথ্য আউটপুট দেয়:
$ usb-devices
⋮
T: Bus=10 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 3 Spd=1.5 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=051d ProdID=0002 Rev=01.06
S: Manufacturer=American Power Conversion
S: Product=Back-UPS RS 1500 FW:8.g9 .D USB FW:g9
S: SerialNumber=XXXXXXXXXXXX
C: #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=24mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver=usbfs
⋮
মনে রাখবেন এটি ডিফল্টর পরিবর্তে বর্তমান ড্রাইভারকে তালিকাবদ্ধ করে। ডিফল্টটিকে খুঁজে পাওয়ার কোনও উপায় নেই।
আপনার যদি ডিবাগগুলি মাউন্ট করা থাকে তবে কার্নেল usb-devices
প্রিন্ট করার সাথে সাথে একই ফরম্যাটে একটি ফাইল বজায় রাখে /sys/kernel/debug/usb/devices
; আপনি less
ইত্যাদি দিয়ে দেখতে পারেন নোট করুন যে ডিবাগফেস ইন্টারফেসগুলি স্থিতিশীল নয়, তাই বিভিন্ন কার্নেল সংস্করণগুলি আলাদা ফর্ম্যাটে মুদ্রণ করতে পারে বা ফাইলটি পুরোপুরি অনুপস্থিত।
আবার, এটি কেবলমাত্র চালককে দেখায়, ডিফল্ট নয়।
আপনি /sys
এর থেকে আরও বেশি বেদনাদায়ক ধারণা পেয়েছিলেন lspci
। এই /sys
ইন্টারফেসগুলি যুক্তিসঙ্গতভাবে স্থিতিশীল হওয়া উচিত, সুতরাং আপনি যদি শেল স্ক্রিপ্টটি লিখছেন তবে সম্ভবত আপনি এটি করতে চান।
প্রাথমিকভাবে, lsusb
1 থেকে ডিভাইসগুলি /sys
0 থেকে গণনা করা বলে মনে হচ্ছে, সুতরাং APC ইউপিএস lsusb কোথায় পাবেন 10 এর জন্য 10-2 একটি ভাল অনুমান bus ডিভাইস Unfortunately. দুর্ভাগ্যক্রমে, সময়ের সাথে সাথে ম্যাপিংটি ভেঙে যায় ys সিএসএফগুলি পুনরায় ব্যবহার করে সংখ্যাগুলি এমনকি ডিভাইসের নম্বরগুলি না থাকলেও। devnum
ফাইলের বিষয়বস্তু, lsusb কর্তৃক প্রদত্ত ডিভাইস সংখ্যা মেলে যাতে আপনি ভালো কিছু করতে পারি না হবে:
$ grep -l '^3$' /sys/bus/usb/devices/10-*/devnum # the ^ and $ to prevent also matching 13, 31, etc.
/sys/bus/usb/devices/10-2/devnum
সুতরাং, এই ক্ষেত্রে, এটি অবশ্যই 10-2
।
$ cd /sys/bus/usb/devices/10-2
$ ls
10-2:1.0 bDeviceClass bMaxPower descriptors ep_00 maxchild remove urbnum
authorized bDeviceProtocol bNumConfigurations dev idProduct power serial version
avoid_reset_quirk bDeviceSubClass bNumInterfaces devnum idVendor product speed
bcdDevice bmAttributes busnum devpath ltm_capable quirks subsystem
bConfigurationValue bMaxPacketSize0 configuration driver manufacturer removable uevent
আমরা নিশ্চিত হতে পারি cat
যে কয়েকটি ফাইলের আইংয়ের মাধ্যমে এটি সঠিক ডিভাইস :
$ cat idVendor idProduct manufacturer product
051d
0002
American Power Conversion
Back-UPS RS 1500 FW:8.g9 .D USB FW:g9
আপনি যদি 10-2: 1.0 তে লক্ষ্য করেন ( :1
এটি "কনফিগারেশন", .0
ইন্টারফেস — একটি একক ইউএসবি ডিভাইস একাধিক কাজ করতে পারে এবং একাধিক ড্রাইভার থাকতে পারে; এটি প্রদর্শিত lsusb -v
হবে), সেখানে একটি মডেলিয়াস ফাইল এবং একটি ড্রাইভার সিমলিংক রয়েছে:
$ cat 10-2\:1.0/modalias
usb:v051Dp0002d0106dc00dsc00dp00ic03isc00ip00in00
$ readlink driver
../../../../../../bus/usb/drivers/usbfs
সুতরাং, বর্তমান ড্রাইভার usbfs
। আপনি modinfo
মোডালিয়াদের সম্পর্কে জিজ্ঞাসা করে ডিফল্ট ড্রাইভারটি খুঁজে পেতে পারেন :
$ /sbin/modinfo `cat 10-2\:1.0/modalias`
filename: /lib/modules/3.6-trunk-amd64/kernel/drivers/hid/usbhid/usbhid.ko
license: GPL
description: USB HID core driver
author: Jiri Kosina
author: Vojtech Pavlik
author: Andreas Gal
alias: usb:v*p*d*dc*dsc*dp*ic03isc*ip*in*
depends: hid,usbcore
intree: Y
vermagic: 3.6-trunk-amd64 SMP mod_unload modversions
parm: mousepoll:Polling interval of mice (uint)
parm: ignoreled:Autosuspend with active leds (uint)
parm: quirks:Add/modify USB HID quirks by specifying quirks=vendorID:productID:quirks where vendorID, productID, and quirks are all in 0x-prefixed hex (array of charp)
সুতরাং, এপিসি ইউপিএস hid
ড্রাইভারের ডিফল্ট , যা সত্যই সঠিক। আর তার বর্তমানে ব্যবহার usbfs, যা থেকে সঠিক nut
'র usbhid-ups
এটা পর্যবেক্ষণ করা হয়।
ড্রাইভারটি যখন থাকে তখন usbfs
এটির অর্থ মূলত একটি ইউজারস্পেস (নন-কার্নেল) প্রোগ্রামটি ড্রাইভার হিসাবে কাজ করে। এটি কোন প্রোগ্রামের জন্য এটির মূল প্রয়োজন (এটি যদি আপনার প্রোগ্রাম হিসাবে প্রোগ্রামটি চলমান না থাকে) এবং মোটামুটি সহজ: যে কোনও প্রোগ্রামে ডিভাইস ফাইল খোলা থাকে।
আমরা জানি যে আমাদের "শিকার" ডিভাইসটি বাস 10, ডিভাইস 3 So সুতরাং ডিভাইস ফাইলটি /dev/bus/usb/010/003
(কমপক্ষে একটি আধুনিক দেবিয়ানের উপর), এবং lsof
উত্তরটি সরবরাহ করে:
# lsof /dev/bus/usb/010/003
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
usbhid-up 4951 nut 4u CHR 189,1154 0t0 8332 /dev/bus/usb/010/003
এবং প্রকৃতপক্ষে, এটি usbhid-ups
প্রত্যাশার মতো (lsof কমান্ডের নামটি লেআউটটিকে ফিট করার জন্য ছাঁটাইয়াছে, যদি আপনার পুরো নাম প্রয়োজন হয় তবে আপনি ps 4951
এটি পেতে ব্যবহার করতে পারেন , বা সম্ভবত কিছু lsof আউটপুট বিন্যাসের বিকল্প)।
/sys/bus/usb/devices
সঠিক। আমার বাস 1 এ একটি ডিভাইস রয়েছে যা usb-devices
বলে 12 ডিভাইস, তবে /sys/bus/usb/devices/1-11
আমার সিস্টেমে কোনও নেই ।
lsusb
নিজেই আপনাকে ভাল ফলাফল পেতে পারে। কমপ্যাক্ট আউটপুট জন্য আমি ব্যবহার করি lsusb -t
, যেখানে -t
ডিভাইসগুলি গাছ হিসাবে দেখায়; এই ফর্ম্যাটটি ড্রাইভারটিকেও প্রতিবেদন করে।
উদাহরণ আউটপুট:
$ lsusb -t
/: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 5000M
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M
...
যদি কোনও ড্রাইভার ব্যবহার না করা হয় তবে লাইনটি দেখতে দেখতে (আমার উদাহরণের ডিভাইসটি একটি ক্যামেরা যার জন্য আমি ড্রাইভারটি কার্নেল থেকে সরিয়েছি):
|__ Port 6: Dev 4, If 1, Class=Video, Driver=, 480M
ডারবার্ট যা লিখেছেন তা ছাড়াও আমি নিজেকে ব্যবহার করতে দেখছি
lsusb -t
যা সহায়ক «ড্রাইভার» অংশ সহ সংযুক্ত ডিভাইস সম্পর্কিত বিভিন্ন তথ্যের সাথে একটি গাছ মুদ্রণ করবে।
এবং
dmesg | grep driver
যা আপনাকে সর্বশেষতম প্লাগ-ইন ডিভাইসের ড্রাইভারদের তালিকাভুক্ত করবে।
উপকারিতাটি হ'ল এই দুটি কমান্ড সমস্ত বিতরণের সাথে ইনস্টল করা আছে।