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

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

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

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

答案1

这个答案来自Unix 和 Linux Stack Exchange(这里稍微增强了一下)有一个解决方案。

  1. 编辑/etc/default/grub并找到包含 的行LINUX_DEFAULT。将以下行从:

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
    

    到:

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

  3. 使用后你会发现:

    $ cat /sys/module/usbcore/parameters/autosuspend
    -1
    

    默认值为2。内核参数可以改变该值。

设置内核参数对我有帮助。现在我的鼠标在从挂起状态恢复时又可以工作了。

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

modprobe -r uhci_hcd
modprobe uhci_hcd

和/或:

modprobe -r ehci_hcd
modprobe ehci_hcd

答案2

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

如果你有该文件夹,只需查看另一个条目以了解格式。我的是:

#!/bin/sh

case $1 in
  post)
    usbreset "Wireless Device"
    ;;
esac

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

sudo chmod +x /lib/systemd/system-sleep/reset-mouse

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

答案3

有同样的问题,找到了解决方案与@Rasheed 的回答类似。

首先,使用以下命令查找设备 ID lsusb

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 04f2:b539 Chicony Electronics Co., Ltd USB2.0 Hub
Bus 001 Device 004: ID 1ea7:0064 SHARKOON Technologies GmbH 2.4GHz Wireless rechargeable vertical mouse [More&Better]
Bus 001 Device 003: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 001 Device 002: ID 2a7a:9a18 CASUE CASUE USB Keyboard
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

在我的情况下,设备 002 和 004。然后在其中创建一个文件/lib/systemd/system-sleep/并使其可执行。
我的内容如下:

#!/bin/bash
case "$1" in
    post)
    echo  "2a7a:9a18" > /sys/bus/pci/drivers/ohci-pci/unbind
    echo  "2a7a:9a18" > /sys/bus/pci/drivers/ohci-pci/bind
    echo  "1ea7:0064" > /sys/bus/pci/drivers/ohci-pci/unbind
    echo  "1ea7:0064" > /sys/bus/pci/drivers/ohci-pci/bind
    ;;
esac

现在,鼠标和键盘在唤醒后可以再次工作。

答案4

我最近遇到了同样的问题。我的解决方案是

echo "1" > /sys/bus/pci/devices/0000:05:00.0/reset

echo "1" > /sys/bus/pci/devices/0000:05:00.0/remove

echo 1 >/sys/bus/pci/rescan

您可以进入/sys/bus/pci/devices获取设备列表

使用lspci -s获取哪个设备的代码

在我的例子中,我的代码‘lspci -s 05:00.0’给出了结果“USB 控制器:ASMedia Technology Inc. ASM1042 SuperSpeed USB 主机控制器”

所以我知道这是我需要重置的 USB 设备,重置后,我可以重新连接我的 USB 设备而无需重新启动。

相关内容