❶ linux下怎麼查找usb對應的設備,比如滑鼠....
1、首抄先Linux 系統使用 /dev 目錄下襲特定的設備文件來標識插入的設備。會發現該目錄下的某些文件,包括 /dev/sda 或者 /dev/hda 表示第一個主設備,每個分區使用一個數字來表示,比如 /dev/sda1 或 /dev/hda1 表示主設備的第一個分區等。
❷ linux 下插上自定義usb設備 為什麼 /proc/bus/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文件的內容,您就可以獲得連接的設備信息,包括設備標識和製造商標是等信息。
希望對你有幫助,望採納。謝謝!
❸ 請教,Linux怎樣查看usb設備的詳細信息
方法一:在/etc/init.d/rcS中添加mount -t usbfs none /proc/bus/usb.
方法二:在終端中輸入mount -t usbfs /proc/bus/usb /proc/bus/usb.
前提是在編譯內核時選中usb device filesystem。
#cat /proc/bus/usb /device
T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2
B: Alloc= 0/900 us ( 0%), #Int= 1, #Iso= 0
D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1d6b ProdID=0001 Rev= 2.06
S: Manufacturer=Linux 2.6.32.2-ltls ohci_hcd
S: Proct=S3C24XX OHCI
S: SerialNumber=s3c24xx
C:* #Ifs= 1 Cfg#= 1 Atr=e0 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= 2 Ivl=255ms
T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 4
D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0000 ProdID=0000 Rev= 1.25
C:* #Ifs= 1 Cfg#= 1 Atr=e0 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= 1 Ivl=255ms
T: Bus=01 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#= 7 Spd=12 MxCh= 0
D: Ver= 2.00 Cls=ff(vend.) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=160a ProdID=3184 Rev= 2.05
S: Manufacturer=VIA Networking Technologies, Inc.
S: Proct=VNT USB-802.11 Wireless LAN Adapter
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=vntwusb
E: Ad=81(I) Atr=03(Int.) MxPS= 32 Ivl=1ms
E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=03(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
❹ 如何解決Linux下USB設備節點名不固定問題
Linux下USB設備節點名不固定問題經常會遇到,下面就是解決的方法:
以USB轉串口為例,通常設備節點名為ttyUSBx(x為0~n),Linux內核會根據插入設備的先後順序進行編號的分配,比如第一個插入的設備編號為0,然後依此加1。
如果僅僅以設備節點ttyUSBn來區別具體是哪個設備,因為末位的編號是隨時會變的,所以就會造成混亂。無法保證A設備就是0,B設備就是1。其實這個問題在LDD3上已經提到過,目前的內核早已經解決類似的問題,將所以有USB設備都導致到sys文件系統中,其實每個USB埠都有唯一的埠號,相當於每個門店的門牌號。只要我們依據埠號來進行設備的區分,那麼問題就迎刃而解了。
比如當前設備插入兩個USB轉串口設備後,查看ttyUSBn所在埠的埠號:
root@android:/ $ ls -l /sys/class/tty/
...
lrwxrwxrwx root root 2011-01-01 13:40 ttyUSB0 -> ../../devices/ff540000.usb/usb3/3-1/3-1.1/3-1.1:1.0/ttyUSB0/tty/ttyUSB0
lrwxrwxrwx root root 2011-01-01 13:43 ttyUSB1 -> ../../devices/ff540000.usb/usb3/3-1/3-1.2/3-1.2:1.0/ttyUSB1/tty/ttyUSB1
root@android:/ $ 12345
其中ttyUSB0所在的埠號為3-1.1,而ttyUSB1所在的埠號為3-1.2。
其它類型USB設備同理,以上思路清理完畢。
查看系統當前usb設備,下面是對第二列排序的結果。
$ lsusb
Bus 001 Device 001: ID xxx:xxx Linux Foundation 2.0 root hub
Bus 001 Device 002: ID xxx:xxx Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 003: ID xxx:xxx Genesys Logic, Inc. GL827L SD/MMC/MS Flash Card Reader
Bus 001 Device 005: ID xxx:xxx Philips (or NXP)
Bus 002 Device 001: ID xxx:xxx Linux Foundation 2.0 root hub
Bus 002 Device 002: ID xxx:xxx Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 003: ID xxx:xxx Intel Corp.
Bus 003 Device 001: ID xxx:xxx Linux Foundation 2.0 root hub
Bus 004 Device 001: ID xxx:xxx Linux Foundation 3.0 root hub
第二列是usb設備的hub編號。pc中usb設備都是接在hub上的,即使你的主板提供好多usb口,他們實際都是接在hub上的。
第四列是usb設備編號,設備在本機的編號。
所以,上面信息顯示一共有4個usb hub(3個usb2.0,一個usb3.0)。如果
黑體字部分是我機器上的三個設備,001.003 是機箱自帶讀卡器,001.005是無線鍵盤,002.003是intel無線網卡藍牙模塊(具體怎麼知道的往下看)。
usb設備也可以用在內核文件中找到/sys/bus/usb/devices。linux將所有設備驅動映射到了/sys下。
ls -1 /sys/bus/usb/devices/
1-0:1.0
1-1
1-1:1.0
1-1.2
1-1.2:1.0
1-1.4
1-1.4.1
1-1.4:1.0
1-1.4.1:1.0
1-1.4.1:1.1
1-1.4.1:1.2
1-1.5
1-1.5:1.0
1-1.5:1.1
1-1.5:1.2
2-0:1.0
2-1
2-1:1.0
2-1.5
2-1.5:1.0
2-1.5:1.1
3-0:1.0
4-0:1.0
usb1
usb2
usb3
usb4
都是符號連接。也可以用ls -l /sys/bus/usb/devices/ 看具體位置
輸出看起來比較亂。用 udevadm工具能比較清楚列出設備信息。命令看起來是這樣的:
udevadm info -p /sys/bus/usb/devices/usb1 -q property
那怎麼找出是那個usb設備呢?
Bus 002 Device 003: ID xxx:xxx Intel Corp.
第二列,002 就要在所有2開頭的文件去找,下面的符合第一規則。
2-0:1.0
2-1
2-1:1.0
2-1.5
2-1.5:1.0
2-1.5:1.1
通常系統的usb hub占據了`-`減號後第一位0。第一個 2-0:1.0,就是usb hub。
2-1.5*文件就是上面的設備。
$ udevadm info -p /sys/bus/usb/devices/2-1.5 -q property
BUSNUM=002
DEVNAME=/dev/bus/usb/002/003
DEVNUM=003
............
ID_MODEL_ID=xxx
............
ID_VENDOR=xxx
............
ID_VENDOR_FROM_DATABASE=Intel Corp.
............
002和003 就是lsusb 的第2/4列. 第6列,來自modelID和vender。
lsusb中的的東東就是這么來的。
那問題是怎麼知道是藍牙呢? 答案是繼續用udevadm查:
$ udevadm info -p /sys/bus/usb/devices/2-1.5:1.0 -q property
ID_USB_CLASS_FROM_DATABASE=Wireless
ID_USB_PROTOCOL_FROM_DATABASE=Bluetooth
ID_USB_SUBCLASS_FROM_DATABASE=Radio Frequency
ID_VENDOR_FROM_DATABASE=Intel Corp.