কোন ইউএসবি ডিভাইসের সাথে কোন মডিউল যুক্ত?


35

কোন ইউএসবি ডিভাইসের জন্য কোন ড্রাইভারটি ব্যবহৃত হচ্ছে তা বোঝার কোনও উপায় আপনি সুপারিশ করতে পারেন? lspci -kকমান্ডের সমতুল্য ইউএসবি বাছাই করুন ।

উত্তর:


57

কার্নেল ড্রাইভার (গুলি) সন্ধান করা

শিকার ডিভাইস

$ 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রয়েছে)।

পদ্ধতি 1: ব্যবহারকারীর ব্যবহার (সহজ)

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
⋮

মনে রাখবেন এটি ডিফল্টর পরিবর্তে বর্তমান ড্রাইভারকে তালিকাবদ্ধ করে। ডিফল্টটিকে খুঁজে পাওয়ার কোনও উপায় নেই।

পদ্ধতি 2: ডিবাগ ব্যবহার করে (মূলের প্রয়োজন)

আপনার যদি ডিবাগগুলি মাউন্ট করা থাকে তবে কার্নেল usb-devicesপ্রিন্ট করার সাথে সাথে একই ফরম্যাটে একটি ফাইল বজায় রাখে /sys/kernel/debug/usb/devices; আপনি lessইত্যাদি দিয়ে দেখতে পারেন নোট করুন যে ডিবাগফেস ইন্টারফেসগুলি স্থিতিশীল নয়, তাই বিভিন্ন কার্নেল সংস্করণগুলি আলাদা ফর্ম্যাটে মুদ্রণ করতে পারে বা ফাইলটি পুরোপুরি অনুপস্থিত।

আবার, এটি কেবলমাত্র চালককে দেখায়, ডিফল্ট নয়।

পদ্ধতি 3: সরাসরি পড়ার / সিসের জন্য কেবলমাত্র বেসিক ইউটিলিটিগুলি ব্যবহার করা (স্ক্রিপ্টিং বা পুনরুদ্ধারের জন্য সেরা)

আপনি /sysএর থেকে আরও বেশি বেদনাদায়ক ধারণা পেয়েছিলেন lspci। এই /sysইন্টারফেসগুলি যুক্তিসঙ্গতভাবে স্থিতিশীল হওয়া উচিত, সুতরাং আপনি যদি শেল স্ক্রিপ্টটি লিখছেন তবে সম্ভবত আপনি এটি করতে চান।

প্রাথমিকভাবে, lsusb1 থেকে ডিভাইসগুলি /sys0 থেকে গণনা করা বলে মনে হচ্ছে, সুতরাং 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 আউটপুট বিন্যাসের বিকল্প)।


আমি অবশ্যই উইন্ডোজ বনাম লিনাক্সের এই বন্ধুটির সাথে আমার বন্ধুর সাথে আমার সর্বদা চলমান বিতর্কে অবশ্যই আলগা হব :) একটি সহজ সমাধান পপ আপ হয়েছে কিনা তা দেখতে কয়েক দিন সময় দেবে। চেষ্টা করার জন্য ধন্যবাদ.
TheMeaningfulEngineer

@ অ্যালান ঠিক আছে, আমি আরও দুটি উপায় খুঁজে পেয়েছি, তার মধ্যে একটি বেশ সহজ। এছাড়াও, "কোন ড্রাইভার" এর দুটি সম্ভাব্য উত্তর সম্পর্কে আমি স্পষ্ট করেছি? প্রতিটি পদ্ধতি সরবরাহ করে।
ডারোবার্ট

আমি মনে করি না যে ডিভাইসটির ভিতরে অবস্থান সম্পর্কিত আপনার দাবিটি /sys/bus/usb/devicesসঠিক। আমার বাস 1 এ একটি ডিভাইস রয়েছে যা usb-devicesবলে 12 ডিভাইস, তবে /sys/bus/usb/devices/1-11আমার সিস্টেমে কোনও নেই ।
সেরিন

@ কেরিন সত্যিই তা নয়। আমি আরও একটি ভাল করা হবে। ধন্যবাদ.
ডারোবার্ট

13

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

0

ডারবার্ট যা লিখেছেন তা ছাড়াও আমি নিজেকে ব্যবহার করতে দেখছি

lsusb -t

যা সহায়ক «ড্রাইভার» অংশ সহ সংযুক্ত ডিভাইস সম্পর্কিত বিভিন্ন তথ্যের সাথে একটি গাছ মুদ্রণ করবে।

এবং

dmesg | grep driver

যা আপনাকে সর্বশেষতম প্লাগ-ইন ডিভাইসের ড্রাইভারদের তালিকাভুক্ত করবে।

উপকারিতাটি হ'ল এই দুটি কমান্ড সমস্ত বিতরণের সাথে ইনস্টল করা আছে।


0

তোলা যায় ব্যবহার করতে পারেন lshwযা USB ও এর ফলে PCI, ইত্যাদি যাতে আপনি দেখতে পারেন যা চালক এটি ব্যবহার করে এর সাথে সংশ্লিষ্ট অন্যান্য ID- র সহ সব বাস ডিভাইসগুলি গনা হবে:

sudo lshw
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.