How to ensure that a USB2/3 external hard drive gets assigned a USB2 connection?

I have been having problems with speed when I archive data onto a USB2/3 external hard drive.

On firing up the KDE Info Centre, I have found that seven controllers are listed.

OHCI PCI Host Controllers: 5 in number: 12 Mbits/second; USB 1.01
EHCI Host Controller: 2 in number: 480 Mbits/second; USB 2.00

When I connect the external hard drive to a USB socket, it sometimes gets connected to the slower OHCI controller and sometimes to the EHCI controller. I have taken pains to connect the drives to the white coloured sockets (I think this denotes USB 2) on the front of the chassis.

I would have thought that devices would be assigned the right controller automatically, but it seems to be assigned by chance and I have had archiving sessions that were too slow to complete successfully. It was only then that I decided to find out which USB controller was controlling the external hard drive each time.

How might I force the external hard drives to get connected to the faster USB 2 controllers always?

[Disclaimer: I do not know much about this subject and hope what I have written makes sense.]

Thanks.

They quit putting usb 1.x chips in systems quite a few years ago.
However, a usb 2.x bus will still run at 1.x speeds if the devices attached or cabling used are 1.x parts.
Make sure your using usb 2.x or higher rated cables and devices.

Here is how the color coding specification is broken down for USB type A:

USB 1.x = White USB 2.x = Black USB 3.x = Blue Sleep and Charge only = Red
Make sure that the cables connectors as well as the systems ports (if color coded) match these colors.

Thanks for the colour coding information, AJSlye.

With the same cables and the same USB ports, I have tried connecting two different WD external hard drives (Passport and Elements), both capable of USB 3, but compatible with USB 2.

Here is what lsusb -t gives me when I connect the Passport drive first and then the Elements:

/: Bus 07.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/2p, 12M /: Bus 06.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/3p, 12M /: Bus 05.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/3p, 12M /: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/3p, 12M /: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/6p, 480M /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/6p, 480M |__ Port 4: Dev 6, If 0, Class=Mass Storage, Driver=usb-storage, 480M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/3p, 12M |__ Port 1: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 2: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 2: Dev 3, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 3: Dev 5, If 0, Class=Mass Storage, Driver=usb-storage, 12M
Note that the Elements gets a 480 Mbps connection whereas the Passport gets a 12 Mbps connection.

If I connect the Elements first and the Passport drive next, lsusb -t gives me:

/: Bus 07.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/2p, 12M /: Bus 06.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/3p, 12M /: Bus 05.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/3p, 12M /: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/3p, 12M /: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/6p, 480M /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/6p, 480M |__ Port 3: Dev 15, If 0, Class=Mass Storage, Driver=usb-storage, 480M |__ Port 4: Dev 13, If 0, Class=Mass Storage, Driver=usb-storage, 480M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/3p, 12M |__ Port 1: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 2: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 2: Dev 3, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
This is what I would have expected from the previous case as well.

Note that nothing has changed except the order in which I connected the two devices.

Because i need higher speeds and predictability on the speed assigned to the device, I installed a Transcend USB 3 card and tried connecting the two devices. In this case, order does not matter and lsusb -t gives me:

/: Bus 09.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 5000M |__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 5000M |__ Port 2: Dev 3, If 0, Class=Mass Storage, Driver=usb-storage, 5000M /: Bus 08.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M /: Bus 07.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/2p, 12M /: Bus 06.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/3p, 12M /: Bus 05.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/3p, 12M /: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/3p, 12M /: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/6p, 480M /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/6p, 480M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/3p, 12M |__ Port 1: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 2: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 2: Dev 3, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
While this solves my immediate issue, I wish to document what I experienced without the USB 3 card because it does not smell right. Something is indeed wrong with order-dependent speed, but I cannot lay a finger on what causes it.

Thanks for any clarification.

That sounds like either a hardware limitation of the usb chipset on the mainboard, or the drivers for that particular USB chipset.
It could also be a firmware issue somewhere. The fact that reversing the drives gives a different result with the onboard usb ports, i’d say it looks like an incompatibility between the drives firmware, and the motherboard and/or usb chipsets firmware, but what kind of conflict and where I couldn’t tell you.

Thanks for that. I tried ‘mhwd --listall’ in case it could shed some light. The last line of results was:

Warning: No USB configs found!

Is this normal and expected, or do I need to install or configure something? mhwd is something that I have not paid much attention to until now, and about which I know little.

The mhwd utility only supports display adapters and a few wireless/blue tooth chips, it is not intended for other usb devices like drives.
The configs it it’s looking for would be wireless or blue tooth devices, not the ports themselves.