蓝牙鼠标的轮询率不稳定

蓝牙鼠标的轮询率不稳定

我使用的是 Ubuntu 18.04,最近通过蓝牙连接的 Logitech MX Master 开始变得非常抖动。以下是 evhz 输出的摘录:(https://gitlab.com/iankelling/evhz

MX Master: Latest  1000Hz, Average   483Hz
ST LIS3LV02DL Accelerometer: Latest    11Hz, Average    13Hz
MX Master: Latest    20Hz, Average   496Hz
MX Master: Latest  1000Hz, Average   485Hz
ST LIS3LV02DL Accelerometer: Latest    13Hz, Average    13Hz
MX Master: Latest    20Hz, Average   497Hz
MX Master: Latest  1000Hz, Average   486Hz
MX Master: Latest    20Hz, Average   498Hz
MX Master: Latest  1000Hz, Average   487Hz
ST LIS3LV02DL Accelerometer: Latest    13Hz, Average    13Hz
MX Master: Latest    20Hz, Average   498Hz
MX Master: Latest  1000Hz, Average   488Hz
ST LIS3LV02DL Accelerometer: Latest    13Hz, Average    13Hz
MX Master: Latest    20Hz, Average   499Hz
MX Master: Latest  1000Hz, Average   489Hz
MX Master: Latest    20Hz, Average   499Hz
MX Master: Latest  1000Hz, Average   490Hz

cat /sys/module/usbhid/parameters/mousepoll输出 0,因此我尝试强制输入轮询率/etc/modules

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

-r usbhid
usbhid mousepoll=2

看来我做错了,因为cat /sys/module/usbhid/parameters/mousepoll仍然只输出 0。有人能建议我下一步该怎么做吗?谢谢!

答案1

移除usbhid模块不会禁用我的鼠标,因此不会影响蓝牙。一些线程(12) 提到设置/sys/kernel/debug/bluetooth/hci0/conn_max_intervalconn_min_intervalconn_latency应该有效,但对我来说它们不起作用。通过设置相同的参数hcitool确实有效。连接鼠标,并使用 hcitool 从蓝牙连接获取句柄:

# hcitool -i hci0 con
Connections:
    < LE 12:34:56:78:9A:BC handle 3585 state 1 lm MASTER AUTH ENCRYPT 

然后像上面一样设置最小值、最大值和延迟的低值:

hcitool lecup --handle 3585 --min=6 --max=7 --latency=0

hcitool 注意到最小值和最大值的因子是 1.25ms,因此这应该接受间隔为 7.5ms - 8.75ms 的轮询率。

由于设置仅适用于蓝牙连接,因此鼠标断开连接后解决方案立即停止工作,因此如果有人有更持久的解决方案,我很乐意听到!

相关内容