如何禁用特定设备的usb-autosuspend?

这与此问题中讨论的问题有关 。 摘要:鼠标在使用电池时会冻结,因为它会在一段时间后自动悬浮,需要更长时间才能唤醒。 在powertop中禁用鼠标接收器的usb-autosuspend是一种临时解决方案,但不能在重启后继续存在。

如何仅为一个特定设备永久禁用usb autosuspend?

一个不涉及安装额外软件包的解决方案是首选(毕竟,我想禁用某些东西)但不是必需的。 删除powertop(这似乎是一些解决方案)不是我想要的 – 我喜欢poertop …并且安装laptop-mode-tools来禁用usb_autosuspend alltogether也不是我想要的,因此是新问题。

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

Ubuntu 16.04

 sudo apt install tlp sudo lsusb 

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

编辑文件sudo vi /etc/default/tlp并将设备的输入ID添加到USB_BLACKLIST ,方法是USB_BLACKLIST添加到设备的输入ID中,如下所示:

 USB_BLACKLIST="1234:5678" 

Ubuntu 14.04

正如hecticgeek.com所述,诀窍包括两部分:

使用lsusb确定要禁用自动挂起的USB设备的设备ID。
然后将它们添加到AUTOSUSPEND_USBID_BLACKLIST中的/etc/laptop-mode/conf.d/runtime-pm.conf直到Ubuntu 14.04)配置文件中(详细信息也在其中详细记录)。

您可以在/etc/laptop-mode/conf.d/usb-autosuspend.conf找到:

 # Enable USB autosuspend feature? # Set to 0 to disable CONTROL_USB_AUTOSUSPEND="auto" 

你应该把它改成CONTROL_USB_AUTOSUSPEND="0"

这将自动使任何USB设备在/sys/bus/usb/devices/"DEVICE ID"/power/control具有“on”值。 这将使autosuspend文件的值无效:

 $ cat /sys/bus/usb/devices/"DEVICE ID"/power/autosuspend 2 $ cat /sys/bus/usb/devices/"DEVICE ID"/power/autosuspend_delay_ms 2000 

我在Avocent KVM上有类似的问题,没有安装笔记本电脑模式工具(并且不想在任何情况下以这种方式解决)。 在我的情况下,自动停用KVM会使键盘和鼠标表现不正常(闲置几秒钟后,它们暂停并丢失输入数据一段时间,直到有足够的咔嗒声和震动将它们唤醒。)

当我运行powertop并为Avocent切换USB自动暂停时,powertop告诉我从命令行禁用它的命令是:

 echo 'on' > '/sys/bus/usb/devices/3-10/power/control' 

“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" 

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

 udevadm info -a --path /sys/bus/usb/devices/NN 

USB设备的电源选项位于/sys/bus/usb/devices/nn/power 。 不幸的是,对于给定的设备来说nn是需要一些调查才能找到的,所以我认为这将成为一个绊脚石,因为它有一个自动执行的脚本

 echo -1 > /sys/bus/usb/devices/3-2/power/autosuspend 

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

 udevadm info --export-db 

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

我创建了自己的udev规则:ACTION ==“add”,ATTR {idVendor} ==“0cf3”,ATTR {idProduct} ==“3004”,RUN =“/ bin / sh -c’echo 0> / sys / \ $ DEVPATH /授权’”

在Ubuntu 16.04LTS中,我在/etc/laptop-mode/conf.d/runtime-pm.conf找到了一个解决方案:

 # Auto-Suspend timeout in seconds # Number of seconds after which the USB devices should suspend AUTOSUSPEND_TIMEOUT=1800 

它最初为我设置为2 。 30分钟更合理。

sudo service laptop-mode restart

仍然不确定如何完全禁用它,但现在对我来说这很好。