Linux下获取插入USB的3.0U盘工作模式是2.0还是3.0

先放一条命令:

cat /sys/kernel/debug/usb/devices | grep "`cat /sys/kernel/debug/usb/devices | grep Manufacturer | grep -vE 'Linux|Љ'`" -B4 | grep Ver| cut -b 10

(插入u盘时返回1个字符是正确的,没插时,因为grep非系统设备为空,cat信息不过滤全部显示,后面在grep Ver和cut以列表的形式返回所有设备信息)

参考资料:USB检测过程及lsusb内容详解(转)

Linux下查看USB设备命令:

cat /sys/kernel/debug/usb/devices

# cat /sys/kernel/debug/usb/devices                               

T:  Bus=04 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12   MxCh= 2
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0001 Rev= 3.18
S:  Manufacturer=Linux 3.18.16_s5 ohci_hcd
S:  Product=Generic Platform OHCI controller
S:  SerialNumber=f9880000.ohci
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=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh= 2
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev= 3.18
S:  Manufacturer=Linux 3.18.16_s5 ehci_hcd
S:  Product=EHCI Host Controller
S:  SerialNumber=f9890000.ehci
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=   4 Ivl=256ms

T:  Bus=03 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  2 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=148f ProdID=7601 Rev= 0.01
S:  Manufacturer=Љ
S:  Product=Љ
S:  SerialNumber=Љ
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=160mA
I:* If#= 0 Alt= 0 #EPs= 8 Cls=ff(vend.) Sub=ff Prot=ff Driver=rt2870
E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=08(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=07(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=09(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=5000 MxCh= 1
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 3.00 Cls=09(hub  ) Sub=00 Prot=03 MxPS= 9 #Cfgs=  1
P:  Vendor=1d6b ProdID=0003 Rev= 3.18
S:  Manufacturer=Linux 3.18.16_s5 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=f9870000.xhci
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=   4 Ivl=256ms

T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 11 Spd=5000 MxCh= 0
D:  Ver= 3.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs=  1
P:  Vendor=0951 ProdID=1666 Rev= 1.10
S:  Manufacturer=Kingston
S:  Product=DataTraveler 3.0
S:  SerialNumber=E0D55E6CE79AE371979A26C9
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=504mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh= 1
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev= 3.18
S:  Manufacturer=Linux 3.18.16_s5 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=f9870000.xhci
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=   4 Ivl=256ms
 # 

根据制造商筛选

cat /sys/kernel/debug/usb/devices | grep Manufacturer 

# cat /sys/kernel/debug/usb/devices | grep Manufacturer           
S:  Manufacturer=Linux 3.18.16_s5 ohci_hcd
S:  Manufacturer=Linux 3.18.16_s5 ehci_hcd
S:  Manufacturer=Љ
S:  Manufacturer=Linux 3.18.16_s5 xhci-hcd
S:  Manufacturer=Kingston
S:  Manufacturer=Linux 3.18.16_s5 xhci-hcd

过滤掉系统自带的usb设备

cat /sys/kernel/debug/usb/devices | grep Manufacturer | grep -vE 'Linux|Љ'

# cat /sys/kernel/debug/usb/devices | grep Manufacturer | grep -vE 'Linux|Љ'
S:  Manufacturer=Kingston

如果直接读取上述U盘:Manufacturer=Kingston的信息,对设备信息上面取4行,下面取7行,提取如下

cat /sys/kernel/debug/usb/devices | grep Manufacturer=Kingston -B4 -A7 

# cat /sys/kernel/debug/usb/devices | grep Manufacturer=Kingston -B4 -A7                         
T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 11 Spd=5000 MxCh= 0
D:  Ver= 3.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs=  1
P:  Vendor=0951 ProdID=1666 Rev= 1.10
S:  Manufacturer=Kingston
S:  Product=DataTraveler 3.0
S:  SerialNumber=E0D55E6CE79AE371979A26C9
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=504mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms

当这个USB3.0的U盘插入到板卡USB3.0口时,显示Ver= 3.10,当它被插入到板卡USB2.0时,输出Ver= 2.10,

所以,在当前设备信息,插找Ver字符串并提取该行,然后用cut命令直接提取此行第10个位置的字符即可

cat /sys/kernel/debug/usb/dvices | grep Manufacturer=Kingston -B4 -A7 | grep Ver | cut -b 10            

# cat /sys/kernel/debug/usb/devices | grep Manufacturer=Kingston -B4 -A7                         
T:  Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  5 Spd=480  MxCh= 0
D:  Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=0951 ProdID=1666 Rev= 1.10
S:  Manufacturer=Kingston
S:  Product=DataTraveler 3.0
S:  SerialNumber=E0D55E6CE79AE371979A26C9
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=300mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
#
#
# cat /sys/kernel/debug/usb/devices | grep Manufacturer=Kingston -B4 -A7 | grep Ver              
D:  Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
# 
# cat /sys/kernel/debug/usb/dvices | grep Manufacturer=Kingston -B4 -A7 | grep Ver | cut -b 10
2

 

  • 6
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值