什么是 USB 设备重置?

什么是 USB 设备重置?

我有这个用两个 WD Elements 外置 USB 驱动器构建的全新软件 RAID-1,我可以看到 Linux 多次重复以下消息:

...
[302148.036912] usb 1-3.1: reset high-speed USB device number 19 using ehci_hcd
[302153.052029] usb 1-3.3: reset high-speed USB device number 20 using ehci_hcd
[302186.031481] usb 1-3.3: reset high-speed USB device number 20 using ehci_hcd
[302217.050210] usb 1-3.3: reset high-speed USB device number 20 using ehci_hcd
[302281.043543] usb 1-3.3: reset high-speed USB device number 20 using ehci_hcd
[302312.090158] usb 1-3.3: reset high-speed USB device number 20 using ehci_hcd
[302351.076851] usb 1-3.1: reset high-speed USB device number 19 using ehci_hcd
...

那么,它说了什么?这正常吗?这是我应该尝试解决的问题吗?

更新
实际上,这些消息并不是我以为的驱动器的消息。我还通过 USB 集线器将一堆其他 USB 驱动器连接到这台计算机。无论如何,我的问题基本上是,用简单的英语来说,这个消息是什么意思?

答案1

让我尝试。

从字面上看,该消息表明 Linux USB 堆栈已向您的特定设备(设备 #19 和 #20,无论它们是什么)发出“USB_RESET”。该错误似乎每 10-30 秒发生一次。重置后,日志应该有新的枚举消息,因为 USB 重置将强制连接的设备进入“默认状态”。看起来您的日志的详细程度非常低。

在操作过程中重置 USB 设备是一种非常严重的情况。如果控制器遇到“事务错误”,则会诉诸此“端口”重置。当链路未完成 USB 事务的所有必需阶段或出现 CRC 错误时,就会发生事务错误。在正常 USB 中,EHCI 控制器将自动重试失败的事务(通常最多 3 次),然后设置 XACT_ERROR 中断。从统计上讲,根据错误理论,如果链路对连续三次尝试没有做出正确响应,则特定 USB 段存在问题,主要是电气问题。因此,事务错误被视为致命错误,软件会尝试恢复链路。如果恢复链路的三四次尝试都失败,主机会将此端口视为死机并退出。

然而,在 Linux 中,有人认为 3 次理论上的尝试是不够的,Linux 软件会进行额外的 32(三十二)次尝试,总共 96 次(!!!)。如果硬件链路恰好处于电气边缘,那么 96 次尝试可能会在 99.99% 的时间内成功。Linux 软件专家声称这有助于提高可疑设备/电缆的可操作性。实际上,这种技术隐藏了此特定 USB 连接的严重问题,从长远来看对用户没有帮助。

问题可能出在驱动器的边际电压 (VBUS) 供应、VBUS 故障或信号线上的信号衰减。我会先尝试极短的高质量认证电缆,然后检查错误统计数据是否发生变化。

答案2

文章中描述了此错误 Linux:使用 ehci_hcd 重置高速 USB 设备错误及解决方案

此错误表示 USB 2.0 可能无法在您的系统上运行,或者只能以 USB 1.1 速度运行。要解决此问题:

  1. 更换硬件:大多数情况下,您需要更换主板。
  2. 删除 ehci_hcd 驱动程序
  3. 禁用 ehci_hcd 驱动 USB 2.0 接口并将其用作 USB 1.1。简而言之,禁用 ehci_hcd。

如果您不想更换主板,要删除 ehci_hcd 驱动程序,请编辑文件/etc/modprobe.d/blacklist.conf 并添加以下行:

blacklist ehci_hcd

最后,使用mkinitrd脚本构建一个可以在没有ehci_hcd的情况下作为initrd根文件系统的目录结构:

# mkinitrd -o /boot/initrd.$(uname -r).img $(uname -r)

重新启动进行测试。

具有类似说明的文章是: 为什么错误“内核:usb 1-2.2:使用 ehci_hcd 和地址 6 重置高速 USB 设备”会写入 /var/log/messages 文件?

相关内容