Linux:使用ehci_hcd错误和解决方案重置高速USB设备
时间:2020-01-09 10:43:27 来源:igfitidea点击:
我在CentOS/RHEL6.x /var/log/messages文件中经常记录以下消息:
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
我该如何解决这个问题?
增强型主机控制器接口(EHCI)是寄存器级接口,使USB或者FireWire硬件的主机控制器能够与软件中的主机控制器驱动程序进行通信。
在这种情况下,USB版本为2.0。
ehci-hcd.ko是USB 2.0增强主机控制器(EHCI)驱动程序。
此错误表明USB 2.0可能无法在您的系统上运行,或者只能以USB 1.1的速度运行。
要解决此问题:
- 更换硬件:在大多数情况下,您需要更换主板。
- 删除ehci_hcd驱动程序
- 禁用ehci_hcd驱动器USB 2.0接口并将其用作USB 1.1。简而言之,请禁用ehci_hcd。
如何查找有关EHCI控制器的更多信息?
执行以下命令:
# lspci |grep -i ehci
输出示例:
00:1d.7 USB Controller: Intel Corporation 631xESB/632xESB/3100 Chipset EHCI USB2 Controller (rev 09)
您还可以使用lsusb命令来获取有关系统中的USB总线以及与其连接的设备的详细信息:
# lsusb # lsusb -v | less
Linux:删除ehci_hcd驱动程序
您需要通过编辑/etc/modprobe.d/blacklist.conf文件将ehci_hcd驱动程序列入黑名单,执行:
# vi /etc/modprobe.d/blacklist.conf
您需要在此处列出/添加模块,以防止热插拔脚本加载该模块:
blacklist ehci_hcd
保存并关闭文件。
最后,使用mkinitrd脚本构建一个目录结构,该目录结构可以用作没有ehci_hcd的initrd根文件系统:
# mkinitrd -o /boot/initrd.$(uname -r).img $(uname -r)
为了进行测试,请重新引导系统:
# reboot
Linux:禁用ehci_hcd驱动程序
要解除绑定ehci_hcd驱动器支持,请执行以下命令:
# cd /sys/bus/pci/drivers/ehci_hcd/ # ls -l
输出示例:
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
执行以下命令:
# echo -n "0000:00:1d.7" > /sys/bus/pci/drivers/ehci_hcd/unbind
这将以1.1速度运行USB。
您将不会看到该消息,并且/或者您将能够使用USB设备本身。
只需将上面的命令添加到/etc/rc.local中,以使其在重新启动系统后即可工作。