I guess it's the kernel problem with correct USB speed recognition,
because I have had this problem on different computers and linux versions.
My current ver. is Ubuntu 64bit 9.04.
Good example taken from my kern.log, notice first two lines:
--------------------------------------------------------------------------------------------------------------------------------------------------------
Jun 15 11:13:48 mirko2-l64 kernel: [81040.032022] usb 2-1: new full speed USB device using ohci_hcd and address 2
Jun 15 11:13:48 mirko2-l64 kernel: [81040.203039] usb 2-1: not running at top speed; connect to a high speed hub
Jun 15 11:13:48 mirko2-l64 kernel: [81040.215124] usb 2-1: configuration #1 chosen from 1 choice
--------------------------------------------------------------------------------------------------------------------------------------------------------
And few seconds later after device reconnecting (the same port and device), everything is ok:
---------------------------------------------------------------------------------------------------------------------------------------------------------
Jun 15 11:39:16 mirko2-l64 kernel: [82568.345018] usb 1-1: new high speed USB device using ehci_hcd and address 7
Jun 15 11:39:16 mirko2-l64 kernel: [82568.478023] usb 1-1: configuration #1 chosen from 1 choice
---------------------------------------------------------------------------------------------------------------------------------------------------------
I don't attach the rest of the kern.log, the device type is not important, because this happends with different
devices randomly. In my case there is 1-to-3 chance, that device will be recognised as USB 1.1 instead of 2.0.
The problem is probably in the (kernel_source)/drivers/usb/core/hub.c !!!
I'm not a programmer (only amateur who likes to solve problems ;-), so somebody take a look
and check that hub.c driver please.
Focus on:
------------
static void
check_highspeed (struct usb_hub *hub, struct usb_device *udev, int port1)
{
struct usb_qualifier_descriptor *qual;
int status;
qual = kmalloc (sizeof *qual, GFP_KERNEL);
if (qual == NULL)
return;
status = usb_get_descriptor (udev, USB_DT_DEVICE_QUALIFIER, 0,
qual, sizeof *qual);
if (status == sizeof *qual) {
dev_info(&udev->dev, "not running at top speed; "
"connect to a high speed hub\n");
/* hub LEDs are probably harder to miss than syslog */
if (hub->has_indicators) {
hub->indicator[port1-1] = INDICATOR_GREEN_BLINK;
schedule_delayed_work (&hub->leds, 0);
}
}
kfree(qual);
}
You see, driver only prints the warning, and does nothing else!!!
I guess it should at least reset the device and try to connect the USB 2.0 device to
EHCI and not OHCI/UHCI (host hub)!
I guess it's the kernel problem with correct USB speed recognition,
because I have had this problem on different computers and linux versions.
My current ver. is Ubuntu 64bit 9.04.
Good example taken from my kern.log, notice first two lines: ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ----- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- -----
-------
Jun 15 11:13:48 mirko2-l64 kernel: [81040.032022] usb 2-1: new full speed USB device using ohci_hcd and address 2
Jun 15 11:13:48 mirko2-l64 kernel: [81040.203039] usb 2-1: not running at top speed; connect to a high speed hub
Jun 15 11:13:48 mirko2-l64 kernel: [81040.215124] usb 2-1: configuration #1 chosen from 1 choice
-------
And few seconds later after device reconnecting (the same port and device), everything is ok: ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------ ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------
-------
Jun 15 11:39:16 mirko2-l64 kernel: [82568.345018] usb 1-1: new high speed USB device using ehci_hcd and address 7
Jun 15 11:39:16 mirko2-l64 kernel: [82568.478023] usb 1-1: configuration #1 chosen from 1 choice
-------
I don't attach the rest of the kern.log, the device type is not important, because this happends with different
devices randomly. In my case there is 1-to-3 chance, that device will be recognised as USB 1.1 instead of 2.0.
The problem is probably in the (kernel_ source) /drivers/ usb/core/ hub.c !!!
I'm not a programmer (only amateur who likes to solve problems ;-), so somebody take a look
and check that hub.c driver please.
Focus on:
------------
static void descriptor *qual;
check_highspeed (struct usb_hub *hub, struct usb_device *udev, int port1)
{
struct usb_qualifier_
int status;
qual = kmalloc (sizeof *qual, GFP_KERNEL);
if (qual == NULL)
return;
status = usb_get_descriptor (udev, USB_DT_ DEVICE_ QUALIFIER, 0, &udev-> dev, "not running at top speed; " indicators) { >indicator[ port1-1] = INDICATOR_ GREEN_BLINK; delayed_ work (&hub->leds, 0);
qual, sizeof *qual);
if (status == sizeof *qual) {
dev_info(
"connect to a high speed hub\n");
/* hub LEDs are probably harder to miss than syslog */
if (hub->has_
hub-
schedule_
}
}
kfree(qual);
}
You see, driver only prints the warning, and does nothing else!!!
I guess it should at least reset the device and try to connect the USB 2.0 device to
EHCI and not OHCI/UHCI (host hub)!