【问题标题】:How to determine sysfs devpath from USB device VID and PID in Python?如何在 Python 中从 USB 设备 VID 和 PID 确定 sysfs devpath?
【发布时间】:2015-09-14 21:52:29
【问题描述】:

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

【问题讨论】:

    标签: python linux usb sysfs


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      两年后,从识别设备到实际设备的连接仍然不那么简单。 您必须扫描 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 的信息:
      专业=180
      次要=0
      DEVNAME=usb/lp0

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

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

      【讨论】:

        猜你喜欢
        • 2012-01-08
        • 1970-01-01
        • 2017-11-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多