On Tue, 11 Dec 2007, Eric Estievenart wrote:

> Hello there,
> 
> I wanted to know if someone had any idea on why
> some nokia phones don't setup properly as mass storage
> devices in some configurations, before I start
> digging with usbmon & the kernel code.
> 
> * Working configuration: x86/2.6.23.1, with ehci + uhci
>    The phone (N73) sets up properly, but gets bound to
>    the uhci driver.
> 
> * Not working configuration: mipseb/2.6.21.5, ehci+ohci
>    Appears transiently in usb/devices then gets removed
>    after the following kernel errors:
> 
> usb 2-1: new full speed USB device using ohci_hcd and address 3
> usb 2-1: config index 0 descriptor too short (expected 9, got 0)
> usb 2-1: can't read configurations, error -22
> usb 2-1: new full speed USB device using ohci_hcd and address 4
> usb 2-1: no configurations
> usb 2-1: can't read configurations, error -22
> usb 2-1: new full speed USB device using ohci_hcd and address 5
> usb 2-1: device descriptor read/8, error -62
> usb 2-1: device not accepting address 5, error -62
> usb 2-1: new full speed USB device using ohci_hcd and address 6
> usb 2-1: device descriptor read/8, error -62
> usb 2-1: device not accepting address 6, error -62
> 
> ....
> The questions are:
> - The phone itself declares to be usb 2.0:
> 
> T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=12  MxCh= 0
> D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
> P:  Vendor=0421 ProdID=0487 Rev= 1.00
> S:  Product=Nokia N73
> C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=100mA
> I:* If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
> E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
> E:  Ad=03(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
> 
> Why does it get bound to the uhci driver at full speed,
> whereas it should (for me) be bound to the ehci at high speed ?

What makes you think the phone should run at high speed?  Does it run 
at high speed when you plug it into any other computers?

> When I plug other devices (e.g. flash key), on the same port,
> they are properly recognized as 2.0 and bound to the ehci
> driver, not its companion ohci/uhci.
> I don't feel it is normal...

You need to understand that there are USB 2.0 devices which don't run 
at high speed.  USB 2.0 is backwards compatible with USB 1.1; a USB 2.0 
device is allowed to run at any speed it wants.

> Where does the ehci/companion driver selection occur, and
> what is the logic behind that ?

Speed selection occurs in the hardware.  The phone has to send a
special "chirp"  signal to connect at high speed; if it doesn't send
that signal then it connects at full speed.

Following that, EHCI/companion selection occurs in the driver.  If the
connection was made at high speed then the EHCI controller is used,
otherwise the port is switched over to the companion controller.

> - Did someone test such devices in mass storage mode with
> ohci drivers ? May this be an endianness issue on the ohci driver ?

The OHCI drivers work just fine on PowerPC machines, which are 
big-endian.  Have you tried using a 2.6.23 kernel?

> Note that I have tested almost all userland possibilities:
> - with/without the ohci/ehci drivers
> - old_scheme_first
> - other cable/device
> 
> Hoping anybodyhas a clue, I may provide any additional
> info you may find relevant.

It sounds like the phone works perfectly on the x86 system.  The mipseb
system has some problem, but it's hard to tell what.  Have you tried 
plugging other USB devices into that computer?

Alan Stern


-------------------------------------------------------------------------
SF.Net email is sponsored by: 
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
Linux-usb-users@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-users

Reply via email to