On Wed, 6 Sep 2006, Lisa Y. wrote:

> Hi,
> 
> I'm running testusb.c on the host and gadgetfs+usb.c on the device.
> However testing seems to give "error 71".  
> 
> What does error 71 from the test mean? 
> What might be causing it, and is it fixable? 

You can look up the meaning of these error numbers by a two-step process.  
First, find the symbolic string associated with the number, as listed in 
include/asm-generic/errno*.h.  You'll see that 71 is EPROTO.

Second, look at Documentation/usb/error-codes.txt.  It lists the error
strings used by the USB stack, together with the situations that can cause
them.  The entry for EPROTO says that it can be any of several low-level
USB protocol errors.  In general it means that the device did not respond
when the host sent it a packet.

The most likely cause is a bug in your device controller driver.

> Thank you.
> 
> Below are some additional details : 
> 
> ----------------------------
> Host side (linux 2.6.15):
> ----------------------------
> 
> $ sudo ./testusb -D /proc/bus/usb/002/003
> unknown speed   /proc/bus/usb/002/003
> /proc/bus/usb/002/003 test 0,    0.000006 secs
> /proc/bus/usb/002/003 test 1 --> 71 (error 71)
> /proc/bus/usb/002/003 test 2 --> 71 (error 71)
> /proc/bus/usb/002/003 test 3 --> 71 (error 71)
> /proc/bus/usb/002/003 test 4 --> 71 (error 71)
> /proc/bus/usb/002/003 test 5 --> 71 (error 71)
> /proc/bus/usb/002/003 test 6 --> 71 (error 71)
> /proc/bus/usb/002/003 test 7 --> 71 (error 71)
> /proc/bus/usb/002/003 test 8 --> 71 (error 71)
> /proc/bus/usb/002/003 test 9,    0.753977 secs
> /proc/bus/usb/002/003 test 10,    2.364921 secs
> 
> Test 11 crashes the host (while the gadget is unaffected). 

Perhaps that has been fixed in a later kernel version.

> $ ./usbtree
> 
> /:  Bus 05.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
> /:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
> /:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
>     |__ Port 1: Dev 2, If 0, Class=HID, Driver=usbhid, 1.5M
> /:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/8p, 480M
>     |__ Port 1: Dev 3, If 0, Class=vend., Driver=usbtest, 480M
> /:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
> 
> $ cat /proc/bus/usb/devices
> 
> T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  3 Spd=480 MxCh= 0
> D:  Ver= 2.00 Cls=ff(vend.) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
> P:  Vendor=0525 ProdID=a4a4 Rev= 2.12
> S:  Manufacturer=Licensed to Code, LLC
> S: 
> SerialNumber=ppkqalcfkru32i4p5awhwkbx5zjbye3gy2folohnbd3ulveiffqfblglzcmz3ykC:*
> #Ifs= 1 Cfg#= 3 Atr=c0 MxPwr=  2mA
> I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=usbtest
> E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=125us
> E:  Ad=83(I) Atr=03(Int.) MxPS=   8 Ivl=4ms
> 
> ----------------------------
> Host side (linux 2.6.11):
> ----------------------------
> 
> 
> This is what I've added to the usb.c sample code (crosscompiled and ran
> on the devce) to the autoconfig() function:
> 
> 
>       } else if (stat (DEVNAME = "amd5536udc", &statb) == 0) {
> 
>               HIGHSPEED = 1;
>               device_desc.bcdDevice = __constant_cpu_to_le16 (0x0212),
> 
>               fs_source_desc.bEndpointAddress = 
> hs_source_desc.bEndpointAddress
>                       = USB_DIR_IN | 1;
>               EP_IN_NAME = "ep2in-bulk";
>               fs_sink_desc.bEndpointAddress = hs_sink_desc.bEndpointAddress
>                       = USB_DIR_OUT | 2;
>               EP_OUT_NAME = "ep2out-bulk";
> 
>               source_sink_intf.bNumEndpoints = 3;
>               fs_status_desc.bEndpointAddress
>                       = hs_status_desc.bEndpointAddress
>                       = USB_DIR_IN | 3; <----------- what's the 1, 2 and 3 
> for? 
>               EP_STATUS_NAME = "ep1in-int";
> 
>       } ....

The 1, 2, and 3 above are the endpoint addresses.  They are the values 
you see in the /proc/bus/usb/devices listing for the Ad: fields on the E: 
lines.  (The 0x80 bit is USB_DIR_IN.)

Alan Stern


-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to