Linux下USB裝置檢測

來源:互聯網
上載者:User

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)
|__終端點資訊標誌

上一篇:《Linux作業系統三則超酷技巧》相關文檔:《Linux系統下USB網路攝影機驅動開發》
下一篇:《linux Apache 安裝筆記》

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.