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