proc_usb_info.txt
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:10k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /proc/bus/usb filesystem output
  2. ===============================
  3. (version 2000.08.15)
  4. The /proc filesystem for USB devices generates
  5. /proc/bus/usb/drivers and /proc/bus/usb/devices.
  6. /proc/bus/usb/drivers lists the registered drivers,
  7. one per line, with each driver's USB minor dev node
  8. number range if applicable.
  9. **NOTE**: If /proc/bus/usb appears empty, you need
  10.           to mount the filesystem, issue the command (as root):
  11.       mount -t usbdevfs none /proc/bus/usb
  12.   An alternative and more permanent method would be to add
  13.       none  /proc/bus/usb  usbdevfs  defaults  0  0
  14.   to /etc/fstab.  This will mount usbdevfs at each reboot.
  15.   You can then issue `cat /proc/bus/usb/devices` to extract
  16.   USB device information.
  17. For more information on mounting the usbdevfs file system, see the
  18. "USB Device Filesystem" section of the USB Guide. The latest copy 
  19. of the USB Guide can be found at http://www.linux-usb.org/
  20. In /proc/bus/usb/devices, each device's output has multiple
  21. lines of ASCII output.
  22. I made it ASCII instead of binary on purpose, so that someone
  23. can obtain some useful data from it without the use of an
  24. auxiliary program.  However, with an auxiliary program, the numbers
  25. in the first 4 columns of each "T:" line (topology info:
  26. Lev, Prnt, Port, Cnt) can be used to build a USB topology diagram.
  27. (I think.  I haven't proved this, but I have tested it with 3
  28. different topo/connections and it looked possible.)
  29. Each line is tagged with a one-character ID for that line:
  30. T = Topology (etc.)
  31. B = Bandwidth (applies only to USB host controllers, which are
  32.     virtualized as root hubs)
  33. D = Device descriptor info.
  34. P = Product ID info. (from Device descriptor, but they won't fit
  35.     together on one line)
  36. S = String descriptors.
  37. C = Configuration descriptor info. (* = active configuration)
  38. I = Interface descriptor info.
  39. E = Endpoint descriptor info.
  40. =======================================================================
  41. /proc/bus/usb/devices output format:
  42. Legend:
  43.   d = decimal number (may have leading spaces or 0's)
  44.   x = hexadecimal number (may have leading spaces or 0's)
  45.   s = string
  46. Topology info:
  47. T:  Bus=dd Lev=dd Prnt=dd Port=dd Cnt=dd Dev#=ddd Spd=ddd MxCh=dd
  48. |   |      |      |       |       |      |        |       |__MaxChildren
  49. |   |      |      |       |       |      |        |__Device Speed in Mbps
  50. |   |      |      |       |       |      |__DeviceNumber
  51. |   |      |      |       |       |__Count of devices at this level
  52. |   |      |      |       |__Connector/Port on Parent for this device
  53. |   |      |      |__Parent DeviceNumber
  54. |   |      |__Level in topology for this bus
  55. |   |__Bus number
  56. |__Topology info tag
  57. Bandwidth info:
  58. B:  Alloc=ddd/ddd us (xx%), #Int=ddd, #Iso=ddd
  59. |   |                       |         |__Number if isochronous requests
  60. |   |                       |__Number of interrupt requests
  61. |   |__Total Bandwidth allocated to this bus
  62. |__Bandwidth info tag
  63. Device descriptor info & Product ID info:
  64. D:  Ver=x.xx Cls=xx(s) Sub=xx Prot=xx MxPS=dd #Cfgs=dd
  65. P:  Vendor=xxxx ProdID=xxxx Rev=xx.xx
  66. where
  67. D:  Ver=x.xx Cls=xx(sssss) Sub=xx Prot=xx MxPS=dd #Cfgs=dd
  68. |   |        |             |      |       |       |__NumberConfigurations
  69. |   |        |             |      |       |__MaxPacketSize of Default Endpoint
  70. |   |        |             |      |__DeviceProtocol
  71. |   |        |             |__DeviceSubClass
  72. |   |        |__DeviceClass
  73. |   |__Device USB version
  74. |__Device info tag #1
  75. where
  76. P:  Vendor=xxxx ProdID=xxxx Rev=xx.xx
  77. |   |           |           |__Product revision number
  78. |   |           |__Product ID code
  79. |   |__Vendor ID code
  80. |__Device info tag #2
  81. String descriptor info:
  82. S:  Manufacturer=ssss
  83. |   |__Manufacturer of this device as read from the device.
  84. |__String info tag
  85. S:  Product=ssss
  86. |   |__Product description of this device as read from the device,
  87. |      except that it is a generated string for USB host controllers
  88. |      (virtual root hubs), in the form "USB *HCI Root Hub".
  89. |__String info tag
  90. S:  SerialNumber=ssss
  91. |   |__Serial Number of this device as read from the device,
  92. |      except that it is a generated string for USB host controllers
  93. |      (virtual root hubs), and represents the host controller's
  94. |      unique identification in the system (currently I/O or
  95. |      memory-mapped base address).
  96. |__String info tag
  97. Configuration descriptor info:
  98. C:  #Ifs=dd Cfg#=dd Atr=xx MPwr=dddmA
  99. |   |       |       |      |__MaxPower in mA
  100. |   |       |       |__Attributes
  101. |   |       |__ConfiguratioNumber
  102. |   |__NumberOfInterfaces
  103. |__Config info tag
  104. Interface descriptor info (can be multiple per Config):
  105. I:  If#=dd Alt=dd #EPs=dd Cls=xx(sssss) Sub=xx Prot=xx Driver=ssss
  106. |   |      |      |       |             |      |       |__Driver name
  107. |   |      |      |       |             |      |__InterfaceProtocol
  108. |   |      |      |       |             |__InterfaceSubClass
  109. |   |      |      |       |__InterfaceClass
  110. |   |      |      |__NumberOfEndpoints
  111. |   |      |__AlternateSettingNumber
  112. |   |__InterfaceNumber
  113. |__Interface info tag
  114. Endpoint descriptor info (can be multiple per Interface):
  115. E:  Ad=xx(s) Atr=xx(ssss) MxPS=dddd Ivl=dddms
  116. E:  Ad=xx(s) Atr=xx(ssss) MxPS=dddd Ivl=dddms
  117. |   |        |            |         |__Interval
  118. |   |        |            |__EndpointMaxPacketSize
  119. |   |        |__Attributes(EndpointType)
  120. |   |__EndpointAddress(I=In,O=Out)
  121. |__Endpoint info tag
  122. =======================================================================
  123. If a user or script is interested only in Topology info, for
  124. example, use something like "grep ^T: /proc/bus/usb/devices"
  125. for only the Topology lines.  A command like
  126. "grep -i ^[tdp]: /proc/bus/usb/devices" can be used to list
  127. only the lines that begin with the characters in square brackets,
  128. where the valid characters are TDPCIE.  With a slightly more able
  129. script, it can display any selected lines (for example, only T, D,
  130. and P lines) and change their output format.  (The "procusb"
  131. Perl script is the beginning of this idea.  It will list only
  132. selected lines [selected from TBDPSCIE] or "All" lines from
  133. /proc/bus/usb/devices.)
  134. The Topology lines can be used to generate a graphic/pictorial
  135. of the USB devices on a system's root hub.  (See more below
  136. on how to do this.)
  137. The Interface lines can be used to determine what driver is
  138. being used for each device.
  139. The Configuration lines could be used to list maximum power
  140. (in milliamps) that a system's USB devices are using.
  141. For example, "grep ^C: /proc/bus/usb/devices".
  142. Here's an example, from a system which has a UHCI root hub,
  143. an external hub connected to the root hub, and a mouse and
  144. a serial converter connected to the external hub.
  145. T:  Bus=00 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 2
  146. B:  Alloc= 28/900 us ( 3%), #Int=  2, #Iso=  0
  147. D:  Ver= 1.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
  148. P:  Vendor=0000 ProdID=0000 Rev= 0.00
  149. S:  Product=USB UHCI Root Hub
  150. S:  SerialNumber=dce0
  151. C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr=  0mA
  152. I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
  153. E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=255ms
  154. T:  Bus=00 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=12  MxCh= 4
  155. D:  Ver= 1.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
  156. P:  Vendor=0451 ProdID=1446 Rev= 1.00
  157. C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA
  158. I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
  159. E:  Ad=81(I) Atr=03(Int.) MxPS=   1 Ivl=255ms
  160. T:  Bus=00 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#=  3 Spd=1.5 MxCh= 0
  161. D:  Ver= 1.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
  162. P:  Vendor=04b4 ProdID=0001 Rev= 0.00
  163. C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA
  164. I:  If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=02 Driver=mouse
  165. E:  Ad=81(I) Atr=03(Int.) MxPS=   3 Ivl= 10ms
  166. T:  Bus=00 Lev=02 Prnt=02 Port=02 Cnt=02 Dev#=  4 Spd=12  MxCh= 0
  167. D:  Ver= 1.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
  168. P:  Vendor=0565 ProdID=0001 Rev= 1.08
  169. S:  Manufacturer=Peracom Networks, Inc.
  170. S:  Product=Peracom USB to Serial Converter
  171. C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA
  172. I:  If#= 0 Alt= 0 #EPs= 3 Cls=00(>ifc ) Sub=00 Prot=00 Driver=serial
  173. E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl= 16ms
  174. E:  Ad=01(O) Atr=02(Bulk) MxPS=  16 Ivl= 16ms
  175. E:  Ad=82(I) Atr=03(Int.) MxPS=   8 Ivl=  8ms
  176. Selecting only the "T:" and "I:" lines from this (for example, by using
  177. "procusb ti"), we have:
  178. T:  Bus=00 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 2
  179. T:  Bus=00 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=12  MxCh= 4
  180. I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
  181. T:  Bus=00 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#=  3 Spd=1.5 MxCh= 0
  182. I:  If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=02 Driver=mouse
  183. T:  Bus=00 Lev=02 Prnt=02 Port=02 Cnt=02 Dev#=  4 Spd=12  MxCh= 0
  184. I:  If#= 0 Alt= 0 #EPs= 3 Cls=00(>ifc ) Sub=00 Prot=00 Driver=serial
  185. Physically this looks like (or could be converted to):
  186.                       +------------------+
  187.                       |  PC/root_hub (12)|   Dev# = 1
  188.                       +------------------+   (nn) is Mbps.
  189.     Level 0           |  CN.0   |  CN.1  |   [CN = connector/port #]
  190.                       +------------------+
  191.                           /
  192.                          /
  193.             +-----------------------+
  194.   Level 1   | Dev#2: 4-port hub (12)|
  195.             +-----------------------+
  196.             |CN.0 |CN.1 |CN.2 |CN.3 |
  197.             +-----------------------+
  198.                            ____________________
  199.                  _____                          
  200.                                                  
  201.                +--------------------+      +--------------------+
  202.   Level 2      | Dev# 3: mouse (1.5)|      | Dev# 4: serial (12)|
  203.                +--------------------+      +--------------------+
  204. Or, in a more tree-like structure (ports [Connectors] without
  205. connections could be omitted):
  206. PC:  Dev# 1, root hub, 2 ports, 12 Mbps
  207. |_ CN.0:  Dev# 2, hub, 4 ports, 12 Mbps
  208.      |_ CN.0:  Dev #3, mouse, 1.5 Mbps
  209.      |_ CN.1:
  210.      |_ CN.2:  Dev #4, serial, 12 Mbps
  211.      |_ CN.3:
  212. |_ CN.1:
  213.                          ### END ###