当 USB 设备未显示在 lsusb 中时,如何以数字方式重新插入 USB 设备

当 USB 设备未显示在 lsusb 中时,如何以数字方式重新插入 USB 设备

每当我将机器从睡眠状态唤醒时,我的 USB 音频接口就不再被识别。拔下并重新插入电缆或重新启动后,它会再次按预期工作。但显然一天做几次这样的事很烦人。

usbreset不是一个选项,因为该设备未显示在 中lsusb。我尝试添加一个内核参数来防止系统在睡眠前禁用 USB,但不知何故我无法更新 GRUB 配置。当我运行时,sudo grub-mkconfig -o /boot/grub/grub.cfg我得到以下输出:

[lenny@archlinux ~]$ sudo grub-mkconfig -o /boot/grub/grub.cfg 
[sudo] password for lenny: 
insmod: ERROR: could not load module part_gpt: No such file or directory

我还尝试检查 UEFI 中是否有一个选项可以在睡眠期间禁用 USB 端口,但我找不到任何东西。我使用技嘉 B550 Aorus PRO(如果我没记错的话,v2)。

关于如何解决这个问题有什么想法吗?

编辑:这是我的输出lsusb

[meekah@archlinux ~]$ lsusb -t
/:  Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/10p, 480M
    |__ Port 006: Dev 002, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 001: Dev 004, If 0, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 001: Dev 004, If 1, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 003: Dev 006, If 0, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 003: Dev 006, If 1, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 003: Dev 006, If 2, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 004: Dev 008, If 0, Class=Audio, Driver=snd-usb-audio, 480M
        |__ Port 004: Dev 008, If 1, Class=Audio, Driver=snd-usb-audio, 480M
        |__ Port 004: Dev 008, If 2, Class=Audio, Driver=snd-usb-audio, 480M
        |__ Port 004: Dev 008, If 3, Class=Application Specific Interface, Driver=[none], 480M
    |__ Port 007: Dev 003, If 0, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 010: Dev 005, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 001: Dev 007, If 0, Class=Vendor Specific Class, Driver=xone-dongle, 480M
/:  Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/4p, 10000M
/:  Bus 003.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/4p, 480M
/:  Bus 004.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/4p, 10000M
[meekah@archlinux ~]$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 001 Device 003: ID 048d:5702 Integrated Technology Express, Inc. RGB LED Controller
Bus 001 Device 004: ID 0c45:7016 Microdia USB DEVICE
Bus 001 Device 005: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 001 Device 006: ID 04d9:a067 Holtek Semiconductor, Inc. USB Gaming Mouse
Bus 001 Device 007: ID 045e:02fe Microsoft Corp. XBOX ACC
Bus 001 Device 008: ID 1397:0507 BEHRINGER International GmbH UMC202HD 192k
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
[meekah@archlinux ~]$ 

如您所见,我的音频接口位于总线 1 上,键盘和鼠标也是如此。但是,运行以下命令后,设备无法再次正常打开:

sudo sh -c 'echo 0 > /sys/bus/usb/devices/usb1/bConfigurationValue; sleep 2; echo 0 > /sys/bus/usb/devices/usb1/bConfigurationValue'

我尝试延长睡眠时间,但这只会导致键盘的 LED 重新亮起,尽管它实际上并没有起作用。重新插上键盘后,还是不行。在我看来,USB 控制器无法再次正常打开。

编辑 2:我设法让 grub 再次工作(任何人都会遇到这个问题,看起来我的 /etc/default/grub 内容被替换为 /boot/grub/grub.cfg 的内容。我不完全确定那是这个问题,我只是使用 pacman 重新安装了 grub)并添加了一个 linux 内核参数:usbcore.autosuspend=-1,但睡眠后我的音频接口仍然消失了。

编辑 3:我还注意到重新启动并不能解决此问题。只有关闭系统电源并完全从头开始启动或重新插入才能修复此问题。

编辑4:现在我让机器睡眠了一整夜,现在唤醒后音频接口可以正确识别。为了尝试一下,我再次将其置于睡眠状态,几秒钟后将其唤醒,音频接口再次消失。

编辑5:今晚睡觉后,它无法识别音频接口。这次我手动让机器进入睡眠状态,我不确定上次是否是自动的。

答案1

因此,lsubs 的缺失表明,即使是基本的枚举也不会发生或失败;这里有两个潜在的罪魁祸首:

  1. USB 设备的固件根本无法正确处理挂起、崩溃,并且需要重新启动电源
  2. USB 主机控制器的固件在挂起后根本无法正确重新枚举

对于第一种情况,除了拔掉、重新插入之外,我实际上看不到太多补救的机会,除非它是在(相当罕见的情况)USB集线器端口上,它可以(并且确实)实际上切断电源,并且这种情况发生为2.案例解决方案的副作用

第二种情况:你需要弄清楚你的USB设备在哪条总线上;遗憾的是,这不是静态的,但在大多数情况下,该数字在启动和挂起期间保持不变(尽管热插拔 PCIe 硬件),因此您可以lsusb -t在设备仍在运行时运行,以确定它所在的总线。

然后,您sudo sh -c 'echo 0 > /sys/bus/usb/devices/usb{number of the bus}/bConfigurationValue; sleep 2; echo 0 > /sys/bus/usb/devices/usb{number of the bus}/bConfigurationValue'可以关闭该总线段并在两秒后将其重新打开。 (我倾向于用一个命令来执行此操作,因为如果我在键盘上关闭总线,它会自动将其重新打开。)。这将导致 USB 总线段的重新枚举。

答案2

通过该uhubctl命令,您可能能够重新启动 USB 集线器中的特定端口。该命令可能在您的发行版的包管理器中可用;如果没有,你可以找到Github 中的源代码

上面链接的 Github 页面还包括一​​些使用提示和常见问题解答,因此即使您发现可以使用发行版的包管理器安装该命令,您也可能需要阅读它。

相关内容