Hi,

I bumped into an issue when initializing a device.
The device (FTDI chip) offers up to four similar UART/serial ports,
each port is tied to a USB interface.

I use the following piece of code:

    dev = usb.core.find(idVendor=vendor, idProduct=product)
    if not dev:
        raise IOError('Device not found')
    for configuration in dev:
        for interface in configuration:
            ifnum = interface.bInterfaceNumber
            if not dev.is_kernel_driver_active(ifnum):
                continue
            try:
                print "detach %s: %s" % (dev, ifnum)
                dev.detach_kernel_driver(ifnum)
            except usb.core.USBError, e:
                pass
    dev.set_configuration()

I need to detach *all* the interfaces from the (Linux) kernel, or I
sometime get an error (not a big deal for my use case)
I also need to call dev.set_configuration() to configure the device.
Nothing unusual I guess.

The troubles happen when I need to open two serial ports, that is two
interfaces from the same USB device.
On the second initialization call, when dev.set_configuration() is
called for the second time, the first open interface gets in trouble:
  Exception: UsbError: No such device (it may have been disconnected)
It seems set_configuration() cannot be called another time if an
interface is already being actively used.

I don't know how to avoid calling set_configuration() more that once,
as I don't know how to identify that the USB device has already been
configured.

Each call to usb.core.find() returns a different instance even when it
manages the same device, and I don't see any way to detect the
physical device has been already configured or not.

Any idea?

Thanks,
Manu

------------------------------------------------------------------------------
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the future.
http://p.sf.net/sfu/internap-sfd2d
_______________________________________________
pyusb-users mailing list
pyusb-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/pyusb-users

Reply via email to