问题
如何防止 Linux 尝试激活主板上损坏的 USB 端口?
概述
我的主板上有一个损坏的 USB 端口(也没有插入任何东西):
USB 1-3:设备描述符读取/64,错误-71
此 (usb 1-3) 端口会阻止 USB 1-4 端口初始化,直到系统放弃它为止。澄清一下,根据 dmesg,我的端口通常按以下顺序初始化:
usb 5-1: available instantly [USB2.0 Hub] (motherboard)
usb 3-1: available instantly [Generic USB Multimedia Keyboard] (frontside of PC)
usb 1-1: available instantly [Razer Goliathus Extended Chroma Mousepad] (motherboard)
usb 3-2: available instantly [FREE] (frontside of PC)
usb 3-4: available instantly [AURA LED Controller] (internal)
usb 5-3: available instantly [FREE] (motherboard)
usb 5-4: available instantly [FREE] (motherboard)
usb 5-1.2: available instantly [Razer Basilisk Ultimate Dongle] (motherboard)
usb 5-1.3: available instantly [Razer Mouse Dock] (motherboard)
usb 1-3: -BROKEN PORT- [FREE] (motherboard)
usb 1-4: 10s initalization delay [Razer Huntsman Elite] (motherboard)
如果我将键盘 (Razer Huntsman Elite) 插入 USB 1-4 端口,我必须在到达 tty0 后等待 10 秒,然后才能开始响应击键。此外,如果未禁用 USB 电源管理,则不会注册 USB 1-4 的按键(usbcore.autosuspend=-1)。键盘可立即与任何其他端口(5-1 / 3-1 / 1-1 / 3-2 / 5-3 / 5-4)配合使用。
仅当 USB 1-3 端口停止枚举后,USB 1-4 端口才可用(当 tty0 中弹出此消息时):
usb usb1-port3: 无法枚举 USB 设备
日志
日志ctl -b https://pastebin.com/raw/f9Brfzt3
消息 https://pastebin.com/raw/H6Wm2v5M
我尝试过的
我无法使用此 udev 规则禁用损坏的端口,因为它首先不可用:
$ echo '1-3' | sudo tee /sys/bus/usb/drivers/usb/unbind
1-3
tee: /sys/bus/usb/drivers/usb/unbind: No such device
解决方法1:
将键盘插入除 USB 1-4 和 USB 1-3 之外的任何端口。
解决方法2:
使用usbcore.autosuspend=-1等待 10 秒后我就可以使用 USB 1-4。
笔记:
USB 1-4 可立即用于:
- [GRUB2]。
- [BIOS]。
- [Windows 引导加载程序]。
- [Windows 11]。
如果通过以下方式禁用 USB 电源管理,则 USB 1-4 在到达 tty0 后 10 秒即可工作:
- [SystemD] NixOS 23.05pre454549.545c7a31e5d(内核 6.1.11 & 5.15.93 & 5.10.167)。
- [SystemD] Debian 12 Bookworm(内核 6.1.0)。
- [SystemD] PopOS 22.04 LTS(内核 6.0.12)。
USB 1-4 在 tty0 中工作 2 秒:
- [OpenRC] Alpine Linux Extended v3.17(内核 5.15.93)。
出于好奇我尝试过的其他事情:
- [BIOS] 将我的 X570-E 游戏主板 (ComboV2PI 1208) 更新到最新 BIOS
- [BIOS] 禁用 xHCI 切换
- [BIOS] 在 BIOS 中禁用 IOMMU(iommu=soft 内核参数也没有产生不同)
- [BIOS] 禁用快速启动