Утверждено устройство PyUSB, detach_kernel_driver return Entity Not Found

Я пытаюсь делать массовые чтения и записи с USB-устройства на Ubuntu с помощью PyUSB. Тем не менее, я был безуспешным в том, чтобы зайти так далеко.

import usb.core import usb.util dev = usb.core.find(idVendor=0xXXXX,idProduct=0xYYYY) if dev is None: raise ValueError('Device not found.') try: dev.detach_kernel_driver(0) except: print "exception dev.detach_kernel_driver(0)" pass dev.set_configuration() print "all done" 

Это простой сценарий, который я использую. Я создал /etc/udev/rules.d/40-basic-rules.rules который содержит

SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device",SYSFS{idVendor}=="XXXX" , SYSFS{idProduct}=="YYYY", MODE="0666"

для моего соответствующего устройства.

Запуск сценария, как и у root, вызывает usb.core.USBError: [Errno 16] Resource busy Ошибка usb.core.USBError: [Errno 16] Resource busy поскольку dev.detach_kernel_driver(0) usb.core.USBError: [Errno 2] Entity not found исключение usb.core.USBError: [Errno 2] Entity not found

В dmesg я вижу эти сообщения,

 [ 638.007886] usb 1-1: usbfs: interface 1 claimed by usb-storage while 'python' sets config #1 [ 643.425802] usb 1-1: usbfs: interface 1 claimed by usb-storage while 'python' sets config #1 [ 647.957932] usb 1-1: usbfs: interface 1 claimed by usb-storage while 'python' sets config #1 

Любые мысли о том, что мне не хватает, чтобы получить доступ к этому устройству?

One Solution collect form web for “Утверждено устройство PyUSB, detach_kernel_driver return Entity Not Found”

Ваша проблема, как и моя, заключается в том, что вам нужно отделить ядро ​​от каждого интерфейса, прежде чем вы сможете set_configuration() . Вот код, который я использую прямо сейчас (включая некоторые строительные леса) для подключения к аудиоустройству USB:

 import usb.core import usb.util scarlet = usb.core.find(idVendor = 0x1235) # Focusrite if not scarlet: print"No Scarlet" c = 1 for config in scarlet: print 'config', c print 'Interfaces', config.bNumInterfaces for i in range(config.bNumInterfaces): if scarlet.is_kernel_driver_active(i): scarlet.detach_kernel_driver(i) print i c+=1 scarlet.set_configuration() 
  • Доступ к последовательным портам USB с использованием Python и pyserial
  • Как я могу общаться с этим устройством с помощью pyusb?
  • python pyusb import usb.core не работает
  • PyUSB dev.set_configuration ()
  • Обнаружение USB Python
  • Обнаружение вставленного USB в Windows
  • Использование драйверов FTDI D2XX с Python из Raspberry Pi на платформе raspbian soft-float
  • Проблемы с PySerial: порт должен быть настроен до его использования
  • Как я могу прослушивать события «usb device insert» в Linux, на Python?
  • Могу ли я управлять архитектурой (32 бит против 64 бит) при создании исполняемого файла pyinstaller?
  • Лучший способ сценария установки устройства USB в Linux
  • Python - лучший язык программирования в мире.