如何从Python中的USB设备VID和PID确定sysfs devpath?

时间:2013-03-21 06:44:37

标签: python linux usb sysfs

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

2 个答案:

答案 0 :(得分:2)

您可以尝试使用usb设备的sysfs路径,/ sys / bus / usb / devices /,以及用于idProduct和idVendor文件的globbing

/sys/bus/usb/devices/*/idProduct
/sys/bus/usb/devices/*/idVendor

答案 1 :(得分: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
连续
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更容易使用,前景可能还有很长的路要走