/proc/bus/usb/devicesの解読

Linuxでcat /proc/bus/usb/devicesをすると、ダラダラっと何か表示されます。
表示されている意味が良く分からないので、調べてみました。
この表示は、drivers/usb/core/devices.cのusb_device_dump()で生成しています。

  • 1文字目の大文字の意味
  • T: BUS=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 4 Spd=12 MxCh= 0
    • BUS:バス番号(bus->busnum), Lev:トポロジーレベル(level), Prnt:親(parent_devnum), Port:ポート(index), Cnt:カウント(count)
    • Dev#:デバイス番号(usbdev->devnum), Spd:スピード 1.5/12/480(speed), MxCh:最大子ノード(usbdev->maxchild)
  • D: Ver=1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
    • Ver: USBのバージョン(desc->bcdUSB), Cls: デバイスのクラスコード(desc->bDeviceClass), Sub: デバイスのサブクラスコード(class_decode(desc->bDeviceClass)
    • Prot: プロトコル 0:固有プロトコルを使用しない (desc->bDeviceProtocol), MxPS: 最大パケットサイズ (bMaxPacketSize0), #Cfgs:コンフィグ数(desc->bNumConfigurations)
  • P: Vendor=10c4 ProdID=2030 Rev=1.00
    • Vendor: ベンダーID(desc->idVendor), ProdID: プロダクトID(desc->idProduct), Rev: リビジョン(desc->bcdDevice)
  • C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr= 30mA
  • I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Deiver=UOT-100 ISDB-T One Segment Tuner
  • E: Ad=02(O) Atr=02(Bulk) MxPs= 64 Ivl=0ms
    • AD:エンドポイントのアドレスと方向(desc->bEndpointAddress), Atr: エンドポイントの種類(desc->bmAttributes), MxPS: 最大データサイズ (bMaxPacketSize0),
    • Ivl: 割り込みエンドポイントの場合のインターバル(speed)

参考:Linuxデバイスドライバ 第3版 (Google Book Search), USB Specification