在 Ubuntu 18.04 上从睡眠状态恢复后 USB 端口不工作

nas*_*han 12 usb 18.04

最近我安装了 Ubuntu 18.04 并开始面临一个奇怪的问题。当我进入睡眠/休眠模式时,我的三个 USB 端口中的两个停止工作。

如果我重新启动 Ubuntu,USB 端口会恢复正常模式。

Win*_*nix 7

这个来自Unix & Linux Stack Exchange 的答案(这里略有增强)有一个解决方案。

  1. 编辑/etc/default/grub并找到包含LINUX_DEFAULT. 更改行:

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
    
    Run Code Online (Sandbox Code Playgroud)

    到:

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.autosuspend=-1"
    
    Run Code Online (Sandbox Code Playgroud)
  2. 保存文件,运行sudo update-grub,然后重新启动。

  3. 使用后,你会发现:

    $ cat /sys/module/usbcore/parameters/autosuspend
    -1
    
    Run Code Online (Sandbox Code Playgroud)

    默认值为2。内核参数更改此值。

设置内核参数对我有帮助。现在我的鼠标从挂起恢复时再次工作。

建议:当USB设备在挂起后不工作时,您也可以以root身份使用以下命令重新加载驱动程序:

modprobe -r uhci_hcd
modprobe uhci_hcd
Run Code Online (Sandbox Code Playgroud)

和/或:

modprobe -r ehci_hcd
modprobe ehci_hcd
Run Code Online (Sandbox Code Playgroud)


小智 7

接受的答案对我来说不起作用,而且每当我重新安装或更新 grub 或从另一个操作系统启动或其他任何东西时,我也不想跟上内核参数。有一个名为的文件usbresetusbutils. 运行它,找到您想要在唤醒时重新启动的设备的名称,然后将一个文件放入/lib/systemd/system-sleep我的文件中,我称之为重置鼠标,所以我的文件是/lib/systemd/system-sleep/reset-mouse.

如果您有该文件夹,只需查看该格式的另一个条目即可。我的是:

#!/bin/sh

case $1 in
  post)
    usbreset "Wireless Device"
    ;;
esac
Run Code Online (Sandbox Code Playgroud)

我通过从终端运行获得了“无线设备”名称,usbreset该终端还将列出您的设备并告诉它们的名称,因此无论您遇到问题是什么设备。

sudo chmod +x /lib/systemd/system-sleep/reset-mouse
Run Code Online (Sandbox Code Playgroud)

然后下次我的机器进入睡眠状态时,此后每次都会立即唤醒,没有 USB 问题。