在过去的几个月中,dmesg 中一直出现以下形式的消息:
[ 93.631038] usb 1-8: new full-speed USB device number 124 using xhci_hcd
[ 93.631184] usb 1-8: Device not responding to setup address.
[ 93.838652] usb 1-8: Device not responding to setup address.
[ 94.050219] usb 1-8: device not accepting address 124, error -71
[ 94.050257] usb 1-8: WARN: invalid context state for evaluate context command.
[ 94.167084] usb 1-8: new full-speed USB device number 125 using xhci_hcd
[ 94.167189] usb 1-8: Device not responding to setup address.
[ 94.375534] usb 1-8: Device not responding to setup address.
[ 94.586723] usb 1-8: device not accepting address 125, error -71
[ 94.586830] usb 1-8: WARN: invalid context state for evaluate context command.
[ 94.586919] usb usb1-port8: unable to enumerate USB device
[ 94.894226] usb 1-8: new full-speed USB device number 126 using xhci_hcd
[ 95.010984] usb 1-8: device descriptor read/64, error -71
[ 95.230185] usb 1-8: device descriptor read/64, error -71
[ 95.450261] usb 1-8: new full-speed USB device number 127 using xhci_hcd
[ 95.565799] usb 1-8: device descriptor read/64, error -71
[ 95.791642] usb 1-8: device descriptor read/64, error -71
[ 95.901208] usb usb1-port8: attempt power cycle
但是没有这样的设备1-8:
$ echo -n '1-8' | sudo tee /sys/bus/usb/drivers/usb/unbind
1-8tee: /sys/bus/usb/drivers/usb/unbind: No such device
这些消息与我插入的任何内容都不对应:
$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 046d:c34b Logitech, Inc. USB Keyboard
Bus 001 Device 003: ID 046d:c077 Logitech, Inc. Mouse
Bus 001 Device 004: ID 04ca:706e Lite-On Technology Corp. HP HD Camera
Bus 001 Device 005: ID 0bda:b00b Realtek Semiconductor Corp. Realtek Bluetooth 4.2 Adapter
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
lsusb -t
/: Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/12p, 480M
|__ Port 001: Dev 113, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 001: Dev 113, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 004: Dev 114, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 006: Dev 004, If 0, Class=Video, Driver=uvcvideo, 480M
|__ Port 006: Dev 004, If 1, Class=Video, Driver=uvcvideo, 480M
|__ Port 007: Dev 005, If 0, Class=Wireless, Driver=btusb, 12M
|__ Port 007: Dev 005, If 1, Class=Wireless, Driver=btusb, 12M
/: Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/6p, 5000M
同时,lsusb 现在需要大约 11 秒才能运行,新连接的 USB 设备也需要同样长的时间才能被识别。某些 USB 设备(例如我的扫描仪)被识别,但我的计算机无法再与它们通信。
因此,内核以某种方式看到了幻影设备,这似乎干扰了 USB 子系统的其余部分。
我尝试过强制使用 USB 2.0 并在内核选项中禁用 USB 电源管理,但无济于事。我查看了 BIOS/UEFI 设置工具,但找不到任何可以识别和禁用此端口的方法。
我在 Ubuntu 24.04 上运行 6.8.0-44-generic。
这是否表示硬件存在缺陷?我该如何解决?
这大量消息可能表明您的某个 USB 端口上有东西将 D+ 拉高,这表示“连接事件”。但此端口后面没有其他东西,因此第一个“Set_Address”失败。由于基本响应失败,系统无法获取描述符,因此它不知道它是什么,lsusb 什么也不显示。由于 D+=HIGH 条件可能持续存在,系统会不断尝试“重置枚举”,尝试增加地址并循环。
虚拟 D+=high 状态可能是由于某个端口上的 ESD 保护电路故障。或者电路板上有导电污垢。我还见过一些愚蠢的 USB LED 灯制造商,他们生产的 D+ 被拉高,但没有 USB 功能。
从技术上讲,如果情况持续存在,主机应该停止处理故障端口,但在您的情况下,故障似乎是间歇性的,这就是超时不起作用的原因。