Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 25 Sep 2006 02:49:02 +0300 (EEST)
From:      Vladimir Kushnir <vkushnir@i.kiev.ua>
To:        "Andrey V. Elsukov" <bu7cher@yandex.ru>
Cc:        freebsd-current@freebsd.org, freebsd-usb@freebsd.org
Subject:   Re: Problems with USB on CURRENT
Message-ID:  <20060925014415.S1442@kushnir1.kiev.ua>
In-Reply-To: <45166CB4.000004.01220@camay.yandex.ru>
References:  <45166CB4.000004.01220@camay.yandex.ru>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi, All!

On Sun, 24 Sep 2006, Andrey V. Elsukov wrote:

> Hi, All!
>
> I have notebook Maxselect Mission GT3000.
> A hardware configuration description (russian):
> http://www.maxselect.ru/catalog/models.html?id=4024&template=normal
>
> o Mobile AMD Sempron
> o NVIDIA C51MV+MCP51M
> o PCI Express nVidia Geforce Go 6100
> o Realtek HDA
>
> I have several problems. One is with USB.
> When i attach USB Flash disk it's not work.
>
> usbd_new_device: addr=2, getting first desc failed
> uhub_explore: usb_new_device failed, error=IOERROR
> uhub1: device problem (IOERROR), disabling port 4
>
> http://butcher.heavennet.ru/dmesg.txt
> http://butcher.heavennet.ru/pciconf.txt
> I've attached dmesg and pciconf.
> Any suggestions?
> -- 
> WBR, Andrey V. Elsukov
>

I had precisely the same problem with USB-2 flash (both old USB-1.1 
flash and digital camera - Kodak C340, uses ugen) work perfectly all 
right. MB: Asus A8N (nForce4 based). The problem went away with 
retrying to get device descriptor in usbd_new_device (see patch below).
I've submitted PR (usb/103167) but so far there's been no reaction at all 
:-(

Hope this helps,
Vladimir

/* ----------- patch begins here  -------------- */

*** dev/usb/usb_subr.c.orig	Mon Sep 11 19:28:35 2006
--- dev/usb/usb_subr.c	Mon Sep 11 20:05:38 2006
***************
*** 1112,1118 ****

   	dd = &dev->ddesc;
   	/* Get the first 8 bytes of the device descriptor. */
! 	err = usbd_get_desc(dev, UDESC_DEVICE, 0, USB_MAX_IPACKET, dd);
   	if (err) {
   		DPRINTFN(-1, ("usbd_new_device: addr=%d, getting first desc "
   			      "failed\n", addr));
--- 1112,1123 ----

   	dd = &dev->ddesc;
   	/* Get the first 8 bytes of the device descriptor. */
! 	for (i = 0; i < 3; i++) {
! 		err = usbd_get_desc(dev, UDESC_DEVICE, 0, USB_MAX_IPACKET, dd);
! 		if (!err)
! 			break;
! 		usbd_delay_ms(dev, USB_SET_ADDRESS_SETTLE);
! 	}
   	if (err) {
   		DPRINTFN(-1, ("usbd_new_device: addr=%d, getting first desc "
   			      "failed\n", addr));

/* -------------- end ----------------- */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060925014415.S1442>