如何在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端口),先看看这个端口有没有插着设备——拔下来换个端口试试,或者用毛刷清理一下端口里的灰尘。很多时候就是接触不好,导致系统反复尝试识别。直接禁用有问题的端口
如果物理排查没用,可以直接禁用这个闹腾的端口:- 先确认端口的sysfs路径,用命令
find /sys -name "*1-8*"定位,通常会找到类似/sys/bus/usb/devices/1-8的路径。 - 执行命令禁用端口:
echo 0 | sudo tee /sys/bus/usb/devices/1-8/power/control
要是这个命令没效果,试试把端口从驱动里解绑:
echo "1-8" | sudo tee /sys/bus/usb/drivers/usb/unbind- 先确认端口的sysfs路径,用命令
重启USB控制器
有时候重启整个USB控制器能一次性解决这类枚举问题:- 你日志里显示用的是
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
- 如果你用Debian/Ubuntu系:
备注:内容来源于stack exchange,提问作者user2615350




