【发布时间】:2021-02-10 04:17:13
【问题描述】:
玩弄PyUSB 看看它是否提供了一些关于为什么我正在使用的 WebUSB 库找不到我的设备的见解。我用brew install libusb安装了libusb1 on the Mac via Homebrew。
运行lsusb -vv 以获取设备详细信息。还要为 PyUSB 设置几个环境变量:
export PYUSB_LOG_FILENAME=pysubdebug.log 和 export PYUSB_DEBUG=debug
import usb
VENDOR_ID = 0x0483
PRODUCT_ID = 0x5740
DATA_SIZE = 1
device = usb.core.find(idVendor=VENDOR_ID, idProduct=PRODUCT_ID)
>>> device
<DEVICE ID 0483:5740 on Bus 020 Address 014>
>>> device.is_kernel_driver_active(0)
False
>>> device.set_configuration()
Traceback (abridged)
usb.core.USBError: [Errno 19] No such device (it may have been disconnected)
>>> cfg = device.get_active_configuration()
Traceback (abridged)
usb.core.USBError: [Errno None] Configuration not set
从日志文件看来,python(在 venv 中)正在使用位于 /usr/local/lib/ 的文件:
2020-10-27 12:20:41,706 DEBUG:usb.backend.libusb1:_LibUSB.__init__(<CDLL '/usr/local/lib/libusb-1.0.dylib', handle 7f8ba652c7f0 at 0x1101a5f70>)
2020-10-27 12:20:41,712 INFO:usb.core:find(): using backend "usb.backend.libusb1"
制作的文件:
$brew ls libusb
/usr/local/Cellar/libusb/1.0.23/include/libusb-1.0/libusb.h
/usr/local/Cellar/libusb/1.0.23/lib/libusb-1.0.0.dylib
/usr/local/Cellar/libusb/1.0.23/lib/pkgconfig/libusb-1.0.pc
/usr/local/Cellar/libusb/1.0.23/lib/ (2 other files)
/usr/local/Cellar/libusb/1.0.23/share/libusb/ (13 files)
并确认 PyUSB 正在寻找正确的位置:
ls -l /usr/local/lib/libusb-1.0.dylib
lrwxr-xr-x #details# /usr/local/lib/libusb-1.0.dylib@ -> ../Cellar/libusb/1.0.23/lib/libusb-1.0.dylib
我需要为Specify a library by hand 创建一个函数吗?好像不是这个问题。
也许我缺少一个配置步骤。
【问题讨论】:
-
PyUSB 可以找到设备。但是在设置配置时它会失败。设备可能会失败(它可能会返回垃圾,根本不回答,USB 描述符与 SETUP 行为冲突等)。 PID/VID 组合表明它是自定义设备。我认为你应该调查一下设备。
-
会的。谢谢。