Ah, thankyou very much. I will use 2, 2, 3 instead of 1, 2, 3 ... and
see if there's a fix for the device controller driver. 

> 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
> _______________________________________________
> [email protected]
> To unsubscribe, use the last form field at:
> https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
> 
> 



-------------------------------------------------------------------------
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
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to