藍牙鼠標

出自 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+

另見[編輯 | 編輯原始碼]