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

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.

🐧 Get the latest tutorials on Linux, Open Source & DevOps via RSS feed or Weekly email newsletter.

🐧 7 comments so far... add one

CategoryList of Unix and Linux commands
Disk space analyzersdf ncdu pydf
File Managementcat cp mkdir tree
FirewallAlpine Awall CentOS 8 OpenSUSE RHEL 8 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 20.04
Network UtilitiesNetHogs dig host ip nmap
OpenVPNCentOS 7 CentOS 8 Debian 10 Debian 8/9 Ubuntu 18.04 Ubuntu 20.04
Package Managerapk apt
Processes Managementbg chroot cron disown fg jobs killall kill pidof pstree pwdx time
Searchinggrep whereis which
User Informationgroups id lastcomm last lid/libuser-lid logname members users whoami who w
WireGuard VPNAlpine CentOS 8 Debian 10 Firewall Ubuntu 20.04
7 comments… add one
  • Zamfir Jan 31, 2012 @ 14:16

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


  • Wizzy Apr 14, 2012 @ 0:39

    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!

  • eranda May 16, 2012 @ 13:08

    Thanks. This is really work for me

  • Schlenk Aug 15, 2013 @ 10:31

    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.

  • JBD1986 Oct 23, 2013 @ 15:02

    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.

  • stev Dec 6, 2013 @ 0:23

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


    • stev Dec 6, 2013 @ 0:24



Leave a Reply

Your email address will not be published.

Use HTML <pre>...</pre> for code samples. Still have questions? Post it on our forum