zoukankan      html  css  js  c++  java
  • (三) 查看USB设备


    title: 查看USB设备
    date: 2019/4/23 19:10:00
    toc: true

    查看USB设备

    原文更详细参考

    lsusb

    # 列出所有设备
    $ lsusb
    Bus 001 Device 002: ID 05a3:9310 ARC International
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
    Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
    Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    
    # 打印指定USB设备的具体的描述符 -d 指定usb -v 显示详细信息
    lsusb -d 05a3:9310 -v
    

    ll /sys/bus/usb/devices

    其中 usbx/第x个总线,x-y:a.b/的目录格式,x表示总线号,y表示端口,a表示配置,b表示接口。 更详细的子目录查看

    book@100ask:/sys/bus/usb/devices$ cd /sys/bus/usb/devices
    book@100ask:/sys/bus/usb/devices$ ls
    1-0:1.0  1-1  1-1:1.0  1-1:1.1  1-1:1.2  1-1:1.3  2-0:1.0  2-1  2-1:1.0  2-2  2-2:1.0  usb1  usb2
    book@100ask:/sys/bus/usb/devices$ ll
    总用量 0
    drwxr-xr-x 2 root root 0 4月  18 18:04 ./
    drwxr-xr-x 4 root root 0 4月  18 17:29 ../
    lrwxrwxrwx 1 root root 0 4月  18 17:29 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 4月  18 18:04 1-1 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-1/
    lrwxrwxrwx 1 root root 0 4月  18 18:04 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 4月  18 18:04 1-1:1.1 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-1/1-1:1.1/
    lrwxrwxrwx 1 root root 0 4月  18 18:04 1-1:1.2 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-1/1-1:1.2/
    lrwxrwxrwx 1 root root 0 4月  18 18:04 1-1:1.3 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-1/1-1:1.3/
    lrwxrwxrwx 1 root root 0 4月  18 17:29 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 4月  18 17:29 2-1 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-1/
    lrwxrwxrwx 1 root root 0 4月  18 17:29 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 4月  18 17:29 2-2 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-2/
    lrwxrwxrwx 1 root root 0 4月  18 17:29 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 4月  18 17:29 usb1 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/
    lrwxrwxrwx 1 root root 0 4月  18 17:29 usb2 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/
    
    

    cat /sys/kernel/debug/usb/devices

    信息的详细解析可以参照 Linux源代码中 Documentation/usb/proc_usb_info.txt 文件

    book@100ask:/sys/bus/usb/devices$ sudo cat  /sys/kernel/debug/usb/devices
    [sudo] book 的密码:
    
    T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh= 6
    B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
    D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1d6b ProdID=0002 Rev= 4.13
    S:  Manufacturer=Linux 4.13.0-36-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=256ms
    
    T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=05a3 ProdID=9310 Rev= 0.00
    S:  Manufacturer=HD Camera Manufacturer
    S:  Product=USB 2.0 Camera
    C:* #Ifs= 4 Cfg#= 1 Atr=80 MxPwr=500mA
    A:  FirstIf#= 0 IfCount= 2 Cls=0e(video) Sub=03 Prot=00
    A:  FirstIf#= 2 IfCount= 2 Cls=01(audio) Sub=00 Prot=00
    I:* If#= 0 Alt= 0 #EPs= 1 Cls=0e(video) Sub=01 Prot=00 Driver=uvcvideo
    E:  Ad=83(I) Atr=03(Int.) MxPS=  16 Ivl=4ms
    I:* If#= 1 Alt= 0 #EPs= 0 Cls=0e(video) Sub=02 Prot=00 Driver=uvcvideo
    I:  If#= 1 Alt= 1 #EPs= 1 Cls=0e(video) Sub=02 Prot=00 Driver=uvcvideo
    E:  Ad=81(I) Atr=05(Isoc) MxPS= 128 Ivl=125us
    I:  If#= 1 Alt= 2 #EPs= 1 Cls=0e(video) Sub=02 Prot=00 Driver=uvcvideo
    E:  Ad=81(I) Atr=05(Isoc) MxPS= 256 Ivl=125us
    I:  If#= 1 Alt= 3 #EPs= 1 Cls=0e(video) Sub=02 Prot=00 Driver=uvcvideo
    E:  Ad=81(I) Atr=05(Isoc) MxPS= 800 Ivl=125us
    I:  If#= 1 Alt= 4 #EPs= 1 Cls=0e(video) Sub=02 Prot=00 Driver=uvcvideo
    E:  Ad=81(I) Atr=05(Isoc) MxPS=1600 Ivl=125us
    I:  If#= 1 Alt= 5 #EPs= 1 Cls=0e(video) Sub=02 Prot=00 Driver=uvcvideo
    E:  Ad=81(I) Atr=05(Isoc) MxPS=2400 Ivl=125us
    I:  If#= 1 Alt= 6 #EPs= 1 Cls=0e(video) Sub=02 Prot=00 Driver=uvcvideo
    E:  Ad=81(I) Atr=05(Isoc) MxPS=3072 Ivl=125us
    I:* If#= 2 Alt= 0 #EPs= 0 Cls=01(audio) Sub=01 Prot=00 Driver=snd-usb-audio
    I:* If#= 3 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
    I:  If#= 3 Alt= 1 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
    E:  Ad=84(I) Atr=05(Isoc) MxPS= 400 Ivl=1ms
    
    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= 4.13
    S:  Manufacturer=Linux 4.13.0-36-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=255ms
    
    T:  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=1ms
    
    T:  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=255ms
    
    

    解析如下

    Each line is tagged with a one-character ID for that line:
    
    T = Topology (etc.)
    B = Bandwidth (applies only to USB host controllers, which are
        virtualized as root hubs)
    D = Device descriptor info.
    P = Product ID info. (from Device descriptor, but they won't fit
        together 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 = string
    
    
    Topology 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 tag
    
        Speed may be:
            1.5 Mbit/s for low speed USB
        12  Mbit/s for full speed USB
        480 Mbit/s for high speed USB (added for USB 2.0);
              also used for Wireless USB, which has no fixed speed
        5000    Mbit/s for SuperSpeed USB (added for USB 3.0)
    
        For reasons lost in the mists of time, the Port number is always
        too low by 1.  For example, a device plugged into port 4 will
        show 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 tag
    
        Bandwidth allocation is an approximation of how much of one frame
        (millisecond) is in use.  It reflects only periodic transfers, which
        are the only transfers that reserve bandwidth.  Control and bulk
        transfers use all other bandwidth, including reserved bandwidth that
        is not used for transfers (such as for short packets).
    
        The percentage is how much of the "reserved" bandwidth is scheduled by
        those 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.xx
    
    where
    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 #1
    
    where
    P:  Vendor=xxxx ProdID=xxxx Rev=xx.xx
    |   |           |           |__Product revision number
    |   |           |__Product ID code
    |   |__Vendor ID code
    |__Device info tag #2
    
    
    String 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 tag
    
    S:  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 tag
    
    S:  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 tag
    
    
    
    Configuration 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 tag
    
        USB devices may have multiple configurations, each of which act
        rather differently.  For example, a bus-powered configuration
        might be much less capable than one that is self-powered.  Only
        one device configuration can be active at a time; most devices
        have only one configuration.
    
        Each configuration consists of one or more interfaces.  Each
        interface serves a distinct "function", which is typically bound
        to a different USB device driver.  One common example is a USB
        speaker with an audio interface for playback, and a HID interface
        for 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 tag
    
        A given interface may have one or more "alternate" settings.
        For example, default settings may not use more than a small
        amount of periodic bandwidth.  To use significant fractions
        of bus bandwidth, drivers must select a non-default altsetting.
    
        Only one setting for an interface may be active at a time, and
        only one driver may bind to an interface at a time.  Most devices
        have 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 tag
    
        The interval is nonzero for all periodic (interrupt or isochronous)
        endpoints.  For high speed endpoints the transfer interval may be
        measured in microseconds rather than milliseconds.
    
        For high speed periodic endpoints, the "MaxPacketSize" reflects
        the per-microframe data transfer size.  For "high bandwidth"
        endpoints, that can reflect two or three packets (for up to
        3KBytes every 125 usec) per endpoint.
    
        With the Linux-USB stack, periodic bandwidth reservations use the
        transfer intervals and sizes provided by URBs, which can be less
        than those found in endpoint descriptor.
    
    

    dmesg

    #sudo rmmod uvcvideo
    #sudo modprobe uvcvideo
    #dmesg
     
    [ 5066.889529] usbcore: deregistering interface driver uvcvideo
    [ 5146.884778] uvcvideo: Found UVC 1.00 device USB 2.0 Camera (05a3:9310)
    [ 5146.904548] uvcvideo 1-1:1.0: Entity type for entity Extension 4 was not initialized!
    [ 5146.904550] uvcvideo 1-1:1.0: Entity type for entity Processing 3 was not initialized!
    [ 5146.904551] uvcvideo 1-1:1.0: Entity type for entity Camera 1 was not initialized!
    [ 5146.905329] input: USB 2.0 Camera: HD USB Camera as /devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-1/1-1:1.0/input/input7
    [ 5146.905954] usbcore: registered new interface driver uvcvideo
    [ 5146.905955] USB Video Class driver (1.1.1)
    
    
  • 相关阅读:
    如何理解cat的输入输出重定向
    Vagrant网络设置
    Vagrant入门
    设计模式的原则
    单例模式
    LRU 实现缓存
    java注解
    java8---lambda表达式
    JUC--Callable 以及Lock同步锁
    JUC--闭锁 CountDownLatch
  • 原文地址:https://www.cnblogs.com/zongzi10010/p/10764125.html
Copyright © 2011-2022 走看看