Linux 系统USB设备检测

来源:互联网 发布:中控写码软件 编辑:程序博客网 时间:2024/05/16 10:17
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)
|__终端点信息符号  '