pyusb: не удается установить конфигурацию
Я пытаюсь сделать скрипт (на linux), который может включить или выключить свет в моей мыши.
Это код, который у меня есть до сих пор:
import usb.core
import usb.util
import sys
interface = 0
dev = usb.core.find(idVendor=0x1532, idProduct=0x0017)
def main():
if dev is None:
print "device not found"
else:
print "device found"
if dev.is_kernel_driver_active(interface) is True:
print "but we need to detach kernel driver"
dev.detach_kernel_driver(interface)
print "claiming device"
usb.util.claim_interface(dev, interface)
print "release claimed interface"
usb.util.release_interface(dev, interface)
print "now attaching the kernel driver again"
dev.attach_kernel_driver(interface)
print "all done"
return 0
if __name__ == '__main__':
main()
это отлично работает, но если я попытаюсь сделать:dev.set_configuration ()
после claim_interface (dev, интерфейс)
скрипт возвращает ошибку: USB-кабель.ядро.USBError: ресурс занят
почему он все еще занят после того, как я отсоединил его ядро водитель?
2 ответов
не уверен, что это решит, но правила udev для вашей мыши настроены правильно? У меня была аналогичная проблема с пользовательским устройством, которое сделал для меня друг, и я решил, добавив правило:
SUBSYSTEM !="usb_device", ACTION !="add", GOTO="device_rules_end"
SYSFS{idVendor} =="1532", SYSFS{idProduct} =="0017", SYMLINK+="mydevice"
MODE="0666", OWNER="<your-username-here>", GROUP="root"
LABEL="device_rules_end"
в своем /etc/udev/rules.d
папка.
HTH!
EDIT: перед добавлением правила попробуйте запустить скрипт с помощью sudo
. Если это будет работать таким образом, это почти наверняка параметр разрешения, который будет исправлен вышеуказанным правилом.
У меня тоже эта проблема. Ваш код работает хорошо, если вы сначала "set_configuration", а затем только утверждаете интерфейс. Это также порядок, предложенный здесь:http://libusb.sourceforge.net/api-1.0/caveats.html