Bluetooth mouse (简体中文)

From ArchWiki
Jump to navigation Jump to search
翻译状态:本文是 Bluetooth mouse翻译。上次翻译日期:2020-08-04。如果英文版本有所更改,则您可以帮助同步翻译。

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

配置

苹果妙控鼠标 —— 滚动速度

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

# rmmod 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

苹果妙控鼠标 —— 中键点击

如果觉得中键点击太让人挑剔,可以通过以下方式禁用

# rmmod 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,可以在 这里 找到最初的讨论记录。

故障排除

鼠标滞后

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

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

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

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

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

# 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 和 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 和 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. 重启蓝牙。

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

另见