Results 1 to 3 of 3
I am working on a device driver for providing connectivity to a Silabs F340 board through USB. All the required software, including firmware on the device side, USB device driver ...
Enjoy an ad free experience by logging in. Not a member yet? Register.
- 09-21-2008 #1
- Join Date
- Sep 2008
Linux USB driver problem with external hub
I am working on a device driver for providing connectivity to a Silabs
F340 board through USB. All the required software, including firmware on the device side, USB device driver and user level libraries as well as the application, are implemented. The system operates fine when experimental communication is considered, in which dummy data is simply sent and received betweeen the host and the device at Full speed. The trouble comes when a USB external hub is used as a gateway between the device and the host instead of directly connecting the USB cable from device to the USB port of the PC. The kernel log states that the transfer of urb failed due to -EPROTO(-71), which is defined as protocol error. I found in some resources that this error can be a result of (a) bitstuff error, or (b) no response packet received within the prescribed bus turn-around time, or (c)hardware problems such as bad devices (including firmware) or cables.
The hub is a Digitus product with 7 ports and works fine with other
USB devices such as the mouse on the same platform.
My kernel version is 2.6.18.
Has anyone got any idea on what can be the reason of this failure, and how can I resolve the problem? I can surely provide any additional information about the situation if any one is interested in helping out.
- 09-23-2008 #2
Umm.. It unfortunately is a HUB based problem IMHO as I have found it to be the same issue with a number of USB hubs I have tried. The issue I have had is the supply current limitations the HUB is capable of, unless it is externally powered. I suggest trying an externally powered hub to see if this solves your issue.
- 04-05-2009 #3
- Join Date
- Sep 2008
Problem solved. There was probably a bug in old kernels which prevented the new hub to establish a connection between an old kernel and an old full speed device. The bug is fixed in new kernels, and I had no trouble in using the hub with kernels 2.6.22 and 2.6.26. It is appropriate to make a warning that the module ehci_hcd needs to be removed from the kernel via rmmod utility in order to support the full speed device reliably, otherwise it might cause problems, starting from probing stage on.