powertop --auto-tune 不要干扰USB和触摸板

我喜欢使用powertop --auto-tune,因为我的笔记本电脑的扬声器在不使用时会发出噪音,而powertop在不使用时完全禁用扬声器,停止了噪音。
然而,我的USB鼠标在不使用几秒钟后就被禁用了,再过几秒钟,触摸板的响应会有延迟(尽管在第一次延迟的几分之一秒后正常工作)。
我该如何解决这个问题,同时在没有音频输出时完全禁用扬声器?
3个回答

如果你手动运行powertop --auto-tune,你可以创建一个类似的脚本:
cat - > powertune.sh <<EOF
#!/bin/bash
powertop --auto-tune
HIDDEVICES=$(ls /sys/bus/usb/drivers/usbhid | grep -oE '^[0-9]+-[0-9\.]+' | sort -u)
for i in $HIDDEVICES; do
  echo -n "Enabling " | cat - /sys/bus/usb/devices/$i/product
  echo 'on' > /sys/bus/usb/devices/$i/power/control
done
EOF

脚本将运行powertop,然后使用人机界面设备驱动程序查看所有USB设备,并随后禁用它们的电源管理。因此,它应该能够抵抗在不同端口插入鼠标/键盘的情况。
您还可以将其与systemd服务结合使用,以便在启动时自动运行。

1非常好,谢谢。唯一的问题是,在这里使用cat不会产生预期的结果,因为它将硬编码替换当前正在使用的HID设备的值。为了保留动态设备选择,请手动将heredoc(在EOF之间的部分)的内容复制粘贴到文件中。 - Ivan Aksamentov - Drop
这太棒了(虽然我复制了脚本,而没有使用 cat EOF。我觉得在那个意义上简化答案是最好的。逻辑是完美的,终于不再有 powertop 的问题了! :) - WhyNotHugo
我对这个解决方案进行了一些变动,可以排除多个设备ID。请参考以下链接:https://gist.github.com/jdtimmerman/e2da93eaf751a6d1dd73fb683ad8767f - Joost
建议修复:将<<EOF更改为<<'EOF'可以解决问题 - undefined

尝试运行"sudo powertop"并切换到"Tunables"选项,那里会显示powertop可以调整的所有内容的列表。在该列表中的某个位置,会显示类似于"Autosuspend for USB device..."的内容。
列出的USB设备之一应该是您遇到问题的设备;尝试将其设置保持为"Bad",因为那是未修改的状态。
请查看powertop用户指南以获取更多信息和提示:https://01.org/sites/default/files/page/powertop_users_guide_201406.pdf

1谢谢!有没有一个命令可以禁用这个特定设备的省电模式?每次重新启动笔记本电脑都要这样做很不方便。如果不可能的话:有没有一个命令只为一个特定设备启用省电模式?我并不真正需要 powertop --auto-tune,而是只关心一个设备是否处于省电模式(以及我的鼠标是否处于省电模式)。 - UTF-8
谢谢你!多亏了你,我发现 powertop 可以显示它正在运行的行来手动设置某个功耗设定。这解决了我的问题。:) - UTF-8

请查看我的小项目,以创建一个shell脚本来自动应用powertop的“good”电源设置。
然后,您可以轻松编辑生成的脚本,注释掉任何给您带来麻烦的配置,并运行它,而不是使用sudo powertop --auto-tune

欢迎来到Ask Ubuntu!我建议你编辑这个答案,加入关于如何做到这一点的具体细节。(另请参阅如何撰写一个好答案?以获取有关在Ask Ubuntu上被认为最有价值的答案类型的一般建议。) - David Foerster