如何更改蓝牙鼠标的蓝牙超时设置

gxc*_*ode 4 mouse bluetooth power-management

我有一台 Logitech MX Master 3,正在与 Ubuntu 20.04.1 LTS(内核 5.4.0-58-generic)一起使用。如果鼠标闲置一段时间(少于 30 秒,尽管我没有精确计时),它似乎会进入低功耗状态,并且仅在运动几秒钟后才恢复正常操作。当您让鼠标闲置一段不合理的短时间后移动鼠标时,这会产生非常烦人的视觉“故障”。

我在 Windows 10 上使用不同的笔记本电脑(但使用相同的鼠标)时遇到了这个确切的问题。在 Windows 上,修复方法是使用设备管理器禁用允许蓝牙控制器进入睡眠状态以节省电量的设置。我现在尝试在 Ubuntu 上做同样的事情,到目前为止还没有运气。

这个 reddit 线程中我了解到“超时”设置/var/lib/bluetooth/{BT MAC]/{mouse MAC}/info可能有用。在我的系统上配置如下:

[ConnectionParameters]
MinInterval=6
MaxInterval=9
Latency=44
Timeout=216
Run Code Online (Sandbox Code Playgroud)

我尝试将超时设置为一个较大的值(10000),也尝试将其设置为零。更改值后,我运行:

bluetoothctl power off
bluetoothctl power on
Run Code Online (Sandbox Code Playgroud)

我观察到没有效果。然后我尝试更改值并运行:

sudo systemctl restart bluetooth
Run Code Online (Sandbox Code Playgroud)

这具有将值设置回默认值的效果216。通过一些随机的谷歌搜索,我偶然发现了这个线程,这似乎意味着hcitool lecup可能能够设置该值,所以我尝试了:

sudo hcitool lecup --handle 3585 --timeout 0
Run Code Online (Sandbox Code Playgroud)

其中3585是我的鼠标手柄。这只会产生Could not change connection params: Input/output error(5).

bluetoothctl我不是一个深入的 Linux 专家,并且不可否认,我不熟悉、蓝牙服务和 之间的关系hcitool。我想知道的是:

  1. 如何使/var/lib/bluetooth/{BT MAC]/{mouse MAC}/info文件更改生效以便我可以测试不同的值?
  2. 也许我找错了树 - 有没有更简单的方法来禁用蓝牙“睡眠”功能?

小智 10

您面临的问题与蓝牙超时无关,而更可能与内核内置的 USB 自动挂起功能有关。

我正在运行 Arch,并且有一个 Mx master 3,我也遇到了与您所描述的类似的问题。

这就是我修复它的方法:

  1. 运行命令找出你的蓝牙模块的ID
$ lsusb -vt

Bus 07.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/4p, 12M
    ID 1d6b:0001 Linux Foundation 1.1 root hub
    |__ Port 3: Dev 2, If 0, Class=Wireless, Driver=btusb, 12M
        ID 8087:0a2a Intel Corp. Bluetooth wireless interface
    |__ Port 3: Dev 2, If 1, Class=Wireless, Driver=btusb, 12M
        ID 8087:0a2a Intel Corp. Bluetooth wireless interface

Run Code Online (Sandbox Code Playgroud)

我的蓝牙模块的id是8087:0a2a

  1. 创建 udev 规则以禁用模块的自动挂起。

编辑/创建以下文件 /etc/udev/rules.d/50-usb_power_save.rules

并添加这一行

$ lsusb -vt

Bus 07.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/4p, 12M
    ID 1d6b:0001 Linux Foundation 1.1 root hub
    |__ Port 3: Dev 2, If 0, Class=Wireless, Driver=btusb, 12M
        ID 8087:0a2a Intel Corp. Bluetooth wireless interface
    |__ Port 3: Dev 2, If 1, Class=Wireless, Driver=btusb, 12M
        ID 8087:0a2a Intel Corp. Bluetooth wireless interface

Run Code Online (Sandbox Code Playgroud)

重新启动您的电脑后,延迟就会消失。

我使用以下链接作为参考。

https://wiki.archlinux.org/title/Power_management#USB_autosuspend

https://fueledonbacon.com/popos-bluetooth-autosuspend-problem/