3

We're using libusb v1.0.9.0 in C++ code (with a Java front end). We're testing it on multiple versions of Windows and multiple machines for various USB 2.0/3.0 controllers, and we've found a couple of very bad problems.

On Windows 7, it can't see any ports on an "Intel USB 3.0 Extensible Host Controller" platform.

On Windows Server 2008, it can't see certain ports on both the USB 2.0 and 3.0 controllers. Some ports on the 2.0 hub work, and some ports on the 3.0 hub work, but other ports are invisible to the same device, to any device.

The first one might be just a specific controller idiosyncrasy that will be supported soon, but the second one really worries us. Is this kind of behavior common? How do we fix it?

We're using libusb_get_device_list() or libusb_open_device_with_vid_pid().

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
  • CORRECTION: This is mainstream libusb v1.0.9.0. (Not libusbx. Someone put an erroneous format string in the project.) – John Haggis Jun 04 '13 at 21:52

1 Answers1

1

I had some trouble concerning certain USB 3.0 ports as well, even though it was maybe a little different to your situation. So I am not quite sure if I can help you out, I believe it's more related to a hardware-issue. But keep in mind the following facts:

USB 3.0 hardware is not yet well established (still under development) - some ports are loosing their functionality over the time, especially these quite cheap ones (built-in ports on mainboards with an Intel chipset). Because the current provided over USB 3.0 and the data rate is much higher than USB 2.0, it's not a miracle that these ports made of cheap wire break easily.

Even using a different cable makes a difference, not speaking of hubs - they seem to be still prototypes, at least the ones I used.

Keep looking regularly for the latest drivers of your xHCI. There are often nasty bugs fixed within.

Last, but not least, vary the size of packets sending to your xHCI. Actually, the preferred size is 64 KB, so split up your data in blocks of this size. This is related to the problem of the interrupts which are caused by huge packets. To some xHCIs this is already the reason to surrender (especially if you are running under USB 2.0!).

All in all, the behaviour of different xHCIs (Renesas, Intel, ..) differs quite a lot. It is mostly annoying because the reason is not obvious at all.

A last suggestion: Try tools like the USBlyzer. The last option would be something like Voyager M3i (protocol analyzer), if you are willing to spent about US$30,000 or so..

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
fiscblog
  • 694
  • 1
  • 12
  • 27