我试图了解 Linux 文件夹名称/sys/bus/usb/devices/
与输出之间的关系lsusb -t
。
在我的计算机上,lsusb
显示如下内容:
在 中/sys/bus/usb/devices/
,有:
这些文件夹的命名约定是什么?
我唯一10
能找到的lsusb
是端口号。
我唯一1,2,3,4
能找到的是If
,即界面。
所以我猜文件夹名称应该是这样的:
<bus>-<port>: <???>.<Interface>
这是什么???
部分?好像总是这样1
。为什么文件夹名称中没有设备编号?
操作系统信息:
Distributor ID: Ubuntu
Description: Ubuntu 20.04.3 LTS
Release: 20.04
Codename: focal
Linux 内核:
Linux 5.13.0-27-generic
答案1
根据中的提示Documentation/ABI/stable/sysfs-bus-usb
,一般格式为:
<bus>-<port[.port[.port]]>:<config>.<interface>
每个都
<busnum>
对应一个根集线器。后面跟着一系列由点分隔的集线器端口号。即使您没有任何外部集线器,通常也会有内部集线器。使用
lsusb.py
工具可以更详细地查看拓扑(该脚本与 lsusb 本身来自相同的“usbutils”)。后面的数字
:
表示活动的配置该设备的。某些设备可以在多个配置之间切换(一次只能激活一个),每个配置都提供不同的接口 - 例如,4G/LTE 调制解调器可以设置为“AT 模式”或“MBIM 模式”或“QMI 模式”。(在 Windows 上,这是由驱动程序处理的,在 Linux 上,可以通过 /sys 手动完成。)最后,后面的数字
.
表示接口编号。USB 设备可以提供多个接口,例如 4G 调制解调器将有一个串行端口 + 一个虚拟以太网接口,而 YubiKey NEO 将有一个用于 U2F 的 HID 设备 + 一个用于传统 Yubikey OTP 的假键盘。运行lsusb.py -i
以查看它们的名称。
来自桌面的示例,您可以看到键盘由于某种原因具有两个 HID 接口(对于花哨的“游戏”键盘来说,这种情况更为常见):
# lsusb.py -I
usb1 1d6b:0002 09 1IF [USB 2.00, 480 Mbps, 0mA] (ehci_hcd 0000:00:1a.0) hub
1-0:1.0 (IF) 09:00:00 1EP (Hub::Full speed (or root) hub) hub
1-1 8087:0024 09 1IF [USB 2.00, 480 Mbps, 0mA] (Intel Corp. Integrated Rate Matching Hub) hub
1-1.1 1ea7:0064 00 1IF [USB 1.10, 12 Mbps, 100mA] (Wireless rechargeable vertical mouse)
1-1.1:1.0 (IF) 03:01:02 1EP (Mouse) usbhid hidraw1 (hid-generic) input7 input6 (hid-generic)
1-1.3 0951:1643 00 1IF [USB 2.00, 480 Mbps, 100mA] (Kingston DataTraveler G3)
1-1.3:1.0 (IF) 08:06:50 2EPs (Bulk-Only) usb-storage host6 (sdd)
1-1.6 413c:2113 00 2IFs [USB 1.10, 1.5 Mbps, 100mA] (Dell Computer Corp. KB216 Wired Keyboard)
1-1.6:1.0 (IF) 03:01:01 1EP (Keyboard) usbhid hidraw2 (hid-generic) input8 (hid-generic)
1-1.6:1.1 (IF) 03:00:00 1EP (None) usbhid hidraw3 (hid-generic) input9 input10 (hid-generic)
usb2 1d6b:0002 09 1IF [USB 2.00, 480 Mbps, 0mA] (ehci_hcd 0000:00:1d.0) hub
2-0:1.0 (IF) 09:00:00 1EP (Hub::Full speed (or root) hub) hub
2-1 8087:0024 09 1IF [USB 2.00, 480 Mbps, 0mA] (Intel Corp. Integrated Rate Matching Hub) hub
笔记本电脑内置 4G 调制解调器的示例,首先采用其启动默认配置 2(以太网模拟),然后切换到配置 3(MBIM)后使用完全相同的设备:
# cat /sys/bus/usb/devices/1-3/configuration
2
# lsusb.py
usb1
1-3 03f0:a31d 00 7IFs [USB 2.00, 480 Mbps, 2mA] (HP Inc. HP lt4132 LTE/HSPA+ 4G Module)
1-3:2.0 (IF) 02:06:00 1EP (Communications) cdc_ether net/usb0
1-3:2.1 (IF) 0a:06:00 2EPs (CDC Data) cdc_ether
1-3:2.2 (IF) ff:06:10 3EPs (Vendor Specific) option ttyUSB0
1-3:2.3 (IF) ff:06:13 2EPs (Vendor Specific) option ttyUSB1
1-3:2.4 (IF) ff:06:12 2EPs (Vendor Specific) option ttyUSB2
1-3:2.5 (IF) ff:06:14 2EPs (Vendor Specific) option ttyUSB3
1-3:2.6 (IF) ff:06:1b 2EPs (Vendor Specific) option ttyUSB4
# echo 3 > /sys/bus/usb/devices/1-3/configuration
# lsusb.py
usb1
1-3 03f0:a31d 00 3IFs [USB 2.00, 480 Mbps, 2mA] (HP Inc. HP lt4132 LTE/HSPA+ 4G Module)
1-3:3.0 (IF) 02:0e:00 1EP (Communications) cdc_mbim net/wwan0
1-3:3.1 (IF) 0a:00:02 2EPs (CDC Data) cdc_mbim
1-3:3.2 (IF) ff:06:14 2EPs (Vendor Specific) option ttyUSB0