Linux下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=ddP: Vendor=xxxx ProdID=xxxx Rev=xx.xxD: 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=dddmsE: Ad=xx(s) Atr=xx(ssss) MxPS=dddd Ivl=dddms| | | | |__間隔| | | |__終端點最大包尺寸| | |__屬性(終端點型別)| |__終端點地址(I=In,O=Out)|__終端點資訊標誌 '
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-939924/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux下的硬體驅動——USB裝置(下)(驅動開發部分)(轉)Linux
- linux下 libusb使用--開啟usb裝置進行通訊Linux
- Libusb開發教程 USB裝置程式開發
- Linux下的硬體驅動——USB裝置(上)(驅動配置部分)(轉)Linux
- Linux 下使用 NetLink 檢測裝置的熱插拔Linux
- 【轉載】WSL 如何連線USB裝置
- 載入usb裝置!
- Linux下即插即用裝置的安裝(轉)Linux
- linux模擬HID USB裝置及wireshark USB抓包配置Linux
- LINUX下的裝置驅動程式 (轉)Linux
- linux檢視裝置命令Linux
- 在vmware的centos(linux)中載入usb裝置CentOSLinux
- 乾坤合一:Linux裝置驅動之USB主機和裝置驅動Linux
- Windows下USB磁碟開發系列二:列舉系統中所有USB裝置Windows
- Linux下檢視ASM對應磁碟組以及裝置名LinuxASM
- linux下新增裸裝置Linux
- linux下配置裸裝置Linux
- 裝置檔案系統教程(轉)
- Linux入侵檢測(轉)Linux
- Linux下PCI轉串列埠卡及USB轉串列埠Linux串列埠
- 入侵檢測術語全接觸(轉)
- win10禁用所有usb儲存裝置方法 win10如何禁止使用usb儲存裝置Win10
- linux下裸裝置的使用Linux
- LINUX下裸裝置的操作Linux
- Linux單裝置多路USB串列埠的實現方法介紹Linux串列埠
- USB裝置遠端喚醒RemoteWakeUpREM
- linux下nc檢測埠Linux
- Linux裝置驅動程式 (轉)Linux
- Linux裝置管理指令setleds(轉)Linux
- Linux核心入侵檢測安全增強實現(下)(轉)Linux
- lsusb命令-在系統中顯示有關USB裝置資訊
- 無法識別usb裝置怎麼辦_win10無法識別usb裝置的解決方法Win10
- JavaScript 陀螺儀檢測裝置方向(重力感應)JavaScript
- 防火牆入侵於檢測——————4、思科安全裝置防火牆
- Android 應用檢測裝置是否被rootAndroid
- Linux下安裝svn教程Linux
- Linux 2.6核心的裝置模型(轉)Linux模型
- Linux下掛載USB盤Linux