带有游戏手柄的 USB 错误 -71 (EPROTO)

use*_*071 7 usb gamepad 12.04

我有几个带 USB 接口的游戏手柄,游戏手柄是 RockFire QF-501UV,将它们连接到 USB 端口时,我收到以下消息:

Feb 27 22:32:55 localhost kernel: [97408.112022] usb 5-1: new low-speed USB device number 28 using uhci_hcd
Feb 27 22:32:55 localhost kernel: [97408.232024] usb 5-1: device descriptor read/64, error -71
Feb 27 22:32:55 localhost kernel: [97408.456033] usb 5-1: device descriptor read/64, error -71
Feb 27 22:32:55 localhost kernel: [97408.672024] usb 5-1: new low-speed USB device number 29 using uhci_hcd
Feb 27 22:32:56 localhost kernel: [97408.792020] usb 5-1: device descriptor read/64, error -71
Feb 27 22:32:56 localhost kernel: [97409.016018] usb 5-1: device descriptor read/64, error -71
Feb 27 22:32:56 localhost kernel: [97409.232039] usb 5-1: new low-speed USB device number 30 using uhci_hcd
Feb 27 22:32:56 localhost kernel: [97409.640020] usb 5-1: device not accepting address 30, error -71
Feb 27 22:32:57 localhost kernel: [97409.752024] usb 5-1: new low-speed USB device number 31 using uhci_hcd
Feb 27 22:32:57 localhost kernel: [97410.160020] usb 5-1: device not accepting address 31, error -71
Feb 27 22:32:57 localhost kernel: [97410.160038] hub 5-0:1.0: unable to enumerate USB device on port 1
Run Code Online (Sandbox Code Playgroud)

谷歌搜索我发现有些人对 USB 设备有类似(但不一样)的问题,一些建议的解决方案对我不起作用。我已经尝试了以下方法,但没有奏效(相同的消息):

echo -1 > /sys/module/usbcore/parameters/autosuspend
echo Y > /sys/module/usbcore/parameters/use_both_schemes
echo -n 0000\:00\:1d.7 > /sys/bus/pci/drivers/ehci_hcd/unbind
Run Code Online (Sandbox Code Playgroud)

where(在执行最后一个命令之前):

# ls /sys/bus/pci/drivers/ehci_hcd
0000:00:1d.7  bind  module  new_id  remove_id  uevent  unbind
Run Code Online (Sandbox Code Playgroud)

全部以 root 身份,在我检查过每个命令之后,看看是否有任何区别。

Linux 甚至无法识别所连接的 USB

# lsusb
Bus 005 Device 023: ID 046d:c52e Logitech, Inc. 
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Run Code Online (Sandbox Code Playgroud)

Linux 3.5.0-25-generic #38-Ubuntu SMP i686 i686 i686 GNU/Linux

小智 4

值得庆幸的是,这个问题为我解决了。 解决办法:改为使用USB数据线,而不是使用USB专用充电线,尽管它们看起来一样。

与您类似,我的 Sansa Clip+ 4GB MP3 播放器也有问题,该播放器之前可以在 Ubuntu 12.04 上运行,但现在不行了,使用类似的

device not accepting address 31, error -71
hub 5-0:1.0: unable to enumerate USB device on port n
Run Code Online (Sandbox Code Playgroud)

输出中的错误消息dmesg。我花了几个小时在 Windows Vista、Windows 7、Ubuntu 12.04、CentOS Live DVD、Fedora Live DVD、笔记本电脑、台式机上尝试,但都无济于事。

最后,我尝试了不同的 USB 电缆,它立即在 Windows 和 Ubuntu 12.04 上运行。然后我意识到我家里有多个USB充电器,我不小心用了其中一根电缆来连接,而当前可用的电缆很可能是Sansa Clip+ MP3播放器附带的USB数据线。在网上搜索后,我找到了 2 篇关于 USB 数据线和 USB 充电线之间差异的参考资料。充电专用电缆仅使用 2 个引脚提供电源(电力),并且不在 2 个数据引脚上放置任何信号,因此在使用它们时,无论操作系统类型如何,USB 设备都会出现连接到操作系统的问题: Windows 或 Linux。

2个参考文献是:

  1. 维基百科:通用串行总线,“连接器类型”部分

    “为了可靠地实现仅充电功能,现代 USB 配件外设现在包括充电电缆,可提供与主机端口的电源连接,但不提供数据连接,并且家用和车辆充电底座都可以通过转换器设备供电,而不需要数据连接。包括主机设备和数据引脚,允许任何有能力的 USB 设备通过标准 USB 电缆充电或操作。”

  2. USB 充电线和数据充电线之间的区别

无论如何,我很感激它最终得到了解决,并希望您的问题也能尽快得到解决。


小智 0

也许您的 USB 设备有过流保护?请尝试以下页面中的说明,并让我们知道它们是否有帮助。

USB 具有过流保护功能,当端口功耗过高时会触发该保护。

从 PC 上拔下所有 USB 设备,关闭电源,然后等待一两分钟。将所有设备插回并启动至 Linux。