You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Linux系统中移除幽灵USB设备?

如何在Linux系统中移除幽灵USB设备?

嘿,我之前也碰到过一模一样的情况——dmesg里反复刷这些USB枚举失败的日志,不仅看着闹心,还可能悄悄占用系统资源。先看看你贴出的日志:

[   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, err...

这种“幽灵”USB设备通常是硬件接触不良、设备故障或者驱动小bug导致的,给你几个亲测有效的解决方法:

  • 先从物理层面排查
    日志里明确指向了usb 1-8(总线1的第8个USB端口),先看看这个端口有没有插着设备——拔下来换个端口试试,或者用毛刷清理一下端口里的灰尘。很多时候就是接触不好,导致系统反复尝试识别。

  • 直接禁用有问题的端口
    如果物理排查没用,可以直接禁用这个闹腾的端口:

    1. 先确认端口的sysfs路径,用命令find /sys -name "*1-8*"定位,通常会找到类似/sys/bus/usb/devices/1-8的路径。
    2. 执行命令禁用端口:
      echo 0 | sudo tee /sys/bus/usb/devices/1-8/power/control
      

    要是这个命令没效果,试试把端口从驱动里解绑:

    echo "1-8" | sudo tee /sys/bus/usb/drivers/usb/unbind
    
  • 重启USB控制器
    有时候重启整个USB控制器能一次性解决这类枚举问题:

    1. 你日志里显示用的是xhci_hcd驱动,直接卸载再重新加载:
      sudo modprobe -r xhci_hcd
      sudo modprobe xhci_hcd
      

    注意:这个操作会暂时断开所有USB设备,如果你用的是USB键盘鼠标,可能会暂时失去控制——要么提前用PS/2设备,要么通过远程连接操作。

  • 更新系统和驱动
    偶尔这类问题是内核或驱动的bug导致的,试试更新系统:

    • 如果你用Debian/Ubuntu系:sudo apt update && sudo apt upgrade
    • 如果你用RHEL/CentOS系:sudo dnf update

备注:内容来源于stack exchange,提问作者user2615350

火山引擎 最新活动