Page 1 of 1

Problem with interrupt-in endpoint and USB hub

Posted: Sun Jul 29, 2007 8:31 pm
by vobs
Dear all,

I use AVR-USB for the implemetation of a special interface converter for the Hameg 81xx measurement devices. As I do not want to poll the interfaces permanently, I implemented the interrupt-in endpoint. Everything seems to work quite well, I was able to use libusb's usb_interrupt_read() function on my Linux host and it behaved at it was intended to.
When I connected the converter via an USB hub to the host, usb_interrupt_read() returns error -22 (error submitting URB: Invalid argument). I tested it with another USB hub, but got the same errors.

My configuration:

Host:
* Linux 2.4.34.5
* libusb-0.1.12

AVR-USB:
* HID (according to AVR-doper)
* interrupt-in endpoint
* usbFunctionWrite() and usbFunctionRead()

HUB:
* USB 2.0 (Thyphoon card reader with 3 USB ports)

AVR:
* AVR mega 162
* avr-gcc 4.2.0
* avr libc 1.4.6

Was any member of the community able to use the interrupt-in endpoint via an USB hub?
Any hints? Thanks!

Posted: Mon Jul 30, 2007 4:38 pm
by christian
I'm running RemoteSensor (which uses an Intertupt-In endpoint to signal the availablility of data) through a USB 2.0 hub connected to a USB 1.1 host since years without problems.

Since hubs should be transparent to the device, I have no real idea how this can happen. I should note, though, that USB 2.0 hubs implement the USB protocol for low speed devices by themselves. This means that you may be working with a slightly different implementation of a USB host when you use the hub.

Posted: Mon Jul 30, 2007 8:56 pm
by Guest
Hi Christian,

thanks for your answer!

As you never observed similar problems, I checked the usb kernel drivers on my Linux system. After using usd-ohci.o instead of ehci-hcd.o everything works just fine!

Posted: Mon Jul 30, 2007 8:57 pm
by vobs
Sorry, forgot to log in...

Anonymous wrote:Hi Christian,

thanks for your answer!

As you never observed similar problems, I checked the usb kernel drivers on my Linux system. After using usd-ohci.o instead of ehci-hcd.o everything works just fine!