Linux 查看usb设备信息
生活随笔
收集整理的這篇文章主要介紹了
Linux 查看usb设备信息
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
下面的信息都是在VMware中運(yùn)行Ubuntu12-04系統(tǒng)上執(zhí)行的。同樣該命令也支持在嵌入式系統(tǒng)中進(jìn)行USB調(diào)試。
一、cat設(shè)備節(jié)點(diǎn)獲取信息
在一些嵌入式開發(fā)中需要調(diào)試USB功能,經(jīng)常會(huì)cat /sys 下的相關(guān)設(shè)備節(jié)點(diǎn)來查看某些信息,比如說我們可以看到 /sys/bus/usb/devices 目錄有多個(gè)子目錄。進(jìn)入到某個(gè)子目錄可以看到usb設(shè)備更加詳細(xì)的信息(可以理解為設(shè)備描述符)。
1、usb設(shè)備在總線上的信息
// usb設(shè)備在總線上的信息 root@ubuntu:/sys/kernel/debug# cd /sys/bus/usb/devices root@ubuntu:/sys/bus/usb/devices# ll total 0 drwxr-xr-x 2 root root 0 Nov 26 21:21 ./ drwxr-xr-x 4 root root 0 Nov 26 21:21 ../ lrwxrwxrwx 1 root root 0 Nov 26 21:21 1-0:1.0 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-0:1.0/ lrwxrwxrwx 1 root root 0 Dec 15 23:10 1-1 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-1/ lrwxrwxrwx 1 root root 0 Dec 15 23:18 1-1:1.0 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-1/1-1:1.0/ lrwxrwxrwx 1 root root 0 Nov 26 21:21 2-0:1.0 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-0:1.0/ lrwxrwxrwx 1 root root 0 Nov 26 21:21 2-1 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-1/ lrwxrwxrwx 1 root root 0 Nov 26 21:21 2-1:1.0 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-1/2-1:1.0/ lrwxrwxrwx 1 root root 0 Nov 26 21:21 2-2 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-2/ lrwxrwxrwx 1 root root 0 Nov 26 21:21 2-2:1.0 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-2/2-2:1.0/ lrwxrwxrwx 1 root root 0 Nov 26 21:21 usb1 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/ lrwxrwxrwx 1 root root 0 Nov 26 21:21 usb2 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/其中 usbx/第x個(gè)總線,x-y:a.b/的目錄格式,x表示總線號(hào),y表示端口,a表示配置,b表示接口。
具體解釋可以參照如下:
2、特定設(shè)備的詳細(xì)信息
進(jìn)入到某個(gè)目錄中去,可以看到該設(shè)備的詳細(xì)信息,可用cat命令獲取信息。
// usb設(shè)備的詳細(xì)信息 root@ubuntu:/sys/bus/usb/devices/usb1# ll total 0 drwxr-xr-x 6 root root 0 Nov 26 21:21 ./ drwxr-xr-x 4 root root 0 Nov 26 21:21 ../ drwxr-xr-x 10 root root 0 Nov 26 21:21 1-0:1.0/ drwxr-xr-x 5 root root 0 Dec 15 23:10 1-1/ -rw-r--r-- 1 root root 4096 Dec 15 23:40 authorized -rw-r--r-- 1 root root 4096 Dec 15 23:40 authorized_default -rw-r--r-- 1 root root 4096 Dec 15 23:40 avoid_reset_quirk -r--r--r-- 1 root root 4096 Nov 26 21:21 bcdDevice -rw-r--r-- 1 root root 4096 Nov 26 21:21 bConfigurationValue -r--r--r-- 1 root root 4096 Nov 26 21:21 bDeviceClass -r--r--r-- 1 root root 4096 Nov 26 21:21 bDeviceProtocol -r--r--r-- 1 root root 4096 Nov 26 21:21 bDeviceSubClass -r--r--r-- 1 root root 4096 Dec 15 23:40 bmAttributes -r--r--r-- 1 root root 4096 Dec 15 23:40 bMaxPacketSize0 -r--r--r-- 1 root root 4096 Dec 15 23:40 bMaxPower -r--r--r-- 1 root root 4096 Dec 15 23:40 bNumConfigurations -r--r--r-- 1 root root 4096 Dec 15 23:40 bNumInterfaces -r--r--r-- 1 root root 4096 Nov 26 21:21 busnum -r--r--r-- 1 root root 4096 Dec 15 23:40 configuration -r--r--r-- 1 root root 65553 Nov 26 21:21 descriptors -r--r--r-- 1 root root 4096 Dec 15 23:40 dev -r--r--r-- 1 root root 4096 Nov 26 21:21 devnum -r--r--r-- 1 root root 4096 Dec 15 23:40 devpath lrwxrwxrwx 1 root root 0 Nov 27 20:06 driver -> ../../../../../bus/usb/drivers/usb/ drwxr-xr-x 3 root root 0 Dec 15 23:40 ep_00/ -r--r--r-- 1 root root 4096 Nov 26 21:21 idProduct -r--r--r-- 1 root root 4096 Nov 26 21:21 idVendor -r--r--r-- 1 root root 4096 Dec 15 23:40 ltm_capable -r--r--r-- 1 root root 4096 Nov 26 21:21 manufacturer -r--r--r-- 1 root root 4096 Dec 15 23:40 maxchild drwxr-xr-x 2 root root 0 Nov 26 21:21 power/ -r--r--r-- 1 root root 4096 Nov 26 21:21 product -r--r--r-- 1 root root 4096 Dec 15 23:40 quirks -r--r--r-- 1 root root 4096 Nov 26 21:21 removable --w------- 1 root root 4096 Dec 15 23:40 remove -r--r--r-- 1 root root 4096 Nov 26 21:21 serial -r--r--r-- 1 root root 4096 Nov 26 21:21 speed lrwxrwxrwx 1 root root 0 Nov 26 21:21 subsystem -> ../../../../../bus/usb/ -rw-r--r-- 1 root root 4096 Nov 26 21:21 uevent -r--r--r-- 1 root root 4096 Dec 15 23:40 urbnum -r--r--r-- 1 root root 4096 Dec 15 23:40 version二、使用debugfs
1、掛載 debugfs 到 /sys/kernel/debug 路徑下
root@ubuntu:mount -t debugfs none /sys/kernel/debug2、執(zhí)行上述步驟之后,在 /sys/kernel/debug 就會(huì)生成如下的文件
root@ubuntu:/sys/bus/usb/devices# cd /sys/kernel/debug/ root@ubuntu:/sys/kernel/debug# ll total 0 drwx------ 22 root root 0 Nov 26 21:21 ./ drwxr-xr-x 7 root root 0 Nov 26 21:21 ../ drwxr-xr-x 2 root root 0 Nov 26 21:21 acpi/ drwxr-xr-x 32 root root 0 Dec 4 16:30 bdi/ drwxr-xr-x 2 root root 0 Nov 26 21:21 bluetooth/ drwxr-xr-x 2 root root 0 Nov 26 21:21 cleancache/ drwxr-xr-x 2 root root 0 Nov 26 21:21 dma_buf/ drwxr-xr-x 4 root root 0 Nov 26 21:21 dri/ drwxr-xr-x 2 root root 0 Nov 26 21:21 dynamic_debug/ drwxr-xr-x 2 root root 0 Nov 26 21:21 extfrag/ drwxr-xr-x 2 root root 0 Nov 26 21:21 frontswap/ -r--r--r-- 1 root root 0 Nov 26 21:21 gpio drwxr-xr-x 3 root root 0 Nov 26 21:21 hid/ drwxr-xr-x 2 root root 0 Nov 26 21:21 kprobes/ drwxr-xr-x 3 root root 0 Nov 26 21:21 kvm-guest/ drwxr-xr-x 2 root root 0 Nov 26 21:21 mce/ drwxr-xr-x 2 root root 0 Nov 26 21:21 pinctrl/ -r--r--r-- 1 root root 0 Nov 26 21:21 pwm drwxr-xr-x 2 root root 0 Nov 26 21:21 regmap/ drwxr-xr-x 3 root root 0 Nov 26 21:21 regulator/ -rw-r--r-- 1 root root 0 Nov 26 21:21 sched_features -r--r--r-- 1 root root 0 Nov 26 21:21 sleep_time -r--r--r-- 1 root root 0 Nov 26 21:21 suspend_stats drwxr-xr-x 7 root root 0 Nov 26 21:21 tracing/ drwxr-xr-x 3 root root 0 Nov 26 21:21 usb/ drwxr-xr-x 2 root root 0 Nov 26 21:21 virtio-ports/ -r--r--r-- 1 root root 0 Nov 26 21:21 vmmemctl -r--r--r-- 1 root root 0 Nov 26 21:21 wakeup_sources drwxr-xr-x 2 root root 0 Nov 26 21:21 x86/3、cat 設(shè)備節(jié)點(diǎn)
執(zhí)行下述命令之后會(huì)以特定格式打印目前USB總線上所有USB設(shè)備的信息如下:
root@ubuntu:/sys/kernel/debug# cat usb/devices T: Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2 B: Alloc= 17/900 us ( 2%), #Int= 1, #Iso= 0 D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=1d6b ProdID=0001 Rev= 3.13 S: Manufacturer=Linux 3.13.0-32-generic uhci_hcd S: Product=UHCI Host Controller S: SerialNumber=0000:02:00.0 C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255msT: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 0 D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0e0f ProdID=0003 Rev= 1.03 S: Manufacturer=VMware S: Product=VMware Virtual USB Mouse C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 0mA I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=02 Driver=usbhid E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=1msT: Bus=02 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 3 Spd=12 MxCh= 7 D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0e0f ProdID=0002 Rev= 1.00 S: Product=VMware Virtual USB Hub C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=255msT: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 6 B: Alloc= 0/800 us ( 0%), #Int= 1, #Iso= 0 D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=1d6b ProdID=0002 Rev= 3.13 S: Manufacturer=Linux 3.13.0-32-generic ehci_hcd S: Product=EHCI Host Controller S: SerialNumber=0000:02:03.0 C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256msT: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 7 Spd=480 MxCh= 0 D: Ver= 2.00 Cls=ff(vend.) Sub=ff Prot=ff MxPS=64 #Cfgs= 1 P: Vendor=0bda ProdID=0129 Rev=39.60 S: Manufacturer=Generic S: Product=USB2.0-CRW S: SerialNumber=20100201396000000 C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=500mA I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=06 Prot=50 Driver=rts5139 E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=83(I) Atr=03(Int.) MxPS= 3 Ivl=64ms至于信息的詳細(xì)解析可以參照 Linux源代碼中 Documentation/usb/proc_usb_info.txt 文件?,F(xiàn)摘錄其中對(duì)該格式的詳細(xì)解釋:
Each line is tagged with a one-character ID for that line:T = Topology (etc.) B = Bandwidth (applies only to USB host controllers, which arevirtualized as root hubs) D = Device descriptor info. P = Product ID info. (from Device descriptor, but they won't fittogether on one line) S = String descriptors. C = Configuration descriptor info. (* = active configuration) I = Interface descriptor info. E = Endpoint descriptor info.Legend:d = decimal number (may have leading spaces or 0's)x = hexadecimal number (may have leading spaces or 0's)s = stringTopology info:T: Bus=dd Lev=dd Prnt=dd Port=dd Cnt=dd Dev#=ddd Spd=dddd MxCh=dd | | | | | | | | |__MaxChildren | | | | | | | |__Device Speed in Mbps | | | | | | |__DeviceNumber | | | | | |__Count of devices at this level | | | | |__Connector/Port on Parent for this device | | | |__Parent DeviceNumber | | |__Level in topology for this bus | |__Bus number |__Topology info tagSpeed may be:1.5 Mbit/s for low speed USB12 Mbit/s for full speed USB480 Mbit/s for high speed USB (added for USB 2.0);also used for Wireless USB, which has no fixed speed5000 Mbit/s for SuperSpeed USB (added for USB 3.0)For reasons lost in the mists of time, the Port number is alwaystoo low by 1. For example, a device plugged into port 4 willshow up with "Port=03".Bandwidth info: B: Alloc=ddd/ddd us (xx%), #Int=ddd, #Iso=ddd | | | |__Number of isochronous requests | | |__Number of interrupt requests | |__Total Bandwidth allocated to this bus |__Bandwidth info tagBandwidth allocation is an approximation of how much of one frame(millisecond) is in use. It reflects only periodic transfers, whichare the only transfers that reserve bandwidth. Control and bulktransfers use all other bandwidth, including reserved bandwidth thatis not used for transfers (such as for short packets).The percentage is how much of the "reserved" bandwidth is scheduled bythose transfers. For a low or full speed bus (loosely, "USB 1.1"),90% of the bus bandwidth is reserved. For a high speed bus (loosely,"USB 2.0") 80% is reserved.Device descriptor info & Product ID info:D: Ver=x.xx Cls=xx(s) Sub=xx Prot=xx MxPS=dd #Cfgs=dd P: Vendor=xxxx ProdID=xxxx Rev=xx.xxwhere D: Ver=x.xx Cls=xx(sssss) Sub=xx Prot=xx MxPS=dd #Cfgs=dd | | | | | | |__NumberConfigurations | | | | | |__MaxPacketSize of Default Endpoint | | | | |__DeviceProtocol | | | |__DeviceSubClass | | |__DeviceClass | |__Device USB version |__Device info tag #1where P: Vendor=xxxx ProdID=xxxx Rev=xx.xx | | | |__Product revision number | | |__Product ID code | |__Vendor ID code |__Device info tag #2String descriptor info:S: Manufacturer=ssss | |__Manufacturer of this device as read from the device. | For USB host controller drivers (virtual root hubs) this may | be omitted, or (for newer drivers) will identify the kernel | version and the driver which provides this hub emulation. |__String info tagS: Product=ssss | |__Product description of this device as read from the device. | For older USB host controller drivers (virtual root hubs) this | indicates the driver; for newer ones, it's a product (and vendor) | description that often comes from the kernel's PCI ID database. |__String info tagS: SerialNumber=ssss | |__Serial Number of this device as read from the device. | For USB host controller drivers (virtual root hubs) this is | some unique ID, normally a bus ID (address or slot name) that | can't be shared with any other device. |__String info tagConfiguration descriptor info:C:* #Ifs=dd Cfg#=dd Atr=xx MPwr=dddmA | | | | | |__MaxPower in mA | | | | |__Attributes | | | |__ConfiguratioNumber | | |__NumberOfInterfaces | |__ "*" indicates the active configuration (others are " ") |__Config info tagUSB devices may have multiple configurations, each of which actrather differently. For example, a bus-powered configurationmight be much less capable than one that is self-powered. Onlyone device configuration can be active at a time; most deviceshave only one configuration.Each configuration consists of one or more interfaces. Eachinterface serves a distinct "function", which is typically boundto a different USB device driver. One common example is a USBspeaker with an audio interface for playback, and a HID interfacefor use with software volume control.Interface descriptor info (can be multiple per Config):I:* If#=dd Alt=dd #EPs=dd Cls=xx(sssss) Sub=xx Prot=xx Driver=ssss | | | | | | | | |__Driver name | | | | | | | | or "(none)" | | | | | | | |__InterfaceProtocol | | | | | | |__InterfaceSubClass | | | | | |__InterfaceClass | | | | |__NumberOfEndpoints | | | |__AlternateSettingNumber | | |__InterfaceNumber | |__ "*" indicates the active altsetting (others are " ") |__Interface info tagA given interface may have one or more "alternate" settings.For example, default settings may not use more than a smallamount of periodic bandwidth. To use significant fractionsof bus bandwidth, drivers must select a non-default altsetting.Only one setting for an interface may be active at a time, andonly one driver may bind to an interface at a time. Most deviceshave only one alternate setting per interface.Endpoint descriptor info (can be multiple per Interface):E: Ad=xx(s) Atr=xx(ssss) MxPS=dddd Ivl=dddss | | | | |__Interval (max) between transfers | | | |__EndpointMaxPacketSize | | |__Attributes(EndpointType) | |__EndpointAddress(I=In,O=Out) |__Endpoint info tagThe interval is nonzero for all periodic (interrupt or isochronous)endpoints. For high speed endpoints the transfer interval may bemeasured in microseconds rather than milliseconds.For high speed periodic endpoints, the "MaxPacketSize" reflectsthe per-microframe data transfer size. For "high bandwidth"endpoints, that can reflect two or three packets (for up to3KBytes every 125 usec) per endpoint.With the Linux-USB stack, periodic bandwidth reservations use thetransfer intervals and sizes provided by URBs, which can be lessthan those found in endpoint descriptor.總結(jié)
以上是生活随笔為你收集整理的Linux 查看usb设备信息的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于android的webview打开淘
- 下一篇: 常用快递电子面单接口API对接方法