Linux 上的 USB 端口不断重置

Linux 上的 USB 端口不断重置

问题
USB 端口 (2.0) 不断重置,导致连接的外围设备在一段时间后停止工作。

硬件
主板:华硕 J1800I-C
CPU:Intel(R) Celeron(R) CPU J1800 @ 2.41GHz
RAM:4GB

单位数量:> 100 台用作支付亭的设备,全部显示相同的问题。

连接的 USB 设备 (lsusb)

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 013: ID 0dd4:015d Custom Engineering SPA
Bus 001 Device 012: ID 12d1:1506 Huawei Technologies Co., Ltd. Modem/Networkcard
Bus 001 Device 011: ID 23d8:0285 
Bus 001 Device 010: ID 1ff7:0013 CVT Electronics.Co.,Ltd CVTouch Screen (HID)
Bus 001 Device 009: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 001 Device 002: ID 0e8f:0022 GreenAsia Inc. multimedia keyboard controller
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub


重现问题的操作系统:
Ubuntu 14.04-服务器(64 位)
Ubuntu 16.04-服务器(64 位)
Ubuntu 18.04-服务器(64 位)
尝试使用 UEFI 和 BIOS 引导来尝试上述操作系统。

使用相同硬件不会产生任何问题的操作系统:
Ubuntu 14.04(服务器和桌面)(32 位)
Ubuntu 16.04-服务器(32 位)
Windows 7

怎么了 ?
启动时,一切顺利,USB 设备可以工作 15~60 分钟。此后,一个或多个端口将开始重置,并在 dmesg 中出现错误:

    [1484.129248]性能中断花费了太长时间(2520>2500),将kernel.perf_event_max_sample_rate降低到50000
    [2645.972003] USB 1-4-端口1:无法重置(错误= -71)
    [2646.236044] USB 1-4.1:使用xhci_hcd重置全速USB设备编号4
    [2646.324439] USB 1-4.1:ep 0x1 - 舍入间隔为 64 微帧,ep desc 表示 80 微帧
    [2647.558156] USB 1-4.1:使用xhci_hcd重置全速USB设备编号4
    [2647.646546] USB 1-4.1:ep 0x1 - 舍入间隔为 64 微帧,ep desc 表示 80 微帧
    [3942.619669]USB 1-4-端口1:无法重置(错误= -71)
    [3942.619742]USB 1-4-端口1:无法重置(错误= -71)
    [3942.619821]USB 1-4-端口1:无法重置(错误= -71)
    [3942.619861]USB 1-4-端口1:无法重置(错误= -71)
    [3942.619901]USB 1-4-端口1:无法重置(错误= -71)
    [3942.619905] USB 1-4-端口1:无法启用。也许 USB 线坏了?
    [3942.690031] USB 1-4.1:使用xhci_hcd重置全速USB设备编号4
    [3942.690038] USB 1-4.1:集线器无法启用设备,错误-22
    [3942.762176]usb 1-4.1:使用xhci_hcd重置全速USB设备编号4
    [3943.170800] USB 1-4.1:设备不接受地址4,错误-22
    [3943.242967]usb 1-4.1:使用xhci_hcd重置全速USB设备编号4
    [3943.651734]USB 1-4.1:设备不接受地址4,错误-22
    [3943.653063] USB 1-4.1:USB 断开连接,设备号 4
    [3943.751603] USB 1-4.1:使用 xhci_hcd 的新全速 USB 设备编号 8
    [3943.840892] USB 1-4.1:找到新的USB设备,idVendor = 1ff7,idProduct = 0013
    [3943.840899]usb 1-4.1:新的USB设备字符串:Mfr = 0,Product = 0,SerialNumber = 0
    [3943.841068] USB 1-4.1:ep 0x1 - 舍入间隔为 64 微帧,ep desc 表示 80 微帧
    [3943.850194]输入:HID 1ff7:0013为/devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4.1/1-4.1:1.0/0003:1FF7:0013.0005/input/input11
    [3943.850467]hid-multitouch 0003:1FF7:0013.0005:输入,hiddev0,hidraw3:USB HID v1.11鼠标[HID 1ff7:0013]在usb-0000:00:14.0-4.1 / input0上
    [4215.269989] USB 1-4-端口1:无法重置(错误= -71)
    [4215.270192] USB 1-4-端口1:无法重置(错误= -71)
    [4215.270264]USB 1-4-端口1:无法重置(错误= -71)
    [4215.270343]USB 1-4-端口1:无法重置(错误= -71)
    [4215.270383]USB 1-4-端口1:无法重置(错误= -71)
    [4215.270386] USB 1-4-端口1:无法启用。也许 USB 线坏了?
    [4215.342214] USB 1-4.1:使用xhci_hcd重置全速USB设备编号8
    [4215.342221] USB 1-4.1:集线器无法启用设备,错误-22
    [4215.358192]集线器1-4:1.0:hub_ext_port_status失败(错误= -71)
    [4215.358263]USB 1-4-端口1:无法重置(错误= -71)
    [4215.622566] USB 1-4.1:使用xhci_hcd重置全速USB设备编号8
    [4215.755250] USB USB1-端口4:被集线器禁用(EMI?),重新启用...
    [4215.755273] USB 1-4:USB 断开连接,设备号 3
    [4215.755277] USB 1-4.1:USB断开连接,设备编号0
    [4216.031181] USB 1-4.1:设备不接受地址8,错误-22
    [4216.064588] USB 1-4.2:USB 断开连接,设备号 5
    [4216.065324] USB 1-4.3:USB 断开连接,设备号 6
    [4216.065632]选项1 ttyUSB0:GSM调制解调器(1端口)转换器现已与ttyUSB0断开连接
    [4216.065647]选项1-4.3:1.0:设备已断开连接
    [4216.065760]huawei_cdc_ncm 1-4.3:1.1 wwx001e101f0000:取消注册'huawei_cdc_ncm'usb-0000:00:14.0-4.3,华为CDC NCM设备
    [4216.079590]选项1 ttyUSB1:GSM调制解调器(1端口)转换器现已与ttyUSB1断开连接
    [4216.079611]选项1-4.3:1.2:设备已断开连接
    [4216.079752]选项1 ttyUSB2:GSM调制解调器(1端口)转换器现已与ttyUSB2断开连接
    [4216.079768]选项1-4.3:1.3:设备已断开连接
    [4216.148026] USB 1-4.4:USB 断开连接,设备号 7
    [4216.148183]usblp2:已删除
    [4216.387741] USB 1-4:使用 xhci_hcd 的新高速 USB 设备编号 9
    [4216.517658] USB 1-4:找到新的USB设备,idVendor = 05e3,idProduct = 0610
    [4216.517666] USB 1-4:新的USB设备字符串:Mfr = 0,Product = 1,SerialNumber = 0
    [4216.517670] USB 1-4:产品:USB2.0集线器
    [4216.518341]集线器1-4:1.0:找到USB集线器
    [4216.518643]集线器1-4:1.0:检测到4个端口
    [4216.792385] USB 1-4.1:使用 xhci_hcd 的新全速 USB 设备编号 10
    [4216.885849] USB 1-4.1:找到新的USB设备,idVendor = 1ff7,idProduct = 0013
    [4216.885855]usb 1-4.1:新的USB设备字符串:Mfr = 0,Product = 0,SerialNumber = 0
    [4216.886042] USB 1-4.1:ep 0x1 - 舍入间隔为 64 微帧,ep desc 表示 80 微帧
    [4216.895096]输入:HID 1ff7:0013为/devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4.1/1-4.1:1.0/0003:1FF7:0013.0006/input/input13
    [4216.951230]hid-multitouch 0003:1FF7:0013.0006:输入,hiddev0,hidraw2:USB HID v1.11鼠标[HID 1ff7:0013]在usb-0000:00:14.0-4.1 / input0上

我尝试过但没有解决问题的事情:
我尝试通过在许多其他选项中添加 linux 内核 cmdline: usbcore.autosuspend=-1 来禁用 USB 端口的自动挂起,但它们都失败了。
我还尝试更改与 USB 相关的多个 BIOS 选项,但没有任何帮助。

有用的事实:
- 所有 USB 2.0 4 端口都会导致该问题。
- 该主板有一个 USB 3.0 端口,似乎不受该问题的影响。
- 使用连接到 USB3 端口的供电 USB 集线器,然后将所有 USB 设备连接到它似乎可以解决问题。
- 使用相同操作系统的 32 位版本似乎可以解决 USB 问题。测试了一些安装 32 位的信息亭 3 天的正常运行时间,没有出现任何 dmesg 警告或错误。

问题:
如何在 64 位 Ubuntu 16.04 上解决此问题?

转换为 32 位对我来说是一个不切实际的解决方案,因为它需要重新安装 100 多个设备。此外,我的一些设备附带了64位专有的SDK。

更新1:
Archlinux 64 位似乎可以在相同的硬件上正常工作。

答案1

我遇到了同样的问题,我的 dmesg 充满了这些消息,并且无法卸载或暂停计算机:

[ 4095.313680] usb usb4-port5: Cannot enable. Maybe the USB cable is bad?
[ 4099.301425] usb usb4-port5: Cannot enable. Maybe the USB cable is bad?
[ 4103.293161] usb usb4-port5: Cannot enable. Maybe the USB cable is bad?

我发现当长时间不拔掉USB设备时就会出现这种情况。也许某些设备上的控制器在保持如此长时间后变得不稳定,并且经历了如此多的暂停并且发送了错误的信号。

我发现这可以解决问题:

  • 全部您的 USB 设备;

或者

  • 关闭计算机电源并关闭 PSU(电源装置)附带的按钮,否则 PSU 仍将为主板供电,并且仍将为所连接设备上的 USB 控制器供电。

项目清单

当然,有时也可能是电缆损坏。看这里:https://askubuntu.com/a/348799/82315

答案2

Archlinux 64 位似乎可以在相同的硬件上正常工作。

Arch 具有滚动更新并保持最新状态。如果您需要坚持使用 Ubuntu,请尝试使用为您的 Ubuntu 版本提供主线内核的存储库。

答案3

您也可以尝试将其放入脚本中并运行它。

echo enabled > /sys/bus/usb/devices/usb1/power/wakeup

无论您拥有多少设备。

相关内容