无需重启即可解决 USB 集线器故障问题

无需重启即可解决 USB 集线器故障问题

我的 Ubuntu 16.04LTS 机器的 dmesg 中出现了内部 USB 集线器故障消息风暴。

我尝试使用以下命令重新启动 udev,但它并没有解决我的问题。

sudo systemctl restart udev.service

重启机器应该可以解决问题,我遇到了这个错误信息,重启成功了。但是我不想重启它。

有没有办法解决这个问题而不需要重启我的 Linux 机器?

[1450314.465689] hub 4-2:1.0: hub_ext_port_status failed (err = -71)
[1450314.469189] hub 4-2:1.0: hub_ext_port_status failed (err = -71)
[1450314.472697] hub 4-2:1.0: hub_ext_port_status failed (err = -71)
[1450314.476190] hub 4-2:1.0: hub_ext_port_status failed (err = -71)
[1450314.479689] hub 4-2:1.0: hub_ext_port_status failed (err = -71)
[1450314.483190] hub 4-2:1.0: hub_ext_port_status failed (err = -71)
[1450314.504190] hub 4-2:1.0: hub_ext_port_status failed (err = -71)
[1450314.507713] hub 4-2:1.0: hub_ext_port_status failed (err = -71)
[1450314.511206] hub 4-2:1.0: hub_ext_port_status failed (err = -71)

答案1

来自评论...

您的某个 USB 设备可能导致此错误消息。拔下一个或多个 USB 设备,然后查看消息是否停止。

更新#1:

断开所有 USB 设备并重新连接,警告消息风暴停止。

答案2

我的 USB 卡经常出现这个问题,从 lspci 来看,这是一个
b3:00.0 USB controller: ASMedia Technology Inc. ASM2142/ASM3142 USB 3.1 Host Controller

当它开始输出此类消息时,我运行脚本并暂时修复它,直到它再次发生。

这是我在 journalctl -k 中得到的结果

1 月 3 日 12:58:34 p4 内核:hub 6-2.4:1.0:hub_ext_port_status 失败(错误 = -110)
1 月 3 日 12:58:39 p4 内核:usb 6-2.4.1:无法挂起设备,错误 -110 1
月 3 日 12:58:47 p4 内核:hub 6-2.4:1.0:hub_ext_port_status 失败(错误 = -110)
1 月 3 日 12:58:51 p4 内核:retire_capture_urb:抑制了 3 个回调
1 月 3 日 12:58:52 p4 内核:usb 6-2.4.1:无法挂起设备,错误 -110
1 月 3 日 12:58:56 p4 内核:hub 5-2:1.0:hub_ext_port_status 失败(错误 = -110)

以下是重置 USB 设备的脚本:

❯ cat /usr/local/bin/reset_usb

#!/bin/bash
[ `id -u` -ne 0 ] && exec sudo "$0"
cd /sys/bus/pci/drivers/xhci_hcd
#BUS="0000:18:00.0"
BUS="0000:b3:00.0"
echo "$BUS" > unbind
sleep 5
echo "$BUS" > bind
sleep 5
find "$BUS/" -name control -exec /bin/sh -c "echo on > {}" \;

我发现应该采用的方法BUS="0000:b3:00.0"是查看 dmesg 并检查ls -l /sys/bus/usb/devices/USB 设备所连接的 PCI 总线。例如,usb 6-2.4.1: Failed to suspend我检查 6-2*。

❯ ls -ld /sys/bus/usb/devices/6-2*
lrwxrwxrwx 1 root root 0 1 月 3 日 12:59 /sys/bus/usb/devices/6-2->
../../../设备/pci0000:b2 /0000:b2:00.0/0000:b3:00.0/usb6/6-2

然后我看到它要么是 PCI 设备,0000:b2:00.0要么是0000:b3:00.0。然后我检查 xhci_hci 驱动程序中哪一个应该被删除:

❯ ls -ld /sys/bus/pci/drivers/xhci_hcd/0000*
lrwxrwxrwx 1 root root 0 1 月 3 日 11:11 /sys/bus/pci/drivers/xhci_hcd/0000:00:14.0 ->
../../../../devices/pci0000:00/0000:00:14.0
lrwxrwxrwx 1 root root 0 1 月 3 日 11:11 /sys/bus/pci/drivers/xhci_hcd/0000:03:00.0->
../../../../devices/pci0000:00/0000:00:1c.0/0000:03:00.0
lrwxrwxrwx 1 root root 0 1 月 3 日 12:59 /sys/bus/pci/drivers/xhci_hcd/0000:b3:00.0 ->
../../../../devices/pci0000:b2/0000:b2:00.0/0000:b3:00.0

在这种情况下,0000:b3:00.0就是放入 BUS 驱动程序的正确设备。然后您可以运行脚本,输入您的 sudo 密码,您的所有 USB 设备将在大约 10 秒内重新连接。

相关内容