如何禁用特定设备的 USB 自动挂起?

bla*_*dog 23 usb power-management powertop

这与无线鼠标在电池供电时暂时冻结(睡眠)中讨论的问题有关。

总结:鼠标在使用电池时会冻结,因为它会在一段时间后自动暂停并且需要更多时间来唤醒。

PowerTOP 中禁用鼠标接收器的 USB 自动挂起是一种临时解决方案,但它不会在重新启动后继续存在。

如何仅对一台特定设备永久禁用 USB 自动挂起?

不涉及安装额外包的解决方案是首选(毕竟,我想禁用某些东西),但这不是必需的。删除 PowerTOP(这似乎是某些人的解决方案)不是我想要的 - 我喜欢 PowerTOP ...

安装laptop-mode-tools以完全禁用 USB 自动挂起也不是我想要的,因此是新问题。

另外:这会影响我笔记本的电池吗?用于鼠标的罗技统一接收器始终保持连接状态,因此如果这可以防止所有设备发生自动挂起,那可能会很糟糕。

小智 29

Ubuntu 16.04 (Xenial Xerus)

sudo apt install tlp
sudo lsusb
Run Code Online (Sandbox Code Playgroud)

找到 USB 设备的输入 ID - 它应该看起来像1234:5678.

编辑文件sudo vi /etc/default/tlpUSB_BLACKLIST通过添加以下行和设备的输入 ID 来添加设备的输入 ID,如下所示:

USB_BLACKLIST="1234:5678"
Run Code Online (Sandbox Code Playgroud)

Ubuntu 14.04(可信赖的 Tahr)

正如在 hecticgeek.com 上提到的,这个技巧由两部分组成:

使用lsusb以确定您想为禁用autosuspend USB设备的设备ID。

然后将它们加入到AUTOSUSPEND_USBID_BLACKLIST/etc/laptop-mode/conf.d/runtime-pm.confusb-autosuspend.conf直到Ubuntu的14.04)配置文件(详细情况以及在有记录的为好)。

  • 带有 Ubuntu 16.04 LTS 的戴尔 Ubuntu 笔记本电脑安装了 `tlp` 而不是 `laptop-mode-tools`,所以如果你想将这些笔记本电脑上的 USB 设备列入自动挂起模式黑名单,请在文件中设置 `USB_BLACKLIST` 设置/etc/default/tlp` - 更改立即发生 (2认同)

Bry*_*yce 12

我在Avocent KVM上的 PC 上遇到了类似的问题,其中未安装笔记本电脑模式工具(并且无论如何都不想以这种方式解决它)。就我而言,自动挂起 KVM 会使键盘和鼠标行为不正常(闲置几秒钟后,它们会挂起并丢失输入数据一段时间,直到足够多的点击和摇晃将它们唤醒)。

当我运行PowerTOP并关闭 Avocent 的 USB 自动挂起时,PowerTOP 告诉我从命令行禁用它的命令是:

echo 'on' > '/sys/bus/usb/devices/3-10/power/control'
Run Code Online (Sandbox Code Playgroud)

'3-10' 位在不同系统上会有所不同。除了运行 PowerTOP 之外,我不确定如何确定它,但可能有某种方法。

相反,我使用了udev规则来匹配我设备的产品 ID:

trent+14.04:/etc/udev/rules.d$ cat 10-usb-avocent-kvm-pm.rules

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0624", ATTR{idProduct}=="0013", ATTR{product}=="SC Secure KVM", TEST=="power/control", ATTR{power/control}:="on"
Run Code Online (Sandbox Code Playgroud)

为了获得正确的 udev 信息,我运行了:

udevadm info -a --path /sys/bus/usb/devices/N-N
Run Code Online (Sandbox Code Playgroud)

  • 这个答案帮助我阻止了 USB 自动挂起导致我的罗技网络摄像头让我在 Skype 上听起来像个花栗鼠。这是在桌面上安装“laptop-mode-tools”是不合适的。然而,我无法让 udev 在启动时写入 `power/control`,但能够通过将自动挂起延迟设置为 -1 来完成同样的事情:`SUBSYSTEM=="usb", ACTION=="添加", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="0809", TEST=="power/autosuspend", ATTR{power/autosuspend}:="-1"` (2认同)

小智 6

/etc/laptop-mode/conf.d/usb-autosuspend.conf你会发现:

# Enable USB autosuspend feature?
# Set to 0 to disable
CONTROL_USB_AUTOSUSPEND="auto"
Run Code Online (Sandbox Code Playgroud)

您应该将其更改为CONTROL_USB_AUTOSUSPEND="0".

这将自动使任何 USB 设备在/sys/bus/usb/devices/"DEVICE ID"/power/control. 这将使自动挂起文件的值处于非活动状态:

$ cat /sys/bus/usb/devices/"DEVICE ID"/power/autosuspend
2
$ cat /sys/bus/usb/devices/"DEVICE ID"/power/autosuspend_delay_ms
2000
Run Code Online (Sandbox Code Playgroud)


小智 5

USB 设备的电源选项位于/sys/bus/usb/devices/n-n/power. 不幸的是,对于给定设备的 nn 是什么需要一些调查才能找出,所以我认为这将成为拥有自动执行脚本的绊脚石

echo -1 > /sys/bus/usb/devices/3-2/power/autosuspend
Run Code Online (Sandbox Code Playgroud)

关闭该设备上的自动挂起。神奇的 nn 确实出现在输出中

udevadm info --export-db
Run Code Online (Sandbox Code Playgroud)

所以我认为 udev 会成为你的朋友;某种 udev 脚本键入识别您的鼠标的参数,然后运行一个将 -1 回显到相关文件中的脚本。

  • 这会在重新启动后幸免于难吗?回显到 /sys 似乎是非永久性的,不是吗? (4认同)
  • 将命令放在 /etc/rc.local 的“exit 0”行之前 (2认同)