On Fri, 21 May 2004, Kevin Price wrote:

> Hi again,
> 
> sorry I forgot to mention the device works neatly with WXP ans W2K on 
> the very same machines. A W98 driver comes with it, just like with all 
> those mass storage devices. The vendor and Device IDs were determined 
> with MS System Information.
> 
> The Manufacturer is "dnt" and the Device is called "MPin3" but seems to 
> be based on an "Eratech Wearable MP3 player", as the USB device list 
> suggests.
> 
> Any ideas anyone? Anything would be appreciated.
> 
> Would it be possible to make a patch for usb.c? I would like to analyse 
> the communication between PC and player more precisely. What program 
> could you suggest for that task?
> 
> regards
>     Kevin

This patch might help.  It will make the initial communication 
(enumeration) between the device and Linux more like the way Windows 
works.  Let me know what happens.

Alan Stern


===== drivers/usb/core/config.c 1.37 vs edited =====
--- 1.37/drivers/usb/core/config.c      Sat May 15 11:48:04 2004
+++ edited/drivers/usb/core/config.c    Fri May 21 10:00:23 2004
@@ -465,23 +465,24 @@
                goto err2;
        memset(dev->rawdescriptors, 0, length);
 
-       buffer = kmalloc(8, GFP_KERNEL);
+       buffer = kmalloc(USB_DT_CONFIG_SIZE, GFP_KERNEL);
        if (!buffer)
                goto err2;
        desc = (struct usb_config_descriptor *)buffer;
 
        for (cfgno = 0; cfgno < ncfg; cfgno++) {
-               /* We grab the first 8 bytes so we know how long the whole */
-               /* configuration is */
+               /* We grab just the first descriptor so we know how long
+                * the whole configuration is */
                result = usb_get_descriptor(dev, USB_DT_CONFIG, cfgno,
-                   buffer, 8);
+                   buffer, USB_DT_CONFIG_SIZE);
                if (result < 0) {
                        dev_err(ddev, "unable to read config index %d "
-                           "descriptor\n", cfgno);
+                           "descriptor/%s\n", cfgno, "start");
                        goto err;
-               } else if (result < 8) {
+               } else if (result < 4) {
                        dev_err(ddev, "config index %d descriptor too short "
-                           "(expected %i, got %i)\n", cfgno, 8, result);
+                           "(expected %i, got %i)\n", cfgno,
+                           USB_DT_CONFIG_SIZE, result);
                        result = -EINVAL;
                        goto err;
                }
@@ -498,7 +499,7 @@
                    bigbuffer, length);
                if (result < 0) {
                        dev_err(ddev, "unable to read config index %d "
-                           "descriptor\n", cfgno);
+                           "descriptor/%s\n", cfgno, "all");
                        kfree(bigbuffer);
                        goto err;
                }



-------------------------------------------------------
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-users

Reply via email to