USB设备检测也是通过/proc目录下的USB文件系统进行的。为了使一个USB设备能够正常工作,必须要现在系统中插入USB桥接器模块。在检测开始时,一般要先检测是否存在/proc/bus/usb目录,若不存在则尝试插入USB桥接模块。 现在一般的USB桥接器模块有两种类型,UHCI和OHCI。在决定插入那一个桥接器模块时,可以察看/proc/pci文件来决定。打开此文件,您若发现USB节为 I/O at 0xHHHH格式(例如出现 I/O at 0xe000 [0xe01f]),HHHH为16进制数,则桥接器类型为UHCI。若是它为32 bit memory at 0xHH000000形式(例如出现32 bit memory at 0xee000000),HH为16进制数,则桥接器类型为OHCI。但是若您的桥接器类型不满足上述任何一种情况,唯一的解决办法就是您尝试插入这两种模块,直到成功为止。一般而言,UHCI类型的桥接器它的插入模块是uhci或usb-uhci(由内核版本决定);而对于OHCI类型的桥接器它的插入模块是ohci或usb-ohci。 您在正确的插入了桥接器模块之后,这时/proc文件系统下就会出现USB设备目录,不过这时这个目录是空的,没有任何文件。这时您就必须挂接usbdevfs文件系统,然后通过此文件系统检测连接的设备。在成功挂接usb文件系统之后,就会生成文件/proc/bus/usb/devices,/proc/bus/usb/drivers和目录/proc/bus/usb/busNo。挂接usbdevfs文件您可以通过如下操作实现: mount -t usbdevfs none /proc/bus/usb 或在/etc/fstab上加入 none /proc/bus/usb usbdevfs defaults 0 0 然后通过/proc/bus/usb/devices文件的内容,您就可以获得连接的设备信息,包括设备标识和制造商标是等信息。 usb设备类型描述: 设备规范 设备类码 接口类码 应用程序特定 - 0xFE 声音接口 0x00 0x01 通信设备 0x02 - CDC控制接口 - 0x02 CDC数据接口 - 0x0A HID 0x00 0x03 HUB 0x09 0x09 批量存储设备 0x00 0x08 监视器 same as HID same as HID 电源设备 same as HID same as HID 物理设备 - 0x05 打印机 - 0x07 供应商特定 - 0xFF 5.2 usb文件系统简介 T = 总线拓扑结构(Lev, Prnt, Port, Cnt, 等),是指USB设备和主机之间的连接方式 B = 带宽 (仅用于USB主控制器) D = 设备描述信息 P = 产品标识信息 S = 串描述符 C = 配置描述信息 (* 表示活动配置) I = 接口描述信息 E = 终端点描述信息 一般格式: d = 十进制数 x = 十六进制数 s = 字符串 拓扑信息 T: Bus=dd Lev=dd Prnt=dd Port=dd Cnt=dd Dev#=ddd Spd=ddd MxCh=dd __最大子设备 __设备速度(Mbps) __设备编号 __这层的设备数 __此设备的父连接器/端口 __父设备号 __此总线在拓扑结构中的层次 __总线编号 __拓扑信息标志 带宽信息 B: Alloc=ddd/ddd us (xx%), #Int=ddd, #Iso=ddd __同步请求编号 __中断请求号 __分配给此总线的总带宽 __带宽信息标志 设备描述信息和产品标识信息 D: Ver=x.xx Cls=xx(s) Sub=xx Prot=xx MXPS=dd #Cfgs=dd P: Vendor=xxxx ProdID=xxxx Rev=xx.xx D: Ver=x.xx Cls=xx(sssss) Sub=xx Prot=xx MxPS=dd #Cfgs=dd __配置编号 ______缺省终端点的最大包尺寸 __设备协议 __设备子类型 __设备类型 __设备USB版本 __设备信息标志编号#1 P: Vendor=xxxx ProdID=xxxx Rev=xx.xx __产品修订号 __产品标识编码 __制造商标识编码 __设备信息标志编号#2 串描述信息 S: Manufacturer=ssss __设备上读出的制造商信息 __串描述信息 S: ProdUCt=ssss __设备上读出的产品描述信息,对于USB主控制器此字段为"USB *HCI Root Hub" __串描述信息 S: SerialNumber=ssss __设备上读出的序列号,对于USB主控制器它是一个生成的字符串,表示设备标识 __串描述信息 配置描述信息 C: #Ifs=dd Cfg#=dd Atr=xx MPwr=dddmA __最大电流(mA) __属性 __配置编号 __接口数 __配置信息标志 接口描述信息(可为多个) I: If#=dd Alt=dd #EPs=dd Cls=xx(sssss) Sub=xx Prot=xx Driver=ssss __驱动名 __接口协议 __接口子类 __接口类 __中断点数 __可变设置编号 __接口编号 __接口信息标志 终端点描述信息 E: Ad=xx(s) Atr=xx(ssss) MxPS=dddd Ivl=dddms E: Ad=xx(s) Atr=xx(ssss) MxPS=dddd Ivl=dddms __间隔 __终端点最大包尺寸 __属性(终端点类型) __终端点地址(I=In,O=Out) __终端点信息标志 '
[1] [2] 下一页
(出处:http://www.sheup.com)