如果我执行一个lsusb -v
命令,我会得到一个名为的字段idProduct
和一个名为的字段iProduct
。
对于许多设备,iProduct 设置为 0,但对于其他设备,它设置为产品名称。
为什么有两个产品条目,它们有何不同?
什么决定了 iProduct 是 0 还是字符串?
答案1
价值idProduct
来自于操作系统识别设备的,而iProduct
(接口产品)是设备的自报告标识。如果供应商未设置iProduct
(或iSerial
/ )值,则它将为空白,并且您只会在预期值的空白处旁边看到索引位置。您可以借助 更清楚地看到这一点:iManufacturer
0
grep
lsusb -v | grep -E '\<(Bus|idProduct|iProduct|iSerial|iManufacturer)'
这会给你类似这样的结果:
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
idProduct 0x0003 3.0 root hub
iManufacturer 3 Linux 5.13.0-20-generic xhci-hcd
iProduct 2 xHCI Host Controller
iSerial 1 0000:00:14.0
Bus 001 Device 005: ID 138a:0097 Validity Sensors, Inc.
idProduct 0x0097
iManufacturer 0
iProduct 0
iSerial 1 66e5848914da
Bus 001 Device 004: ID 04f2:b5ce Chicony Electronics Co., Ltd Integrated Camera
idProduct 0xb5ce Integrated Camera
iManufacturer 1 Chicony Electronics Co.,Ltd.
iProduct 2 Integrated Camera
iSerial 0
Bus 001 Device 003: ID 8087:0a2b Intel Corp. Bluetooth wireless interface
idProduct 0x0a2b Bluetooth wireless interface
iManufacturer 0
iProduct 0
iSerial 0
Bus 001 Device 002: ID 04f2:b5cf Chicony Electronics Co., Ltd Integrated IR Camera
idProduct 0xb5cf Integrated IR Camera
iManufacturer 1 SunplusIT Inc
iProduct 2 Integrated IR Camera
iSerial 0
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
idProduct 0x0002 2.0 root hub
iManufacturer 3 Linux 5.13.0-20-generic xhci-hcd
iProduct 2 xHCI Host Controller
iSerial 1 0000:00:14.0
iManufacturer
请注意,当设置、iProduct
和的值时iSerial
,会有一个非零数字。这来自当操作系统发现 USB 设备时通过设备标识标头提供的信息的顺序。没有强制顺序,因此1
、2
、3
值可以分配给iManufacturer
、iProduct
或中的任何一个iSerial
值。