"Unknown Error" 从 PyUSB 调用 set_configuration 时

"Unknown Error" when calling set_configuration from PyUSB

我正在使用更简单版本的 StormLauncher (https://github.com/nmilford/stormLauncher) 从 Raspberry Pi 调用 Thunder USB 导弹发射器。一旦我将它连接到有源 USB 集线器,它就可以工作了。

两次。

现在当我调用它时,我得到:

Traceback (most recent call last):File "launcherFire.py", line 15, in <module>
turret.set_configuration()


File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 559, in set_configuration
    self._ctx.managed_set_configuration(self, configuration)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 92, in managed_set_configuration
    self.backend.set_configuration(self.handle, cfg.bConfigurationValue)
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 741, in set_configuration
    _check(self.lib.libusb_set_configuration(dev_handle.handle, config_value))
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 571, in _check
    raise USBError(_str_error[ret], ret, _libusb_errno[ret])
usb.core.USBError: [Errno None] Unknown error

我试过拔掉再插回去,这似乎有效here但它没有改变任何东西。

这是我的代码:

import usb.core


turret = usb.core.find(idVendor=0x2123, idProduct=0x1010)


if turret is None:
    raise ValueError('Launcher not found.')

try:
    turret.detach_kernel_driver(0)
except Exception, e:
    pass # already unregistered    

turret.set_configuration()

turret.ctrl_transfer(0x21, 0x09, 0, 0, [0x02, 0x10, 0x00,0x00,0x00,0x00,0x00,0x00])

任何关于尝试什么的提示,无论是软件还是硬件,都会很棒。

更新:这似乎是 USB 启动器本身的硬件故障。我更换了它,完全相同的代码运行良好(虽然幽默的是这个发射器也有一个坏掉的马达,但至少空气触发器仍然有效)。

可以有这些解决方案:

  1. 运行 sudo模式下的代码

  2. 确保任何其他驱动程序已经在使用该设备(例如 usbhid)

这是硬件故障。新的启动器使用相同的代码按预期工作。