In my case, I connect the external portable 2.5" harddrive via USB cable with one
micro-USB plug (on HDD side) and two normal-USB plugs (on PC side). One of the PC-side
USB plugs provides only more electric current (I will call this dummy USB in the next).
What I found is that if I connect my HDD via dummy USB first and then after few seconds
I plug the second USB into PC, the whole USB-speed detection is always OK.
I assume that the problem with wrong USB-speed detection is caused by the initial current
overloading of the USB ports when we connect the big-current-sucking-device (as external
HDD) to computer. In first second or two HDD spins its plates, sucks more current and
this may confuse the electronics in the HDD enclosure.
I'm lucky because I use cable with two USB plugs on the PC-side of the cable but, I saw ext.
HDD products bundled with simple cable only, so my solution will not work in their case.
The solution in the kernel could be to delay the speed-detection process by second or two
or to reset the USB device in the case of speed-detection confusion (famous kernel
message: "usb x-y: not running at top speed; connect to a high speed hub") and try to
detect the speed again.
In my case, I connect the external portable 2.5" harddrive via USB cable with one
micro-USB plug (on HDD side) and two normal-USB plugs (on PC side). One of the PC-side
USB plugs provides only more electric current (I will call this dummy USB in the next).
What I found is that if I connect my HDD via dummy USB first and then after few seconds
I plug the second USB into PC, the whole USB-speed detection is always OK.
I assume that the problem with wrong USB-speed detection is caused by the initial current sucking- device (as external
overloading of the USB ports when we connect the big-current-
HDD) to computer. In first second or two HDD spins its plates, sucks more current and
this may confuse the electronics in the HDD enclosure.
I'm lucky because I use cable with two USB plugs on the PC-side of the cable but, I saw ext.
HDD products bundled with simple cable only, so my solution will not work in their case.
The solution in the kernel could be to delay the speed-detection process by second or two
or to reset the USB device in the case of speed-detection confusion (famous kernel
message: "usb x-y: not running at top speed; connect to a high speed hub") and try to
detect the speed again.