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=***x prodid=***x rev=xx.xx
d: ver=x.xx cls=xx(sssss) sub=xx prot=xx mxps=dd #cfgs=dd
| | | | | | |__配置編號
| | | | | |______預設終端點的最大包尺寸
| | | | |
| | | | |__裝置協議
| | | |__裝置子型別
| | |__裝置型別
| |__裝置usb版本
|__裝置資訊標誌編號#1
p: vendor=***x prodid=***x 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下USB裝置檢測
usb裝置檢測也是通過 proc目錄下的usb檔案系統進行的。為了使乙個usb裝置能夠 正常工作,必須要現在系統中插入usb橋接器模組。在檢測開始時,一般要先檢測是否存在 proc bus usb目錄,若不存在則嘗試插入usb橋接模組。現在一般的usb橋接器模組有兩種型別,uhci和ohci。在決定...
Linux下USB裝置檢測
usb裝置檢測也是通過 proc目錄下的usb檔案系統進行的。為了使乙個usb裝置能夠正常工作,必須要現在系統中插入usb橋接器模組。在檢測開始時,一般要先檢測是否存在 proc bus usb目錄,若不存在則嘗試插入usb橋接模組。現在一般的usb橋接器模組有兩種型別,uhci和ohci。在決定插...
Linux下的USB裝置驅動
usb是我們常用的介面,它有四條引腳線 5v d d gnd。pc的usb口的d d 接有下拉電阻,平時處於低電平狀態。usb裝置的usb口內部,d 或d 接有1.5k的上拉電阻 它一接入pc,就會把pc的usb口的d 或d 拉高,從硬體的角度通知pc有新裝置接入。所以usb能夠自動監測裝置。簡單來...