跳转至内容

蓝牙键盘

来自 ArchWiki

本文档介绍如何设置使用 Arch Linux 和 bluez 5 版本的 蓝牙 HID 键盘。

配对过程

本文档或章节候选合并到 Bluetooth

注意:配对过程以及与之相关的一些故障排除内容与“蓝牙”页面上的通用设备设置重复,应合并到该页面。键盘特定的信息将保留在此页面上。(请在 Talk:Bluetooth#Merging general setup from Keyboard, Mouse, Headset pages 中讨论)

请使用有线键盘或 SSH 登录到受影响的计算机。

首先,请确保本地蓝牙控制器(例如,蓝牙加密狗或内置蓝牙无线电)已被识别。

# lsusb
Bus 001 Device 004: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp. LAN9500 Ethernet 10/100 Adapter / SMSC9512/9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

以上输出来自运行 archlinux-arm 的 Raspberry-Pi rev 'B' 型号以及 Keysonic 蓝牙加密狗。

三点需要记住

  • 蓝牙设备(键盘)和控制器(加密狗)需要配对一次。
  • 每次启动后都需要重新启动蓝牙控制器。
  • 每次启动后都需要让蓝牙控制器连接到键盘。

配对是一个一次性过程,只需要进行一次。市面上有些蓝牙键盘配有蓝牙加密狗,并且已经预先配对,但这并非总是如此。我们将使用来自 bluez-utils 的 `bluetoothctl` 命令来配对我们的加密狗和键盘。

启动可以通过 `bluetoothctl` 完成,或者在 `/etc/bluetooth/main.conf` 中自动完成,见下文。

连接也是如此,可以使用 `bluetoothctl` 或 `hcitool`,后者在脚本编写时更有用。

我们将使用 `bluetoothctl` 进行配对过程。运行该命令以进入 `[bluetooth]#` 提示符。

# bluetoothctl
[bluetooth]#
注意 如果您使用的是彩色控制台:在没有可用设备的情况下,“bluetooth”一词是默认颜色,一旦找到所需的设备和/或控制器,则变为蓝色。

在 `bluetoothctl` 中,启动控制器。

[bluetooth]# power on
Changing power on succeeded
[CHG] Controller 06:05:04:03:02:01 Powered: yes

接下来,告诉 `bluetoothctl` 只查找键盘,并将其设为默认代理。

[bluetooth]# agent KeyboardOnly
Agent registered
[bluetooth]# default-agent
Default agent request successful

接下来,将您的控制器(本地加密狗)置于可配对模式。

[bluetooth]# pairable on
Changing pairable on succeeded

接下来,将您的键盘置于活动模式,使其可发现,即可配对。有些键盘的底部有一个特殊按钮,或者需要按下特殊的按键组合才能实现。请参阅您键盘的文档。请注意,设备的可发现性是有时间限制的;有些设备只可见 30 秒,有些则可见 2 分钟。具体情况可能因设备而异。

接下来,让控制器扫描蓝牙频率以查找合适的设备。

[bluetooth]# scan on
Discovery started
[CHG] Controller 06:05:04:03:02:01 Discovering: yes

几秒钟后,键盘的地址应会列为已找到。该行会反复出现,但不会阻止您输入新命令。

接下来,实际进行配对。使用的地址是键盘的蓝牙 MAC 地址。

[bluetooth]# pair 01:02:03:04:05:06
Pairing successful
注意 有些键盘,例如 Microsoft Surface Ergonomic,会发送一个密码(例如 `[agent] Passkey: 501334`),您需要将其输入蓝牙键盘,然后按 `Enter` 键才能成功配对。使用 `paired-devices` 命令再次检查配对是否成功。

接下来,将此设备设置为受信任设备(这允许设备自行建立连接)。同样,蓝牙 MAC 地址是键盘设备的地址。

[bluetooth]# trust 01:02:03:04:05:06
Trusted 

最后,连接到设备(键盘)。同样,蓝牙 MAC 地址是键盘设备的地址。

[bluetooth]# connect 01:02:03:04:05:06
Connection successful

完成。退出 `bluetoothctl` 工具。

[bluetooth]# quit

现在,外部设备(即键盘)和 USB 蓝牙加密狗已永久配对,除非您有意解除配对。

故障排除

lsusb 未显示蓝牙控制器

手动加载通用蓝牙驱动程序。

# modprobe btusb

对于集成蓝牙控制器,有些控制器不是通过 USB 连接的,只能通过 `lspci` 显示。

bluetoothctl 中看不到蓝牙控制器

检查 `bluetooth.service` 的单元状态

如果 `[bluetooth]#` 提示符是蓝色的,并且在用 `power on` 启动控制器时收到 `No default controller available` 消息,请以 root 身份运行 `bluetoothctl`。

蓝牙键盘无法工作

从基本的故障排除步骤开始:设备是否有电;如果有,它是否已连接到蓝牙控制器?如果不是,请尝试使用其他控制器或您的智能手机来确认问题所在。

错误:hci0 ACL 包连接句柄未知 4

尝试使用 `hciconfig hci0 reset` 重置。

Alt 和 Super 键互换

有些键盘有独立的 macOS 和 Windows 模式。当键盘连接或模式更改时,可能会激活 Apple 模式。移除 `hid_apple` 内核模块并重新连接键盘。

# rmmod hid_apple

如果此方法有效,请将其列入黑名单以实现永久解决方案。

Xorg

设备应被添加为 `/dev/input/event*`,如果未禁用该功能,您的 Xorg 应自动添加它。