Bug 5258

Summary: usb stick has only usb 1.1 speed when it should be 2.0
Product: Drivers Reporter: Jakob Petsovits (jpetso)
Component: USBAssignee: Greg Kroah-Hartman (greg)
Status: REJECTED DOCUMENTED    
Severity: normal CC: al_pavel
Priority: P2    
Hardware: i386   
OS: Linux   
Kernel Version: 2.6.13 Subsystem:
Regression: --- Bisected commit-id:
Bug Depends on:    
Bug Blocks: 5089    

Description Jakob Petsovits 2005-09-15 03:42:50 UTC
Distribution: Gentoo   
Hardware Environment: Acer TravelMate 803LCi  
  
Problem Description:  
  
I recently bought a usb 2.0 stick, 512 MB, branded by Ultra-Media.  
The Linux kernel only runs it as a usb 1.1 device,  
whereas in Windows XP it works with full usb 2.0 speed  
(and without installing additional drivers there),  
so I think this should be a kernel problem.  
  
KInfoCenter reports the device with the name "Unknown" in the  
"Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M)  
 USB UHCI Controller #x (x)" bus (x == 1..3), which is 1.1.  
The usb 2.0 bus would be "Intel Corporation 82801DB/DBM  
 (ICH4/ICH4-M) USB2 EHCI Controller (4)", this is where  
other usb 2.0 devices are put into (for example, my  
external hd or other usb sticks work, just not this one).  
  
As for the device details, KInfoCenter says:  
  
Class:       0 ((Defined at Interface level))  
Subclass:    0  
Protocol:    0  
USB Version: 1.10  
  
Vendor ID:   0x9a6 (Poinchips)  
Product ID:  0x8001  
Revision:    1.00  
  
Speed:       12 Mbit/s  
Channels:    0  
Max. Packet Size: 0  
  
When plugging in, dmesg says: 
 
usb 1-2: new full speed USB device using uhci_hcd and address 3 
scsi3 : SCSI emulation for USB Mass Storage devices 
usb-storage: device found at 3 
usb-storage: waiting for device to settle before scanning 
  Vendor: UM 2.0    Model:                   Rev: 1.06 
  Type:   Direct-Access                      ANSI SCSI revision: 00 
SCSI device sda: 1046464 512-byte hdwr sectors (536 MB) 
sda: Write Protect is off 
sda: Mode Sense: 00 06 00 00 
sda: assuming drive cache: write through 
SCSI device sda: 1046464 512-byte hdwr sectors (536 MB) 
sda: Write Protect is off 
sda: Mode Sense: 00 06 00 00 
sda: assuming drive cache: write through 
 sda: sda1 sda2 
Attached scsi removable disk sda at scsi3, channel 0, id 0, lun 0 
usb-storage: device scan complete 
 
  
What can I do to help fixing this? (Not being a kernel hacker, you know.)  
  
  
Steps to reproduce:   
- Plug the usb stick in  
- See the device properties, I use KInfoCenter,  
  but I'm sure there's some files in /proc too
Comment 1 David Brownell 2005-09-15 12:12:11 UTC
Are you sure you loaded "ehci-hcd"?  Normally that 
should be the "usb1" bus, but not here.  That suggests 
you don't have the right drivers loaded. 
 
If you have, then please update this report to include 
"dmesg" output for (a) starting up EHCI, and (b) plugging 
in this device, which will first include EHCI messages. 
Make sure to build your kernel with CONFIG_USB_DEBUG. 
Comment 2 Greg Kroah-Hartman 2005-09-15 15:35:13 UTC
Can you provide the output of 'mount'?
Comment 3 Greg Kroah-Hartman 2005-09-15 15:36:15 UTC
Oh, can you also provide the output of 'cat /proc/bus/usb/devices' with 
the device plugged in?
Comment 4 Jakob Petsovits 2005-09-16 01:52:18 UTC
(1 of 3) 
Here's the dmesg output. I have removed output from the other devices and 
marked what belongs to the booting process and what comes when plugging in the 
stick. As you can see, ehci-hcd is loaded properly and already before the stick 
is plugged in. I could maybe also mention that the issue has also been present 
in 2.6.12 already. 
    
USB Universal Host Controller Interface driver v2.3    
ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 10    
ACPI: PCI Interrupt 0000:00:1d.0[A] -> Link [LNKA] -> GSI 10 (level, low) ->    
IRQ 10    
PCI: Setting latency timer of device 0000:00:1d.0 to 64    
uhci_hcd 0000:00:1d.0: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M)    
USB UHCI Controller #1    
uhci_hcd 0000:00:1d.0: detected 2 ports    
uhci_hcd 0000:00:1d.0: check_and_reset_hc: legsup = 0x0f30    
uhci_hcd 0000:00:1d.0: Performing full reset    
uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 1    
uhci_hcd 0000:00:1d.0: irq 10, io base 0x00001800    
usb usb1: default language 0x0409    
usb usb1: new device strings: Mfr=3, Product=2, SerialNumber=1    
usb usb1: Product: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB    
UHCI Controller #1    
usb usb1: Manufacturer: Linux 2.6.13-suspend2-r4 uhci_hcd    
usb usb1: SerialNumber: 0000:00:1d.0    
usb usb1: hotplug    
usb usb1: adding 1-0:1.0 (config #1, interface 0)    
usb 1-0:1.0: hotplug    
hub 1-0:1.0: usb_probe_interface    
hub 1-0:1.0: usb_probe_interface - got id    
hub 1-0:1.0: USB hub found    
hub 1-0:1.0: 2 ports detected    
hub 1-0:1.0: standalone hub    
hub 1-0:1.0: no power switching (usb 1.0)    
hub 1-0:1.0: individual port over-current protection    
hub 1-0:1.0: power on to power good time: 2ms    
hub 1-0:1.0: local power source is good    
hub 1-0:1.0: state 5 ports 2 chg 0000 evt 0000    
ACPI: PCI Interrupt Link [LNKD] enabled at IRQ 5    
PCI: setting IRQ 5 as level-triggered    
ACPI: PCI Interrupt 0000:00:1d.1[B] -> Link [LNKD] -> GSI 5 (level, low) -> IRQ    
5 
PCI: Setting latency timer of device 0000:00:1d.1 to 64    
uhci_hcd 0000:00:1d.1: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M)    
USB UHCI Controller #2    
uhci_hcd 0000:00:1d.1: detected 2 ports    
uhci_hcd 0000:00:1d.1: check_and_reset_hc: legsup = 0x0010    
uhci_hcd 0000:00:1d.1: Performing full reset    
uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 2    
uhci_hcd 0000:00:1d.1: irq 5, io base 0x00001820    
usb usb2: default language 0x0409    
usb usb2: new device strings: Mfr=3, Product=2, SerialNumber=1    
usb usb2: Product: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB    
UHCI Controller #2    
usb usb2: Manufacturer: Linux 2.6.13-suspend2-r4 uhci_hcd    
usb usb2: SerialNumber: 0000:00:1d.1    
usb usb2: hotplug    
usb usb2: adding 2-0:1.0 (config #1, interface 0)    
usb 2-0:1.0: hotplug    
hub 2-0:1.0: usb_probe_interface    
hub 2-0:1.0: usb_probe_interface - got id    
hub 2-0:1.0: USB hub found    
hub 2-0:1.0: 2 ports detected    
hub 2-0:1.0: standalone hub    
hub 2-0:1.0: no power switching (usb 1.0)    
hub 2-0:1.0: individual port over-current protection    
hub 2-0:1.0: power on to power good time: 2ms    
hub 2-0:1.0: local power source is good    
hub 2-0:1.0: state 5 ports 2 chg 0000 evt 0000    
ACPI: PCI Interrupt 0000:00:1d.2[C] -> Link [LNKC] -> GSI 10 (level, low) ->    
IRQ 10 
PCI: Setting latency timer of device 0000:00:1d.2 to 64    
uhci_hcd 0000:00:1d.2: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M)    
USB UHCI Controller #3    
uhci_hcd 0000:00:1d.2: detected 2 ports    
uhci_hcd 0000:00:1d.2: check_and_reset_hc: legsup = 0x0410    
uhci_hcd 0000:00:1d.2: Performing full reset    
uhci_hcd 0000:00:1d.2: new USB bus registered, assigned bus number 3    
uhci_hcd 0000:00:1d.2: irq 10, io base 0x00001840    
usb usb3: default language 0x0409    
usb usb3: new device strings: Mfr=3, Product=2, SerialNumber=1    
usb usb3: Product: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB    
UHCI Controller #3    
usb usb3: Manufacturer: Linux 2.6.13-suspend2-r4 uhci_hcd    
usb usb3: SerialNumber: 0000:00:1d.2    
usb usb3: hotplug    
usb usb3: adding 3-0:1.0 (config #1, interface 0)    
usb 3-0:1.0: hotplug    
hub 3-0:1.0: usb_probe_interface    
hub 3-0:1.0: usb_probe_interface - got id    
hub 3-0:1.0: USB hub found    
hub 3-0:1.0: 2 ports detected    
hub 3-0:1.0: standalone hub    
hub 3-0:1.0: no power switching (usb 1.0)    
hub 3-0:1.0: individual port over-current protection    
hub 3-0:1.0: power on to power good time: 2ms    
hub 3-0:1.0: local power source is good    
hub 3-0:1.0: state 5 ports 2 chg 0000 evt 0000    
uhci_hcd 0000:00:1d.0: suspend_rh (auto-stop)    
uhci_hcd 0000:00:1d.1: suspend_rh (auto-stop)    
uhci_hcd 0000:00:1d.2: suspend_rh (auto-stop)    
ehci_hcd: block sizes: qh 128 qtd 96 itd 192 sitd 96    
ACPI: PCI Interrupt Link [LNKH] enabled at IRQ 10    
ACPI: PCI Interrupt 0000:00:1d.7[D] -> Link [LNKH] -> GSI 10 (level, low) ->    
IRQ 10 
PCI: Setting latency timer of device 0000:00:1d.7 to 64    
ehci_hcd 0000:00:1d.7: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI    
Controller    
ehci_hcd 0000:00:1d.7: reset hcs_params 0x103206 dbg=1 cc=3 pcc=2 ordered !ppc    
ports=6    
ehci_hcd 0000:00:1d.7: reset hcc_params 6871 thresh 7 uframes 1024 64 bit addr    
ehci_hcd 0000:00:1d.7: debug port 1    
ehci_hcd 0000:00:1d.7: capability 0001 at 68    
ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 4    
ehci_hcd 0000:00:1d.7: irq 10, io mem 0xd0000000    
ehci_hcd 0000:00:1d.7: reset command 080022 (park)=0 ithresh=8 Async    
period=1024 Reset HALT 
PCI: cache line size of 32 is not supported by device 0000:00:1d.7    
ehci_hcd 0000:00:1d.7: init command 010001 (park)=0 ithresh=1 period=1024 RUN    
ehci_hcd 0000:00:1d.7: USB 2.0 initialized, EHCI 1.00, driver 10 Dec 2004    
ehci_hcd 0000:00:1d.7: supports USB remote wakeup    
usb usb4: default language 0x0409    
usb usb4: new device strings: Mfr=3, Product=2, SerialNumber=1    
usb usb4: Product: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI    
Controller    
usb usb4: Manufacturer: Linux 2.6.13-suspend2-r4 ehci_hcd    
usb usb4: SerialNumber: 0000:00:1d.7    
usb usb4: hotplug    
usb usb4: adding 4-0:1.0 (config #1, interface 0)    
usb 4-0:1.0: hotplug    
hub 4-0:1.0: usb_probe_interface    
hub 4-0:1.0: usb_probe_interface - got id    
hub 4-0:1.0: USB hub found    
hub 4-0:1.0: 6 ports detected    
hub 4-0:1.0: standalone hub    
hub 4-0:1.0: no power switching (usb 1.0)    
hub 4-0:1.0: individual port over-current protection    
hub 4-0:1.0: Single TT    
hub 4-0:1.0: TT requires at most 8 FS bit times    
hub 4-0:1.0: power on to power good time: 20ms    
hub 4-0:1.0: local power source is good    
hub 4-0:1.0: state 5 ports 6 chg 0000 evt 0000    
ACPI: PCI Interrupt 0000:00:1f.5[B] -> Link [LNKB] -> GSI 10 (level, low) ->    
IRQ 10 
PCI: Setting latency timer of device 0000:00:1f.5 to 64    
    
--- So much for the booting process,             ---    
--- what follows is the usb stick plug-in output ---    
    
hub 4-0:1.0: state 5 ports 6 chg 0000 evt 0008    
ehci_hcd 0000:00:1d.7: GetStatus port 3 status 001803 POWER sig=j CSC CONNECT    
hub 4-0:1.0: port 3, status 0501, change 0001, 480 Mb/s    
hub 4-0:1.0: debounce: port 3: total 100ms stable 100ms status 0x501    
ehci_hcd 0000:00:1d.7: port 3 full speed --> companion    
ehci_hcd 0000:00:1d.7: GetStatus port 3 status 003801 POWER OWNER sig=j CONNECT    
uhci_hcd 0000:00:1d.1: wakeup_rh (auto-start)    
hub 4-0:1.0: port_wait_reset: err = -107    
hub 2-0:1.0: state 5 ports 2 chg 0000 evt 0002    
uhci_hcd 0000:00:1d.1: port 1 portsc 0093,00    
hub 2-0:1.0: port 1, status 0101, change 0001, 12 Mb/s    
hub 2-0:1.0: debounce: port 1: total 100ms stable 100ms status 0x101    
usb 2-1: new full speed USB device using uhci_hcd and address 2    
usb 2-1: ep0 maxpacket = 16    
usb 2-1: new device strings: Mfr=0, Product=0, SerialNumber=0    
usb 2-1: hotplug    
usb 2-1: adding 2-1:1.0 (config #1, interface 0)    
usb 2-1:1.0: hotplug    
hub 2-0:1.0: state 5 ports 2 chg 0000 evt 0002    
Initializing USB Mass Storage driver...    
usb-storage 2-1:1.0: usb_probe_interface    
usb-storage 2-1:1.0: usb_probe_interface - got id    
scsi0 : SCSI emulation for USB Mass Storage devices    
usb-storage: device found at 2    
usb-storage: waiting for device to settle before scanning    
usbcore: registered new driver usb-storage    
USB Mass Storage support registered.    
  Vendor: UM 2.0    Model:                   Rev: 1.06    
  Type:   Direct-Access                      ANSI SCSI revision: 00    
usb-storage: device scan complete    
SCSI device sda: 1046464 512-byte hdwr sectors (536 MB)    
sda: Write Protect is off    
sda: Mode Sense: 00 06 00 00    
sda: assuming drive cache: write through    
SCSI device sda: 1046464 512-byte hdwr sectors (536 MB)    
sda: Write Protect is off    
sda: Mode Sense: 00 06 00 00    
sda: assuming drive cache: write through    
 sda: sda1 sda2    
Attached scsi removable disk sda at scsi0, channel 0, id 0, lun 0    
    
Comment 5 Jakob Petsovits 2005-09-16 01:56:58 UTC
(2 of 3) 
The output of 'cat /proc/bus/usb/devices', which is obviously the source of 
information for KInfoCenter (from where I copied the information in the first 
comment of the bug report). The stick is the 4th entry. 
 
$ cat /proc/bus/usb/devices 
 
T:  Bus=04 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480 MxCh= 6 
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0 
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS= 8 #Cfgs=  1 
P:  Vendor=0000 ProdID=0000 Rev= 2.06 
S:  Manufacturer=Linux 2.6.13-suspend2-r4 ehci_hcd 
S:  Product=Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller 
S:  SerialNumber=0000:00:1d.7 
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA 
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub 
E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=256ms 
 
T:  Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 2 
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0 
D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1 
P:  Vendor=0000 ProdID=0000 Rev= 2.06 
S:  Manufacturer=Linux 2.6.13-suspend2-r4 uhci_hcd 
S:  Product=Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI 
Controller #3 
S:  SerialNumber=0000:00:1d.2 
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=  0mA 
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub 
E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=255ms 
 
T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 2 
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0 
D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1 
P:  Vendor=0000 ProdID=0000 Rev= 2.06 
S:  Manufacturer=Linux 2.6.13-suspend2-r4 uhci_hcd 
S:  Product=Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI 
Controller #2 
S:  SerialNumber=0000:00:1d.1 
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=  0mA 
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub 
E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=255ms 
 
T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=12  MxCh= 0 
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=16 #Cfgs=  1 
P:  Vendor=09a6 ProdID=8001 Rev= 1.00 
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA 
I:  If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=05 Prot=50 Driver=usb-storage 
E:  Ad=01(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms 
E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms 
 
T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 2 
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0 
D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1 
P:  Vendor=0000 ProdID=0000 Rev= 2.06 
S:  Manufacturer=Linux 2.6.13-suspend2-r4 uhci_hcd 
S:  Product=Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI 
Controller #1 
S:  SerialNumber=0000:00:1d.0 
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=  0mA 
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub 
E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=255ms 
 
Comment 6 Jakob Petsovits 2005-09-16 01:58:59 UTC
(3 of 3) 
The output of 'mount'. I've got 2 partitions on the stick, 
neither one shows any errors or non-standard stuff when mounting. 
 
$ mount -v /dev/sda1 
/dev/sda1 on /media/USB-DATA type vfat 
(rw,nosuid,nodev,sync,noatime,utf8,user=jakob) 
$ mount -v /dev/sda2 
/dev/sda2 on /media/USB-OS type vfat 
(rw,nosuid,nodev,sync,noatime,utf8,user=jakob) 
 
Comment 7 Greg Kroah-Hartman 2005-09-16 08:11:48 UTC
> $ mount -v /dev/sda1 
> /dev/sda1 on /media/USB-DATA type vfat 
> (rw,nosuid,nodev,sync,noatime,utf8,user=jakob) 

This is why your device is so slow, the "sync" option.  Disable that and
your device should be a lot faster.

Comment 8 Jakob Petsovits 2005-09-16 16:51:51 UTC
> This is why your device is so slow, the "sync" option. 
> Disable that and your device should be a lot faster. 
 
1. Thanks, you're right. Even if the entry in fstab, along with its options, is 
generated automatically with HAL and the KDE media:/ ioslave, but it doesn't 
have to concern you kernel devs how I manage to get an entry without 'sync'. 
 
2. But, even if fast enough without 'sync', that doesn't explain why the stick 
is only running in Full-Speed USB 1.1 mode instead of Hi-Speed USB 2.0. Do you 
think it's really a 1.1 stick (even if indicated otherwise on its packaging)? 
Anyways, I have to get back to Windows to check if it exceeds a speed of 12 
Mbps there (which is of course not happening in Linux, even without 'sync', 
because it's recognized as 1.1 device). 
 
Sorry if I'm wasting your time with a moot problem, in case it is one. 
Comment 9 Greg Kroah-Hartman 2005-09-16 17:13:20 UTC
No, your device is USB 2.0 compliant, just the "full speed" portion of that
spec :(

Yeah, it's very confusing, and you aren't the first one to be caught by 
companies not being entirely honest in their advertising, numerous
printers are also like this.

From what I can see, yes, your device is running as fast as it can.
Comment 10 Jakob Petsovits 2005-09-16 17:53:32 UTC
Ok Greg, thanks very much for your time, insight and explanations :) 
I'll see what I'm going to do with that knowledge... 
Comment 11 Greg Kroah-Hartman 2005-09-26 02:19:52 UTC
*** Bug 5308 has been marked as a duplicate of this bug. ***