联想 Legion M600 无线蓝牙鼠标已连接并配对但无法在 Arch Linux 上使用

联想 Legion M600 无线蓝牙鼠标已连接并配对但无法在 Arch Linux 上使用

情况

我有一台联想 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

我在使用 BlueZ 5.53 版本时遇到了同样的问题,将 BlueZ 更新到最新版本(撰写本文时为 5.65)后问题得到了解决。

这个问题在这里

您可以使用以下方式检查您的版本:

bluetoothctl --version

您可以克隆 repo 并按照提供的步骤进行操作这里来更新它。

答案2

看来 BlueZ 需要进行一些更改才能支持我们的鼠标。
在 linux-bluetooth 邮件列表中,作为回应,请求使用 btmon 的 HCI 日志。
btmon显示来自鼠标的事件,我想这是一个好兆头。

相关内容