Python 设备在PyUSB上不可用

Python 设备在PyUSB上不可用,python,libusb,pyusb,Python,Libusb,Pyusb,玩一玩,看看它是否提供了一些关于为什么我正在使用的WebUSB库找不到我的设备的见解。我是用brew安装libusb安装的 运行lsusb-vv以获取设备详细信息。还为PyUSB设置了两个环境变量: export PYUSB\u LOG\u FILENAME=pysubdebug.LOG和export PYUSB\u DEBUG=DEBUG import usb VENDOR_ID = 0x0483 PRODUCT_ID = 0x5740 DATA_SIZE = 1 device = usb

玩一玩,看看它是否提供了一些关于为什么我正在使用的WebUSB库找不到我的设备的见解。我是用
brew安装libusb
安装的

运行lsusb-vv以获取设备详细信息。还为PyUSB设置了两个环境变量:

export PYUSB\u LOG\u FILENAME=pysubdebug.LOG
export PYUSB\u 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
酝酿文件:

$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
我是否需要创建一个函数来执行此操作?这似乎不是问题所在


也许我遗漏了一个配置步骤。

用于
http://
数据传输,USB似乎更脆弱,更适合平台

例如,我通常可以在任意多个浏览器中加载web应用程序,而USB设备只能由单个设备、应用程序(可能还有进程)来“声明”

我发现了一个名为的(商业)应用程序,通过它我可以(使用免费的演示)确认我的设备是否被“认领”

有些人使用
kextunload
来“解锁”设备

在OSX上,
kextstat
终端应用程序提供了关于哪些内核声明哪些设备的一些详细信息:

kextstat | grep usb
   22    8 0xffffff7f813ec000 0x8000     0x8000     com.apple.driver.usb.AppleUSBCommon (1.0) C2917767-E187-3F86-8E1D-3342A98EF53A <6 5 3 1>
   53    0 0xffffff7f817cf000 0x5000     0x5000     com.apple.driver.usb.AppleUSBHostPacketFilter (1.0) 2569DC26-1911-36D4-9BE3-A727E9535BB2 <23 22 8 7 6 5 3 1>
   54    1 0xffffff7f816a8000 0x56000    0x56000    com.apple.driver.usb.AppleUSBXHCI (1.2) 0E02208C-A8FC-3966-9C74-F09EF887E7E7 <23 22 12 8 7 6 5 3 1>
   etc...
看:

明白了 当我第一次尝试
read
时,超时时间太短和/或缓冲区太小,随后的
read
请求将返回
usb.core.USBError:[Errno 32]管道错误


我想这是因为python忙于做一些事情,或者需要断开连接。解决方法是退出python()python,然后使用更高的参数重试。

PyUSB可以找到该设备。但在设置配置时失败。设备有可能出现故障(它可能返回垃圾,根本不应答,USB描述符与设置行为冲突等)。PID/VID组合表示它是一个自定义设备。我想你应该调查一下这个装置,好的。谢谢。卸载随机内核驱动程序时要小心。您只想卸载设备的驱动程序,而上面列出的大多数驱动程序都是用于USB主机控制器硬件的,这就是为什么它们正在使用,卸载它们会使您无法与任何USB设备通信。是的,我轻轻地踩着,半预期鼠标和键盘会在某个时候停止工作。您如何确定哪些驱动程序正在驱动哪些设备?
kextstat | grep usb
   22    8 0xffffff7f813ec000 0x8000     0x8000     com.apple.driver.usb.AppleUSBCommon (1.0) C2917767-E187-3F86-8E1D-3342A98EF53A <6 5 3 1>
   53    0 0xffffff7f817cf000 0x5000     0x5000     com.apple.driver.usb.AppleUSBHostPacketFilter (1.0) 2569DC26-1911-36D4-9BE3-A727E9535BB2 <23 22 8 7 6 5 3 1>
   54    1 0xffffff7f816a8000 0x56000    0x56000    com.apple.driver.usb.AppleUSBXHCI (1.2) 0E02208C-A8FC-3966-9C74-F09EF887E7E7 <23 22 12 8 7 6 5 3 1>
   etc...

import usb.core
import usb.util

# got these using the command lsusb -vv
VENDOR_ID = 0x0483
PRODUCT_ID = 0x5740
DATA_SIZE = 1

device = usb.core.find(idVendor=VENDOR_ID, idProduct=PRODUCT_ID)

device.is_kernel_driver_active(0)

device.set_configuration()

device.read(0x81, 255, 1000000)
array('B', [51, 48, 51, 32, 86, 49, 46, 48, 50, 32, 53, 56, 51, 51, 98, 49, 49, 56, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 48, 48, 48, 50, 57, 99, 97, 54, 32, 48, 48, 48, 48, 48, 48, 48, 54, 13, 10])