Linux: Reset High Speed USB Device Using ehci_hcd Error and Solution

by on October 13, 2011 · 7 comments· LAST UPDATED October 13, 2011

in

I've recently installed CentOS / RHEL 6.x on the server. I'm getting the following messages in /var/log/messages file logged frequently :

Oct 13 14:00:20 server1 kernel: usb 1-7: reset high speed USB device using ehci_hcd and address 2
Oct 13 14:05:57 server1 kernel: usb 1-7: reset high speed USB device using ehci_hcd and address 2
Oct 13 14:09:18 server1 kernel: usb 1-7: reset high speed USB device using ehci_hcd and address 2
Oct 13 14:11:42 server1 kernel: usb 1-7: reset high speed USB device using ehci_hcd and address 2
Oct 13 14:11:49 server1 kernel: usb 1-7: reset high speed USB device using ehci_hcd and address 2

How do I solve this problem?

The Enhanced Host Controller Interface (EHCI) is a register-level interface that enables a host controller for USB or FireWire hardware to communicate with a host controller driver in software. In this case USB revision 2.0. ehci-hcd.ko is USB 2.0 'Enhanced' Host Controller (EHCI) driver. This error indicates that USB 2.0 may not function on your system, or may function only at USB 1.1 speeds. To fix this problem:

  1. Replace hardware: In most cases you need to replace the motherboard.
  2. Remove ehci_hcd driver
  3. Disable ehci_hcd drive USB 2.0 interface and use it as USB 1.1. In short disable the ehci_hcd.

How Do I Find Out More Info About EHCI Controller?

Type the following command:
# lspci |grep -i ehci
Sample outputs:

00:1d.7 USB Controller: Intel Corporation 631xESB/632xESB/3100 Chipset EHCI USB2 Controller (rev 09)

You can also use the lsusb command to get detailed information about USB buses in the system and the devices connected to them:
# lsusb
# lsusb -v | less

Linux: Remove ehci_hcd Driver

You need to blacklist ehci_hcd driver by editing /etc/modprobe.d/blacklist.conf file, enter:
# vi /etc/modprobe.d/blacklist.conf
You need to list / add a module here to prevent the hotplug scripts from loading it:
blacklist ehci_hcd
Save and close the file. Finally, use the mkinitrd script to constructs a directory structure that can serve as an initrd root file system without ehci_hcd:
# mkinitrd -o /boot/initrd.$(uname -r).img $(uname -r)
For testing purpose reboot the system:
# reboot

Linux: Disable ehci_hcd Driver

To unbind the ehci_hcd drive support type the following commands:
# cd /sys/bus/pci/drivers/ehci_hcd/
# ls -l

Sample outputs:

lrwxrwxrwx. 1 root root    0 Oct 13 17:29 0000:00:1d.7 -> ../../../../devices/pci0000:00/0000:00:1d.7
--w-------. 1 root root 4096 Oct 13 17:29 bind
lrwxrwxrwx. 1 root root    0 Oct 13 17:29 module -> ../../../../module/ehci_hcd
--w-------. 1 root root 4096 Oct 13 17:29 new_id
--w-------. 1 root root 4096 Oct 13 17:29 remove_id
--w-------. 1 root root 4096 Oct 13 17:29 uevent
--w-------. 1 root root 4096 Oct 13 17:29 unbind

Type the following command:
# echo -n "0000:00:1d.7" > /sys/bus/pci/drivers/ehci_hcd/unbind
This will run USB in 1.1 speed. You will not see message and/or you will able to use the USB device itself. Simply add the above command to /etc/rc.local so that it will work after rebooting the system.

TwitterFacebookGoogle+PDF versionFound an error/typo on this page? Help us!

{ 7 comments… read them below or add one }

1 Zamfir January 31, 2012 at 2:16 pm

Wouldn’t this do it:
# modprobe -r ehci_hcd
# mkinitrd /boot/initrd-$(uname -r).img $(uname -r)

?

Reply

2 Wizzy April 14, 2012 at 12:39 am

The question is: why? There is no point to disable ehci-hcd. Reseting high-speed device means (no more, no less): device was successfully registered with ehci-hcd with high-speed, which means, that hcd is able and work in ehci mode! This is non-solution solution! Is solves nothing, just creates another problem.
Tell me how you want to cope with ieee802.11n adapter, when full-speed is NOT capable to provide enough juice to run ieee802.11g adapter at 1/3 of maximum speed (802.11g is capable of around 3.1MiB/s NFS/TCP/IP transfer (counting data carried in it only). On full-speed 802.11g tops-out at 1.0MiB/s NFS/TCP/IP data transfer! So would explain to me how you want to run 802.11n adapter on OHCI-HCD (or UHCI-HCD, which is even worse!)?
And tell what you are going to do in case of XHCI-HCD? Those cables could go bad as well!
Solution isn’t to turn off EHCI-HCD, but to replace cable, and if this won’t help – replace device!

Reply

3 eranda May 16, 2012 at 1:08 pm

Thanks. This is really work for me

Reply

4 Schlenk August 15, 2013 at 10:31 am

Perfect, works well, thanks a lot. In some cases, devices claim to be hi-speed compliant, but are actually not. This is a nice way to force full-speed only.

Reply

5 JBD1986 October 23, 2013 at 3:02 pm

See if this solves your issue. You shouldn’t need to run in USB 1.1 mode.

The solution for me was to add CONFIG_USB_EHCI_TT_NEWSCHED to the .config when compiling the linux kernel.

Reply

6 stev December 6, 2013 at 12:23 am

on mint 15 I have no ehci_hcd. I do have o u x vairiants

ohci_hcd
uhci_hcd
xhci_hcd

Reply

7 stev December 6, 2013 at 12:24 am

inside

/sys/bus/pci/drivers

Reply

Leave a Comment

Tagged as: , , , , , , , , , , , , , , , , ,

Previous Faq:

Next Faq: