日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

详解 lsusb命令

發布時間:2025/3/15 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 详解 lsusb命令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

USB設備檢測的一般過程
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鍵盤時的配置情況。
T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2
B: Alloc= 41/900 us ( 5%), #Int= 3, #Iso= 0

D: Ver= 1.00 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0000 ProdID=0000 Rev= 0.00
S: Product=USB UHCI Root Hub
S: SerialNumber=e000
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=255ms

T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 3
D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=07e4 ProdID=a961 Rev= 0.01
S: Manufacturer=ALCOR
S: Product=Movado USB Keyboard
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=255ms

T: Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 3 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=07e4 ProdID=a961 Rev= 0.01
S: Manufacturer=ALCOR
S: Product=Movado USB Keyboard
C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=01 Driver=hid
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl= 10ms
I: If#= 1 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver=hid
E: Ad=82(I) Atr=03(Int.) MxPS= 4 Ivl=255ms


它的物理拓撲可用下圖來表示:

<img src="http://s9.sinaimg.cn/middle/4ba5b45egc5019b7a79d8&690" alt="Linux-USB-檢測枚舉-1??lsusb輸出內容詳細解讀" title="Linux-USB-檢測枚舉-1??lsusb輸出內容詳細解讀" height="253" width="368" />

對于Linux下的usb設備而言,T:(總線拓撲)行用于生成連接在hub上的設備的描述信息,I:(接口信息)行可用于決定每個設備所用的驅動程序,C:(配置信息)可用于列出設備使用最大電流。

USB的枚舉過程

所謂USB設備與主機是通過檢測Vcc上拉電阻的變化來確定是否有設備連接的。在D12內部集成了1.5kΩ的上拉電阻,默認狀態下不與Vcc相連,程序運行時可以向D12發送連接命令使1.5kΩ電阻連接到Vcc,這樣主機便檢測到有設備連接。

它的枚舉過程分析如下。

設備連接到總線后,設備從總線獲得5V電源,程序首先初始化,端口,然后向D12發出USB連接命令。

主機檢測到設備連接

主機向設備發出第一個信號:總線復位。總線復位產生一個中斷,并且D12器件在默認地址0處使能,以便在接下來的枚舉過程中使用地址0傳輸命令和數據,同 時中斷寄存器的總線復位位被置為1。在程序中的表現是,D12向主循環請求中斷,進入中斷處理程序USB_int_handler(),讀取中斷寄存器, 確定中斷的類型,進行相應的處理。

主機使用默認地址0讀取設備描述符。

具體過程是:主機向D12發送第一個Setup包,每個Setup包都是8個字節,第一個包Get Descriptor的內容為:80 06 00 01 00 00 40 00 ,數據為16進制表示。其中的40表示返回的數據最大長度為40H字節。此Setup包存儲在D12的端點0緩沖區中,并產生一個外部中斷。(這時在 D12的中斷寄存器中保存了中斷的類型:端點0的OUT中斷,即中斷寄存器字節1的值應為0x01)進入中斷服務程序后,由于D12端點0的緩沖區只有 16個字節,所以單片機就先發送16個字節的設備描述符。

當主機接收到這16個字節的字符后,就認為真正有設備連接了。

地址分配。

主機向D12發送第二個Setup包,這是一個含有指定地址的數據包,其內容一般為:00 05 02 00 00 00 00 00 ,其中的02就表示主機為設備分配的地址為0x02,在以后的通信里設備就只對0x02地址的信息作出應答。D12收到這個Setup包后同樣產生一個中斷(端點0的OUT中斷),需要注意的是單片機處理這個中斷時需要向主機返回一個長度為0的空數據包。

主機從新的地址獲取設備描述符。

主機收到設備發來的空的應答數據包后,確認地址分配成功。然后主機向D12發送第三個Setup包,再次要求獲取設備描述符。這個Setup包的內容一般是:80 06 00 01 00 00 12 00 。與上次不同的是,這次要求實際的描述符長度,其中的12(十六進制數)表示要求得到全部18字節的設備描述符。因為每次只能發送16字節,因此程序中要分兩次完成此要求。第一次16字節,第二次2字節。

主機讀取配置描述符。

成功得到18字節的設備描述符后,主機向D12發送第四個Setup包,要求得到設備的配置描述符。這個Setup包的數據為:80 06 00 02 00 00 09 00 。其中的09指定設備返回9字節數據,這正是配置描述符的長度。

讀取描述符集合。

成功得到9字節的配置描述符后,主機向D12發送第五個Setup包,要求得到設備的配置描述符、接口描述符、端點描述符的集合。這次Setup包的內容是:80 06 00 02 00 00 FF 00 。由于不知道描述符集合的真實長度,因此它要求得到256字節。

到這一步,主機現在應該已經發現新硬件并為新設備安裝好驅動程序。對于以上過程,主機是在總線驅動層處理,下面的一步,也是典型枚舉過程的最后一步,就需要設備驅動程序來做了。

數值配置

主機得到各種描述符之后,認為設備的信息已經齊全,便對設備進行配置,使設備從地址狀態進入配置狀態。

主機向D12發送第六個Setup包,其數據為:00 09 01 00 00 00 00 00 。程序中需要調用Set Configuration()函數處理此事件,允許所有端點進入工作狀態。

至此,USB枚舉過程結束,設備可以正常使用了。在這個過程中D12指示燈根據通信的狀況間歇閃爍。

USB 最主要的的是要理解?? USB主機發送命令給設備,設備要對主機的命令進行響應, USB通訊的基本單位為 “包”?? 理解好“包”這個概念是學習USB的關鍵所在。

包有如下分類:?
分別是令牌包、數據包、握手包和特殊包(其實是由PID決定的)

令牌包:可分為輸入包、輸出包、設置包和幀起始包(注意這里的輸入包是用于設置輸入命令的,輸出包是用來設置輸出命令的,而不是放據數的)其中輸入包、輸出包和設置包的格式都是一樣的: SYNC+PID+ADDR+ENDP+CRC5(五位的校驗碼)?
幀起始包: SYNC+PID+11位FRAM+CRC5(五位的校驗碼)?
數據包:分為DATA0包和DATA1包,當USB發送數據的時候,當一次發送的數據長度大于相應端點的容量時,就需要把數據包分為好幾個包,分批發 送,DATA0包和DATA1包交替發送,即如果第一個數據包是DATA0,那第二個數據包就是DATA1。但也有例外情況,在同步傳輸中(四類傳輸類型 中之一),所有的數據包都是為DATA0,格式如下:?
SYNC+PID+0~1023字節+CRC16?
握手包:結構最為簡單的包,格式如下?
SYNC+PID

下面舉幾個例子來說明USB的通訊過程:?
1:主機想要向設備傳送一串數據。 過程如下:?
(1)?? 主機向從機發送 “令牌包”,令牌包的類型為輸出包,表示主機要向從機發送數據了。?
(2)?? 主機向從機發送完令牌以后,USB處理器件根據發送的令牌,會將中斷狀態寄存器標志置位,從機CPU通過查詢USB處理器件的中斷狀態寄存器,對主機的令牌包進行響應?
(3)?? 從機判別出中斷類型,于是,準備從主機接收數據。?
(4)?? 從機準備好了,于是主機開始發送“數據包” 這時,USB處理器件會自動將從主發送過來的數據放如它的內部緩沖區內,接收完這個數據包后,從機向主機發送“應答包”?
這就是一個完整的通訊過程。?
由以上可以看出,USB若是想要傳送數據,那么主機必須先發一個 IN 或OUT的令牌包,然后發送DATA0,或DATA1數據包。?
簡單的用現實生活中的事件進行描述: 老板想讓員工去做一件事情,老板 先會發出命令,告訴要做什么事情,員工準備好以后呢,老板再把做這件事情的經費發放給員工,當員工把發放的經費清點以后,發現數目正確,他會給老板一個回應信息,告訴老板,錢已經收到了,而且數目正確。?
老板想讓員工做的事: 對應USB通訊里的令牌包。?
老板想要發放的經費: 對應USB通訊里的數據包。?
員工給老板的回應:??? 對應USB通訊里的握手包。?
這里尤其需要注意一個問題就是:?
USB主機向設備發送令牌包的時候,接收令牌是有USB器件來完成的,而不是有從機CPU來完成的,如主機發送一個如下的令牌:?
SYNC+PID+ADDR+ENDP+CRC5?
USB器件回根據PID的類型來判斷是哪種類型的令牌 根據ADDR的值來判斷是否是和自己通訊,根據ENDP的值來判斷是和哪個端點進行通訊,根據校驗來判斷,數據傳送是否無誤。根據以上的令牌包信息,USB器件會將其內部的中斷狀態寄存器相應的位置位,從機CPU可以查詢這個中斷狀態寄存器來進行相應的操作。



lsusb輸出內容詳細解讀

lsusb(選項)
-v:顯示USB設備的詳細信息;?
-s<總線:設備號>僅顯示指定的總線和(或)設備號的設備;?
-d<廠商:產品>:僅顯示指定廠商和產品編號的設備;?
-t:以樹狀結構顯示無理USB設備的層次;?
-V:顯示命令的版本信息。

插入usb鼠標后執行lsusb的輸出內容如下:
-----------------------------------------
Bus 005 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 006: ID 15d9:0a37
Bus 002 Device 001: ID 0000:0000

內容解讀:
-----------------------------------------
Bus 005
?
?? 表示第五個usb主控制器(機器上總共有5個usb主控制器 -- 可以通過命令lspci | grep USB查看)

Device 006
??? 表示系統給usb鼠標分配的設備號(devnum),同時也可以看到該鼠標是插入到了第二個usb主控制器
??? 006??? ??? usb_device.devnum
??? /sys/devices/pci0000:00/0000:00:1d.1/usb2/2-2/devnum

ID 15d9:0a37
??? 表示usb設備的ID(這個ID由芯片制造商設置,可以唯一表示該設備)
??? 15d9??? usb_device_descriptor.idVendor
??? 0a37??? usb_device_descriptor.idProduct
??? /sys/devices/pci0000:00/0000:00:1d.1/usb2/2-2/idVendor

Bus 002 Device 006: ID 15d9:0a37
Bus 002 Device 001: ID 0000:0000
??? 表示002號usb主控制器上接入了兩個設備:
??? 一個是usb根Hub -- 001
??? 一個是usb鼠標?? -- 006

轉自:?http://www.360doc.com/content/14/0722/15/14129940_396294047.shtml


通用串行總線USB)被設計成為連接計算機外設的標準,如鍵盤、鼠標、打印機、數碼相機、便攜式媒體播放器、磁盤和網絡適配器等等 - 來源:Wikipedia

它已經成為了一個工業標準,現在很難看到一個沒有USB口的計算機了。USB閃存的使用使得它更加流行。在Linux上,我們可以使用lsusb來列出USB設備和它的屬性。

什么是lsusb

在它的手冊上,lsusb定義成:

顯示系統中以及連接到系統的USB總線信息的工具。

如何運行lsusb? 要運行lsusb,你可以直接在控制臺輸入lsusb。

$ lsusbBus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 002 Device 003: ID 17ef:4811 Lenovo Integrated Webcam [R5U877] Bus 008 Device 002: ID 0a5c:217f Broadcom Corp. Bluetooth Controller

lsusb會顯示驅動和內部連接到你系統的設備。

下面介紹如何理解輸出。我抓取了上面輸出的最后一行:

Bus 008 Device 002 : ID 0a5c:217f Broadcom Corp. Bluetooth Controller
  • Bus 008?: 指明設備連接到哪(哪條總線)
  • Device 002?: 表明這是連接到總線上的第二臺設備
  • ID?: 設備的ID
  • Broadcom Corp. Bluetooth Controller?:生產商名字和設備名

我們同樣可以看到在我們的系統中同時使用了USB2.0 root hub驅動和USB 1.1 root hub驅動。

用dmesg命令同樣可以看到。下面是一個例子。

$ dmesg |grep -i usb[ 0.353138] usbcore: registered new interface driver usbfs [ 0.353150] usbcore: registered new interface driver hub [ 0.353182] usbcore: registered new device driver usb [ 0.730026] ehci_hcd: USB 2.0 ‘Enhanced’ Host Controller (EHCI) Driver [ 0.730116] ehci_hcd 0000:00:1a.7: new USB bus registered, assigned bus number 1 [ 0.748019] ehci_hcd 0000:00:1a.7: USB 2.0 started, EHCI 1.00 [ 0.748169] hub 1-0:1.0: USB hub found [ 0.748336] ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 2 [ 0.768019] ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00 [ 0.768147] hub 2-0:1.0: USB hub found [ 0.768236] ohci_hcd: USB 1.1 ‘Open’ Host Controller (OHCI) Driver [ 0.768251] uhci_hcd: USB Universal Host Controller Interface driver

如何列出USB詳細信息

使用-v選項來開啟。下面是一個例子。

$ lsusb -vInterface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 5 bNumEndpoints 2 bInterfaceClass 224 Wireless bInterfaceSubClass 1 Radio Frequency bInterfaceProtocol 1 Bluetooth iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0×83 EP 3 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0×0040 1x 64 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0×03 EP 3 OUT bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0×0040 1x 64 bytes bInterval 1

找出連接了多少USB設備

使用下面的命令

$ find /dev/bus

接著你會看到像下面的輸出:

/dev/bus /dev/bus/usb /dev/bus/usb/008 /dev/bus/usb/008/002 /dev/bus/usb/008/001 /dev/bus/usb/007 /dev/bus/usb/007/001 /dev/bus/usb/006 /dev/bus/usb/006/001 /dev/bus/usb/005 /dev/bus/usb/005/001 /dev/bus/usb/004 /dev/bus/usb/004/001 /dev/bus/usb/003 /dev/bus/usb/003/001 /dev/bus/usb/002 /dev/bus/usb/002/004 /dev/bus/usb/002/003 /dev/bus/usb/002/001 /dev/bus/usb/001 /dev/bus/usb/001/001

使用lsusb?命令 的-D?選項,你可以打印特定設備的詳細信息。下面是一個博通藍牙設備的示例。

$ lsusb -D /dev/bus/usb/008/002Device: ID 0a5c:217f Broadcom Corp. Bluetooth Controller Couldn’t open device, some information will be missing Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 224 Wireless bDeviceSubClass 1 Radio Frequency bDeviceProtocol 1 Bluetooth bMaxPacketSize0 64 idVendor 0x0a5c Broadcom Corp. idProduct 0x217f Bluetooth Controller bcdDevice 3.60 iManufacturer 1 iProduct 2 iSerial 3 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 216 bNumInterfaces 4 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xe0 Self Powered Remote Wakeup MaxPower 0mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 3 bInterfaceClass 224 Wireless bInterfaceSubClass 1 Radio Frequency bInterfaceProtocol 1 Bluetooth iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0×81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0×0010 1x 16 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0×82 EP 2 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0×0040 1x 64 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0×02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0×0040 1x 64 bytes bInterval 1

找出大容量存儲設備

既然?lsusb -v給我們很詳細的信息,那么你或許會錯過一些信息。我們可以使用grep命令指定特定的信息。

大容量存儲設備會有一個供應商名和ID。我們可以用它作為一個起點。

$ lsusb -v |grep -Ei ‘(idVendor|Mass\ Storage)’idVendor 0×1005 Apacer Technology, Inc. bInterfaceClass 8 Mass Storage

你可以看到,我們系統上有一個來自Apacer Technology, Inc的USB大容量存儲設備。

以樹層級結構輸出USB設備

使用?-t選項滿足這個要求

$ lsusb -t/: Bus 08.Port 1: Dev 1, Class=root\_hub, Driver=uhci_hcd/2p, 12M /: Bus 07.Port 1: Dev 1, Class=root\_hub, Driver=uhci_hcd/2p, 12M /: Bus 06.Port 1: Dev 1, Class=root\_hub, Driver=uhci_hcd/2p, 12M /: Bus 05.Port 1: Dev 1, Class=root\_hub, Driver=uhci_hcd/2p, 12M /: Bus 04.Port 1: Dev 1, Class=root\_hub, Driver=uhci_hcd/2p, 12M /: Bus 03.Port 1: Dev 1, Class=root\_hub, Driver=uhci_hcd/2p, 12M /: Bus 02.Port 1: Dev 1, Class=root\_hub, Driver=ehci_hcd/6p, 480M |__ Port 1: Dev 4, If 0, Class=stor., Driver=usb-storage, 480M |__ Port 6: Dev 3, If 0, Class=’bInterfaceClass 0x0e not yet handled’, Driver=uvcvideo, 480M |__ Port 6: Dev 3, If 1, Class=’bInterfaceClass 0x0e not yet handled’, Driver=uvcvideo, 480M /: Bus 01.Port 1: Dev 1, Class=root\_hub, Driver=ehci_hcd/6p, 480M

數字12M和480M?是指USB類型的傳輸速率

  • 12M 意味著 USB 1.0 / 1.1的速率是 12Mbit/s
  • 480M 意味著 USB 2.0的速率是 480Mbit/s

如果你找到5.0G,那意味這你有USB 3.0類型接口。它有5.0Gbit/s的傳輸速率。Linux從/var/lib/usbutils/usb.ids識別USB設備的詳細信息。或者你可以訪問Linux-USB.org獲取最新的USB ID列表。

這些就是lsusb命令的基礎。你可以用lsusb命令對你的系統上的USB設備做一個診斷。一般來說,你可以通過lsusb的手冊探索命令的更多詳細細節。只要輸入man lsab來打開它的手冊。


轉自:?http://www.linuxidc.com/Linux/2014-01/94874.htm



總結

以上是生活随笔為你收集整理的详解 lsusb命令的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。