蓝牙鼠标

来自 Arch Linux 中文维基

本文介绍了对于蓝牙鼠标的配置和故障排除步骤,此处的配置基础建立在主要的 Bluetooth 一文中,并认为用户已经按照该文章进行了任何安装,配置或故障排除。

配置[编辑 | 编辑源代码]

苹果妙控鼠标——滚动速度[编辑 | 编辑源代码]

如果觉得鼠标滚动速度太慢,可以尝试

# modprobe -r hid_magicmouse
# modprobe hid_magicmouse scroll_acceleration=1 scroll_speed=55

滚动速度值设置范围为 0 到 63。

如果速度设定符合要求,可以编辑 /etc/modprobe.d/ 使其永久生效

/etc/modprobe.d/hid_magicmouse.conf
options hid_magicmouse scroll_acceleration=1 scroll_speed=55

苹果妙控鼠标——中键点击[编辑 | 编辑源代码]

如果觉得中键点击太繁琐,可以通过以下方式禁用

# modprobe -r hid_magicmouse
# modprobe hid_magicmouse emulate_3button=0

如果这样设定符合要求,可以编辑 /etc/modprobe.d/ 使其永久生效

/etc/modprobe.d/hid_magicmouse.conf
options hid_magicmouse emulate_3button=0

双系统鼠标配对问题[编辑 | 编辑源代码]

如果使用 Windows 和 Linux 双系统,可能会遇到不得不反复重新配对蓝牙鼠标的问题。这在每次切换系统时都会发生,因为配对设备时,蓝牙服务都会生成一组唯一的配对密钥。而核心原因就在于两个操作系统之间无法共享配对密钥。

首先,计算机保存蓝牙设备的 MAC 地址和配对密钥;然后,蓝牙设备保存计算机的 MAC 地址和配对密钥。这两步通常不会有问题,不过设备蓝牙端口的 MAC 地址在 Linux 和 Windows 上都是相同的 (这在硬件层面上就设定好了)。然而,当在 Windows 或 Linux 中重新配对设备时,它会生成一个新密钥,覆盖了蓝牙设备之前保存的密钥,即与 Windows 配对产生的密钥会覆盖原先与 Linux 配对的密钥,反之亦然。

要解决此问题,请按照 StackExchange 上的这个帖子里的说明进行操作。

如果使用了低功耗蓝牙设备 (Bluetooth LE device),请使用这个 Python 脚本, 这个脚本已经根据原脚本进行了轻微改动以适配 Arch Linux,可以在 [1] 找到最初的讨论记录。

故障排除[编辑 | 编辑源代码]

鼠标滞后[编辑 | 编辑源代码]

如果遇到鼠标反应滞后,可以尝试提高轮询速率。请查阅 Mouse polling rate 获取更多信息。

可以尝试在 BlueZ 中设置鼠标的最小/最大延迟 [2]:

/var/lib/bluetooth/<mac-of-your-adapter>/<mac-of-your-mouse>/info 中添加或修改以下部分 (相应路径请灵活变通):

[ConnectionParameters]
MinInterval=6
MaxInterval=9
Latency=44
Timeout=216

同时,可以使用 hcitool (属于 bluez-utils-compatAUR 软件包) 更改设备的延迟参数:

# HANDLE="$(hcitool con | grep '<Bluetooth Mouse mac address>' | awk '{print $5}')"  # get the device handle
# hcitool lecup --handle $HANDLE --latency 0 --min 6 --max 8

请注意,此方法仅对当前连接有效,如果鼠标断开连接,则需要再次执行。 或者,可以通过 debugfs 更改默认延迟设置。参见 /sys/kernel/debug/bluetooth/hci0/conn_{latency,{min,max}_interval}。

这个示例能解决滞后问题,但是必须取消配对并重新配对一次鼠标:

# echo 0 > /sys/kernel/debug/bluetooth/hci0/conn_latency
# echo 6 > /sys/kernel/debug/bluetooth/hci0/conn_min_interval
# echo 7 > /sys/kernel/debug/bluetooth/hci0/conn_max_interval

USB 软件狗(USB dongle)的问题[编辑 | 编辑源代码]

如果使用 USB 软件狗时遇到问题,可能需要尝试:

# modprobe -v rfcomm

此时,使用下列命令应该可看到一个 hci0 设备:

# hcitool dev

有时设备不会立即激活,可以尝试使用以下命令启动接口:

# hciconfig hci0 up

并搜索如上所示的设备。

鼠标总是连不上[编辑 | 编辑源代码]

如果鼠标没反应,但在重新启动蓝牙后又可以工作,则可能需要为选中的设备停用 USB 自动挂起

这个问题还可能由设备超时时间和 HID 设置引起,请参见 #Thinkpad 蓝牙激光鼠标相关问题

如果使用罗技(Logitech)的设备,可以按照以下步骤解决此问题: #罗技低功耗蓝牙鼠标的问题 (M557、M590、M720 和 anywhere mouse 2 等)

Thinkpad 蓝牙激光鼠标相关问题[编辑 | 编辑源代码]

如果遇到 Thinkpad 蓝牙激光鼠标连接速度太快,并每隔几秒钟再次断开连接(特别是当移动鼠标或按下按钮时),请记得尝试配对码 0000 (而非不使用任何配对码)。

如果执行以上操作后发现不起作用,则问题可能是由设备超时时间设置不当引起的。编辑/创建文件 /etc/bluetooth/input.conf 并应用以下更改:

# Configuration file for the input service
# This section contains options which are not specific to any
# particular interface
[General]

# Set idle timeout (in minutes) before the connection will
# be disconnect (defaults to 0 for no timeout)
IdleTimeout=0

#Enable HID protocol handling in userspace input profile
#Defaults to false(hidp handled in hidp kernel module)
UserspaceHID=true

这些更改将防止设备超时以保持连接状态,第二个设置将启用对蓝牙设备的用户空间 HID 处理,您需要重新启动 bluetooth.service 以测试更改,有时您可能还需要重新启动并重新配对设备。

肯辛通专业无线轨迹球鼠标的问题[编辑 | 编辑源代码]

肯辛通专业无线轨迹球鼠标 (Kensington Expert Wireless Trackball) 的默认轮询速率在 200ms 范围内,这使得操作不太灵敏。要解决这个问题,请按上文提及的那样在 /var/lib/bluetooth/mac-of-your-adapter/mac-of-your-mouse/info 中添加或修改 [ConnectionParameters] 部分 (根据鼠标蓝牙地址调整路径),尤其要将延迟 (latency) 数值降低到很小,甚至到 0

罗技低功耗蓝牙鼠标的问题 (M557、M590、M720 和 anywhere mouse 2 等)[编辑 | 编辑源代码]

在某些情况下,鼠标会配对但在使用时不会移动。 该设备应当被添加为可信任且不受阻止。 首先,打开一个终端并运行 bluetoothctl

  1. 关闭蓝牙:
    [bluetooth] # power off
  2. 打开蓝牙, 如果需要的话,启用配对法:
    [bluetooth] # power on
  3. 列出可用蓝牙设备,需要复制鼠标的设备ID XX:XX:XX:XX:XX:XX
    [bluetooth] # scan on
  4. 如果已经配对成功了的话,需要先取消配对:
    [bluetooth] # remove XX:XX:XX:XX:XX:XX
  5. 将鼠标启动到配对模式(通常是通过长按某个按钮或某些组合键),它将被你的电脑扫描检测到并显示。 请注意:设备ID可能已更改(略有更改),因此请复制最新的设备ID。
  6. 信任该设备:
    [bluetooth] # trust XX:XX:XX:XX:XX:XX
  7. 将鼠标与电脑配对:
    [bluetooth] # pair XX:XX:XX:XX:XX:XX
  8. 将电脑与鼠标连接:
    [bluetooth] # connect XX:XX:XX:XX:XX:XX
  9. 解除设备控制:
    [M585/M590] # unblock
  10. 重启蓝牙。

如果鼠标不能直接工作,请重启鼠标。

在某些情况下,可能还需要加载 uhid 内核模块。

内核 5.9+ 上所有 BLE 鼠标的问题[编辑 | 编辑源代码]

参见 Bluetooth#Problems with all BLE devices on kernel 5.9+

另见[编辑 | 编辑源代码]