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

by Vivek Gite on October 13, 2011 · 1 comment

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.

Featured Articles:

Share this with other sys admins!
Facebook it - Tweet it - Print it -

{ 1 comment… read it below or add one }

1 Zamfir January 31, 2012

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

?

Reply

Leave a Comment

You can use these HTML tags and attributes for your code and commands: <strong> <em> <ol> <li> <u> <ul> <blockquote> <pre> <a href="" title="">
What is 4 + 4 ?
Please leave these two fields as-is:
Solve the simple math so we know that you are a human and not a bot.




Previous post:

Next post: