概述
先放一条命令:
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
最后
以上就是小巧画板为你收集整理的Linux下获取插入USB的3.0U盘工作模式是2.0还是3.0的全部内容,希望文章能够帮你解决Linux下获取插入USB的3.0U盘工作模式是2.0还是3.0所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复