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

问题描述:

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

你可以尝试使用sysfs的路径对于USB设备,/ SYS /巴士/ USB /设备/和通配符的idProduct和idVendor文件

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

两年后,它向前还是不直使连接从识别设备到实际设备。 你必须扫描sysfs来识别设备。目前没有唯一ID到设备的索引。

下面是一个例子:

我有一个USB→附LPT端口(没有编号)

我发现在/ sys /类的设备(一个或多个)。在根据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 ../../../ 

在这里,您鳍片d有用的文件:
idVendor
idProduct
串行
BUSNUM
DEVNUM

我可以在一个以上的方式:

我可以使用上面的BUSNUM和DEVNUM检索设备名称和撰写此设备名称:/dev/usb/001/008

或使用/ sys/class/usbmisc/lp0/uevent中的信息:
主要= 180
MINOR = 0
DEVNAME = USB/LP0

添加/ dev到DEVNAME价值,我得到的/ dev/USB/LP0

我也喜欢一个更简单的方法,具有唯一的密钥,描述和每个设备的链接。有人可能希望它会在未来的sysfs版本中出现。但由于使用C sysfs API更容易处理,潜在客户可能还有很长的路要走