1

I have a device with USB interface which I can connect to both my Ubuntu 18.04 machine and my Windows 10 machine. On Windows 10 I have to install the CP210x driver and manually attach it to the device (otherwise Windows tries to find the device manufacturer's driver - it's a CP210x serial chip), and in Linux write the vendorID and productID to the cp210x driver to allow it to attach to ttyUSB0. This works fine.

The Windows driver is from SiliconLabs - the manufacturer of the UART-USB chip in the device.

So on Windows it is attached to COM5 and Linux to ttyUSB0 (Ubuntu, Raspbian)

Using Wireshark I can snoop the usb bus successfully on both operating systems.

The USB device sends data regularly over the USB bus and on Windows using Wireshark I can see this communication as "URB_INTERRUPT in" messages with the final few bytes actually containing the data I require.

On Linux it seems that the device connects but using Wireshark this time I can only see URB_BULK packets. Examining the endpoints using pyusb I see that there is no URB_Interrupt endpoint only the URB_Bulk.

Using the pyusb libraries on Linux it appears that the only endpoints available are URB_BULK.

Question mainly is how do I tell Linux to get the device to send via the Interrupt transfer mechanism as Windows seems to do. I don't see a method in pyusb's set_configuration to do this (as no Interrupt transfer endpoints appear) and haven't found anything in the manufacturer's specification.

Failing that, of course, I could snoop the configuration messages on Windows, but there has to be something I'm missing here?

1 Answers1

0

Disregard this, the answer was simple in the end: Windows was reassigning the device address on the bus to a different device.