usb

想查看usb设备的信息,输入:

    cat /proc/bus/usb/devices

    但我的盖世兔系统显示:没有这个devices文件。

     在网上搜了很久,发现没人进行该问题的讨论,郁闷了很久。无意间看到了解决方法,哈哈,大喜......   

解决办法:

    $ sudo mount -t usbfs usbfs /proc/bus/usb/

    保证usbfs是挂载在/proc/bus/usb上的

此外,还可以用lsusb命令查看,如果你喜欢看大量的输出信息,运行lsusb -v就可以满足你的这一欲望。lsusb另一个有用的选项是给出当前USB物理层次的树状信息,这可以更容易让你准确理解设备体系结构,这个命令就是lsusb -t

 

原文出处:http://purpleroom.i.sohu.com/blog/view/135130065.htm

linux 如何识别USB2.0和USB1.1

1,测试速度

hdparm -Tt /dev/hda  可以测试相关USB设备的读速度。

s5pv210 USB2.0 测试U盘速度大概14MB/S,1.1的速度是960KB/S,USB2.0的读写速度确实很有优势。

2,lsusb 看设备信息。

lsusb 可以看到系统中的usb设备信息。
lsusb -v 具体输出。里面的bcdUSB是usb的版本号。
  0x0110是usb1.1  

  0x0200是usb2.0 

注:我在ubuntu810下面/proc/bus/usb/中没有看到内容。跟某些网上介绍的不一样,不知道是不是版本更新的原因。摘录一段话:
在初始化过程中,除了F2812自身初始化外,还要完成对ISP1581各个端点使用的传输类型、传输包大小和中断类型及方式等设备任务。F2812对 ISP1581的操作是通过写/读寄存器来实现的。初始化结束后,通过设置ISP1581方式寄存器中的软件连接位(SOFTCT)可使外设连接到USB 总线上。主机检测到有设备连接后会进行总线复位。在此期间,ISP1581将发送高速(HS)模式检测信号来判断主控制器支持的是USB2.0还是 USB1.1规范,若接收到一个高速(HS)握手信号,则表明有一个HS主机与总线相连,此此ISP1581将转换到高速(HS)状态,否则仍工作在全速(FS)状态。
http://www.emb-cn.com/webelec/article/16/Article_1367.htm


相关网页:
lsusb是如何工作的  http://www.bitscn.com/linux/system_manage/200604/7305.html
如何在LINUX下实现硬件的自动检测  http://www.ibm.com/developerworks/cn/linux/hardware/auto-detecting/part1/index.html
udev实现原理  http://blog.csdn.net/absurd/archive/2007/04/27/1587938.aspx
Linux设备驱动之USB hub驱动 http://linux.chinaunix.net/techdoc/install/2008/09/26/1034807.shtml

lsusb简介  http://www.gentoo.org/doc/zh_cn/usb-guide.xml



-----------------------------------

-usb设备/proc/bus/usb

USB设备检测的一般过程
作者 pxe2
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)
|__终端点信息标志 '


你可能感兴趣的:(usb)