Linux怎么调试USB设备
本文小编为大家详细介绍“Linux怎么调试USB设备”,内容详细,步骤清晰,细节处理妥当,希望这篇“Linux怎么调试USB设备”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
lsusb命令用于显示本机的USB设备列表,以及USB设备的详细信息。lsusb命令是一个学习USB驱动开发,认识USB设备的助手,推荐大家使用,如果您的开发板中或者产品中没有lsusb命令可以自己移植一个,放到文件系统里面。
Centos7
安装usbutils默认Centos7系统中没有lsusb命令,我们需要安装usbutils安装包,才能使用lsusb:
[root@localhost~]#yum-yinstallusbutils列出usb设备信息
lsusb用于显示有关系统中的USB总线及其连接的设备的信息,下面运行lsusb:
[root@localhost~]#lsusbBus001Device010:ID0bda:0129RealtekSemiconductorCorp.RTS5129CardReaderControllerBus001Device055:ID0951:1665KingstonTechnologyDigitalDataTravelerSE964GBBus001Device001:ID1d6b:0002LinuxFoundation2.0roothubBus002Device003:ID0e0f:0002VMware,Inc.VirtualUSBHubBus002Device002:ID0e0f:0003VMware,Inc.VirtualMouseBus002Device001:ID1d6b:0001LinuxFoundation1.1roothub
lsusb将显示系统内部连接的驱动程序和设备。
上面输出内容解释如下: Bus 001 Device 055: ID 0951:1665 Kingston Technology Digital DataTraveler SE9 64GB
Bus 001
: 表示第一个usb控制器,可以使用lspci|grep USB查看主机有几个usb控制器Device 055
: 表示系统分配给这个金士顿存储设备的设备号ID
: 表示usb设备的IDKingston Technology Digital DataTraveler SE9 64GB
: 表示其制造商名称和设备名称我们还看到,系统中还附有USB 2.0 root hub 驱动程序和USB 1.1 root hub 驱动程序。
使用树状类型显示usb信息使用-t
选项,以树状结构显示usb信息:
[root@localhost~]#lsusb-t/:Bus04.Port1:Dev1,,Driver=xhci_hcd/4p,5000M/:Bus03.Port1:Dev1,,Driver=xhci_hcd/4p,480M|__Port1:Dev2,If0,Storage,Driver=usb-storage,480M/:Bus02.Port1:Dev1,,Driver=uhci_hcd/2p,12M|__Port1:Dev2,If0,InterfaceDevice,Driver=usbhid,12M|__Port2:Dev3,If0,,Driver=hub/7p,12M/:Bus01.Port1:Dev1,,Driver=ehci-pci/6p,480M
数字12M、480M、5000M表示USB的传输速度。
Linux从/usr/share/hwdata/usb.ids’识别USB设备的详细信息。lsusb列出的vendor和device name都是从这个文件里面识别出来的。
如何列出USB详细信息使用-v
参数查看usb详细信息:
[root@localhost~]#lsusb-v|lessBus001Device056:ID0951:1665KingstonTechnologyDigitalDataTravelerSE964GBDeviceDescriptor:bLength18bDescriptorType1bcdUSB2.00bDeviceClass0(DefinedatInterfacelevel)bDeviceSubClass0bDeviceProtocol0bMaxPacketSize064idVendor0x0951KingstonTechnologyidProduct0x1665DigitalDataTravelerSE964GBbcdDevice1.00iManufacturer1KingstoniProduct2DataTraveler2.0iSerial308606E6B6612FD50771C2A8BbNumConfigurations1ConfigurationDescriptor:bLength9bDescriptorType2wTotalLength32bNumInterfaces1bConfigurationValue1iConfiguration0bmAttributes0x80(BusPowered)MaxPower100mAInterfaceDescriptor:bLength9bLength9bDescriptorType4bInterfaceNumber0bAlternateSetting0bNumEndpoints2bInterfaceClass8MassStoragebInterfaceSubClass6SCSIbInterfaceProtocol80Bulk-OnlyiInterface0EndpointDescriptor:bLength7bDescriptorType5bEndpointAddress0x81EP1INbmAttributes2TransferTypeBulkSynchTypeNoneUsageTypeDatawMaxPacketSize0x02001x512bytesbInterval255EndpointDescriptor:bLength7bDescriptorType5bEndpointAddress0x02EP2OUTbmAttributes2TransferTypeBulkSynchTypeNoneUsageTypeDatawMaxPacketSize0x02001x512bytesbInterval255DeviceQualifier(forotherdevicespeed):bLength10bDescriptorType6bcdUSB2.00bDeviceClass0(DefinedatInterfacelevel)bDeviceSubClass0bDeviceProtocol0bMaxPacketSize064bNumConfigurations1DeviceStatus:0x0000(BusPowered)查找连接了多少个USB设备
查找链接的设备数量,可以使用下面命令查找:
[root@localhost~]#find/dev/bus/dev/bus/dev/bus/usb/dev/bus/usb/002/dev/bus/usb/002/003/dev/bus/usb/002/002/dev/bus/usb/002/001/dev/bus/usb/001/dev/bus/usb/001/056/dev/bus/usb/001/010/dev/bus/usb/001/001
结合使用lsusb命令和-D
参数,可以输出特定设备的详细信息。下面实例查看金士顿存储设备的详细信息:
[root@localhost~]#lsusb-D/dev/bus/usb/001/056
lsusb -v
为我们提供了非常详细的信息,我们可以配合使用grep命令查找指定的信息,下面过滤出idVendor
和Mass Storage
,来获取大容量存储设备:
[root@localhost~]#lsusb-v|grep-Ei'(idVendor|Mass\Storage)'idVendor0x0bdaRealtekSemiconductorCorp.idVendor0x0951KingstonTechnologybInterfaceClass8MassStorageidVendor0x1d6bLinuxFoundationidVendor0x0e0fVMware,Inc.idVendor0x0e0fVMware,Inc.idVendor0x1d6bLinuxFoundation
可以看到只有idVendor是Kingston Technology的设备才是大容量存储设备。
读到这里,这篇“Linux怎么调试USB设备”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。