最近我安装了 Ubuntu 18.04 并开始遇到一个奇怪的问题。当我进入睡眠/休眠模式时,我的三个 USB 端口中的两个停止工作。
如果我重新启动 Ubuntu,USB 端口将恢复到正常模式。
答案1
这个答案来自Unix 和 Linux Stack Exchange(这里稍微增强了一下)有一个解决方案。
编辑
/etc/default/grub
并找到包含 的行LINUX_DEFAULT
。将以下行从:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
到:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.autosuspend=-1"
保存文件,运行
sudo update-grub
,然后重新启动。使用后你会发现:
$ 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 设备而无需重新启动。