从PyUSB调用set_configuration时出现“未知错误”

时间:2016-02-12 00:33:55

标签: python raspberry-pi usb libusb

我正在使用更简单的StormLauncher(https://github.com/nmilford/stormLauncher)版本从Raspberry Pi调用Thunder USB Missile Launcher。一旦我将它连接到有源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启动器本身似乎是硬件故障。我更换了它,完全相同的代码运行正常(虽然幽默地这个发射器也有一个损坏的电机,但至少空气触发器仍在运行)。

2 个答案:

答案 0 :(得分:0)

可以有这些解决方案:

  1. 以sudo模式运行代码

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

答案 1 :(得分:0)

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