I'm attempting to do bulk reads and writes from a USB device on Ubuntu using PyUSB. However, i've been unsuccessful at getting that far.
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"
This is the simple script I'm using. I've created /etc/udev/rules.d/40-basic-rules.rules
which contains
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device",SYSFS{idVendor}=="XXXX" , SYSFS{idProduct}=="YYYY", MODE="0666"
for my appropriate device.
Running the script as is as root raises a usb.core.USBError: [Errno 16] Resource busy
error because the dev.detach_kernel_driver(0)
throws the exception usb.core.USBError: [Errno 2] Entity not found
in dmesg I see these messages,
[ 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
Any thoughts on what I'm missing to get access to this device?