情况
我有一台联想 Legion M600 鼠标,它通过 USB-C 电缆和系统上特定供应商的无线 USB 接收器正常工作。但是,我无法通过蓝牙让鼠标工作。我的操作系统是 Arch Linux,它不受官方支持。
问题
蓝牙似乎工作正常(配对 + 连接),但我没有收到任何鼠标输入数据,例如鼠标移动和按钮点击。我在另一台设备上测试过,这款蓝牙鼠标在那里工作正常(Android 手机)。
我尝试过
按住底部的按钮几秒钟后,LED 开始指示它处于配对模式,之后我成功配对。蓝牙配对和连接工作正常。请参阅下面的输出(来自bluetoothctl
):
Device **:**:**:**:**:** (public)
Name: Legion M600 Mouse
Alias: Legion M600 Mouse
Appearance: 0x03c2
Icon: input-mouse
Paired: yes
Trusted: yes
Blocked: no
Connected: yes
WakeAllowed: yes
LegacyPairing: no
UUID: Generic Access Profile (00001800-0000-1000-8000-00805f9b34fb)
UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
UUID: Device Information (0000180a-0000-1000-8000-00805f9b34fb)
UUID: Battery Service (0000180f-0000-1000-8000-00805f9b34fb)
UUID: Human Interface Device (00001812-0000-1000-8000-00805f9b34fb)
Battery Percentage: 0x5f (95)
我的蓝牙适配器是 ( lsusb
):
Bus 001 Device 005: ID 8087:0029 Intel Corp. AX200 Bluetooth
连接后,新设备显示在此处:/sys/class/bluetooth/hci0:[some identifier for the mouse]/
。此外,新的 hidraw 设备添加到:/dev/hidrawX
。但cat -A /dev/hidrawX
没有显示任何输出。还可以看到一个额外的鼠标设备,这似乎是正确的(摘自ls -la /dev/input/by-id/
):
lrwxrwxrwx 1 root root 10 Jan 5 19:22 usb-Lenovo_Lenovo_Legion_M600_Wireless_Gaming_Mouse-event-if00 -> ../event20
lrwxrwxrwx 1 root root 10 Jan 5 19:22 usb-Lenovo_Lenovo_Legion_M600_Wireless_Gaming_Mouse-event-mouse -> ../event17
lrwxrwxrwx 1 root root 10 Jan 5 19:22 usb-Lenovo_Lenovo_Legion_M600_Wireless_Gaming_Mouse-if01-event-kbd -> ../event21
lrwxrwxrwx 1 root root 9 Jan 5 19:22 usb-Lenovo_Lenovo_Legion_M600_Wireless_Gaming_Mouse-mouse -> ../mouse0
内核日志给了我这个(dmesg -k
):
input: Legion M600 Mouse as /devices/virtual/misc/uhid/0005:17EF:60E7.000B/input/input28
hid-generic 0005:17EF:60E7.000B: input,hidraw0: BLUETOOTH HID v1.00 Mouse [Legion M600 Mouse] on **:**:**:**:**:**
这是唯一连接的蓝牙设备,但我也在键盘上尝试过蓝牙,它确实工作正常(开箱即用)。
我很难找到问题所在。我已将它与我的 Android 手机配对,我可以使用它来控制 Android 上的光标,并像使用鼠标一样进行交互。所以问题一定出在我这边的某个地方,鼠标及其固件显然没有问题。
我正在使用最新版本的 Arch Linux(uname -a
):
Linux localhost 5.15.12-arch1-1 #1 SMP PREEMPT Wed, 29 Dec 2021 12:04:56 +0000 x86_64 GNU/Linux
内核中加载的驱动程序有(lsmod | grep -E 'bt|blu|hid|hci|usb'
):
uhid 20480 1
hidp 32768 1
btusb 65536 0
btrtl 28672 1 btusb
btbcm 24576 1 btusb
hid_apple 20480 0
btintel 45056 1 btusb
bluetooth 749568 33 btrtl,hidp,btintel,btbcm,bnep,btusb
usbhid 73728 0
ecdh_generic 16384 2 bluetooth
usb_storage 81920 1 uas
rfkill 32768 8 bluetooth,cfg80211
mac_hid 16384 0
crc16 16384 2 bluetooth,ext4
xhci_pci 20480 0
xhci_pci_renesas 24576 1 xhci_pci
我还检查了 Xorg 服务器是否存在鼠标(xinput | grep M600
):
⎜ ↳ Lenovo Lenovo Legion M600 Wireless Gaming Mouse Consumer Control id=12 [slave pointer (2)]
⎜ ↳ Lenovo Lenovo Legion M600 Wireless Gaming Mouse id=14 [slave pointer (2)]
⎜ ↳ Legion M600 Mouse id=19 [slave pointer (2)]
↳ Lenovo Lenovo Legion M600 Wireless Gaming Mouse Consumer Control id=13 [slave keyboard (3)]
↳ Lenovo Lenovo Legion M600 Wireless Gaming Mouse id=16 [slave keyboard (3)]
一切似乎都很好,除了当我用鼠标移动时光标真的没有移动。单击按钮也不起作用。我尝试修复、重新连接、从 /var 等中删除所有与蓝牙相关的文件,并重新安装蓝牙软件。从存储库安装了额外的蓝牙和 xorg-driver 包。我在这里没有主意了,有人有线索吗?
答案1
答案2
看来 BlueZ 需要进行一些更改才能支持我们的鼠标。
我问在 linux-bluetooth 邮件列表中,作为回应,请求使用 btmon 的 HCI 日志。
btmon
显示来自鼠标的事件,我想这是一个好兆头。