我需要从Python中的VID和PID中找到sysfs树中的USB设备。这里最明智的做法是什么?递归扫描目录树是我想到的唯一想法。还有更好的方法吗?顺便说一句,我不能使用libusb绑定。
答案 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更容易使用,前景可能还有很长的路要走