≡ Menu

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

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.

Share this tutorial on:
{ 7 comments… add one }
  • Zamfir January 31, 2012, 2:16 pm

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


  • Wizzy April 14, 2012, 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!

  • eranda May 16, 2012, 1:08 pm

    Thanks. This is really work for me

  • Schlenk August 15, 2013, 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.

  • JBD1986 October 23, 2013, 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.

  • stev December 6, 2013, 12:23 am

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


    • stev December 6, 2013, 12:24 am



Security: Are you a robot or human?

Leave a Comment

You can use these HTML tags and attributes: <strong> <em> <pre> <code> <a href="" title="">

   Tagged with: , , , , , , , , , , , , , , , , ,