如何在 Linux 下降低 Logitech MX518 鼠标的轮询率?

如何在 Linux 下降低 Logitech MX518 鼠标的轮询率?

我正在运行 Arch Linux,我的鼠标(Logitech MX518 游戏鼠标)出现问题。我想降低它的轮询率。目前,它每 1 毫秒轮询一次,这会导致大多数应用程序中的 CPU 使用率更高,并且对于我的用例来说有点过头了。我通过分析输出确定轮询率为 1 毫秒cat /sys/kernel/debug/usb/devices

T:  Bus=02 Lev=04 Prnt=09 Port=02 Cnt=02 Dev#= 11 Spd=12   MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=046d ProdID=c08e Rev=40.00
S:  Manufacturer=Logitech
S:  Product=MX518 Gaming Mouse
S:  SerialNumber=0C6338513038
C:* #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr=300mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=02 Driver=usbhid
E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=1ms
I:* If#= 1 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbhid
E:  Ad=82(I) Atr=03(Int.) MxPS=  20 Ivl=1ms

具体来说,Ivl=1ms显示它每 ms 轮询一次,也使用evhz可以报告鼠标轮询速率的工具进行了验证。我已修改内核参数以设置固定鼠标轮询速率,方法是添加usbhid.mousepoll=8。事实上,重新启动后,似乎驱动程序参数设置正确:

$ systool -m usbhid -A mousepoll
Module = "usbhid"

    mousepoll           = "8"

之前,mousepoll 设置为0,表示“自动”,8应该表示每 8ms 轮询一次,这与我旧鼠标的轮询率相同。但是,鼠标仍然每 ms 轮询一次;evhz 显示轮询频率为 1000Hz,并且 的输出cat /sys/kernel/debug/usb/devices与以前相同。换句话说,设置内核参数没有任何效果。

我是不是漏掉了什么?如何降低鼠标的轮询率?

答案1

感谢Arch 论坛以获得以下答案。

我能够使用以下方法修改一些鼠标设置(特别是 DPI)派珀,这是 libratbag 的前端,支持 MX518。尽管 Piper 提供了修改轮询频率(500Hz 到 1000Hz 之间)的选项,但切换该设置不会产生任何效果。

最后,我不得不将鼠标连接到 Windows,并使用 Logitech 的软件将轮询频率更改为 125Hz。现在,在 Linux 下使用鼠标,evhz 也会报告鼠标的轮询频率为 125Hz。显然,其中一些设置直接存储在鼠标本身内部……

相关内容