1

我需要从 Python 中的 VID 和 PID 在 sysfs 树中找到一个 USB 设备。这里最明智的方法是什么?递归扫描目录树是我想到的唯一想法。有没有更好的方法?顺便说一句,我不能使用 libusb 绑定。

4

2 回答 2

2

您可以尝试对 USB 设备使用 sysfs 路径、/sys/bus/usb/devices/,并为 idProduct 和 idVendor 文件使用通配符

/sys/bus/usb/devices/*/idProduct
/sys/bus/usb/devices/*/idVendor
于 2013-03-21T07:05:55.733 回答
1

两年后,从识别设备到实际设备的连接仍然不是直截了当的。您必须扫描 sysfs 以识别设备是正确的。当前没有从唯一 ID 到设备的索引。

这是一个例子:

我有一个 USB → LPT 端口连接(没有序列号)

我在 /sys/class 下找到设备。在这种情况下,在 usbmisc 下:

> ls -l /sys/class/usbmisc
lrwxrwxrwx 1 root root 0 Sep 11 12:11 lp0 -> ../../devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3.4/1-1.3.4:1.0/usbmisc/lp0

要检索有关设备的供应商和其他信息,请遍历树:

进入真实路径:

 > cd -P /sys/class/usbmisc/lp0

沿着分支走一点(到这里: /sys/devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3.4 ):

 > cd ../../../

在这里您可以找到有用的文件:
idVendor
idProduct
serial
busnum
devnum

我可以通过不止一种方式检索设备名称:

我可以使用上面的 busnum 和 devnum 并组成这个设备名称:/dev/usb/001/008

或使用 /sys/class/usbmisc/lp0/uevent 中的信息:
MAJOR=180
MINOR=0
DEVNAME=usb/lp0

将 /dev 添加到 DEVNAME 值,我得到/dev/usb/lp0

我本来希望有一个更简单的方法,有一个唯一的密钥、一个描述和一个指向每个设备的链接。人们可能希望它会出现在 sysfs 的未来版本中。但由于使用 C sysfs API 更容易使用,前景可能还有很长的路要走

于 2015-09-14T08:18:15.167 回答