I've been into the source and played with usb.c, basicly fetching the device_descriptor before I try to set the address. At the moment this seems to allow the device to work (it's actually transfering at full speed as I write this) but it's still quite flakey.
That's interesting. I'd not heard about Prolific usb-storage devices which won't enumerate unless you do it "the MSFT way".
I get the impression this is a common problem (usb-storage devices not meeting the correct spec) that windows deals with but Linux doesn't. What would be the harm in modifying the source to allow the device descriptor to go first?
It'd probably work for most devices ... but I'd be careful changing that particular stage of enumeration. The algorithm Linux currently uses has known/stable behavior , and you could change things in such a way that some currently-working devices stop working.
IMHO this is one of the biggest problems for Linux USB support, i've tried four that work under uhci but not ehci, all of which work will with Windows. Maybe we need to look at how usb-storage is implemented?
Don't you mean "look at how MS-Windows implements USB storage, and try to act more like that"? That's actually something that folk like Matt and Alan have done a bunch already. I'm sure that if you have some specific usb-storage patch to propose, making usb-storage work with more hardware, they'd be interested.
Keep in mind also that the enumeration problem you mentioned is unrelated to usb-storage. It's a clear case of the device violating the USB spec ... although it seems to me that the conformance tests (from USB-IF) don't actually match the specs in many cases, which is a pretty broken way to run things (especially when spec errata don't get published).
Anyway, i've attached usb.c and am available for any testing if needed.
Please don't send huge files like that, just send patches! Your version of "usb.c" doesn't match mine very closely, and if you'd sent a patch I'd know which changes were significant to your point.
Also, in particular with respect to this enumeration issue, you should be using the USB patches from the mm tree ... that newer code has a new hub_port_init() routine that'd be the place to change this particular feature. In fact it's even got a comment about this specific issue that you're raising, highlighting the area of code you'd need to change if you wanted to enumerate "the MSFT way".
- Dave
-------------------------------------------------------
This SF.Net email is sponsored by: Oracle 10g
Get certified on the hottest thing ever to hit the market... Oracle 10g. Take an Oracle 10g class now, and we'll give you the exam FREE. http://ads.osdn.com/?ad_id=3149&alloc_id=8166&op=click
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel