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