蓝牙键盘

来自 ArchWiki

本文介绍如何在 Arch Linux 上设置 蓝牙 HID 键盘,使用 bluez 版本 5。

配对过程

本文或本章节是与 蓝牙 合并的候选对象。

注意: 配对过程以及一些相关的故障排除与蓝牙页面上的一般设备设置重复,应合并到那里。键盘相关的信息将保留在此页面上。(在 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

以上输出来自 Raspberry-Pi revision 'B',运行 archlinux-arm 和 Keysonic 蓝牙适配器。

三项值得记住的事项

  • 蓝牙设备(键盘)和控制器(适配器)需要配对一次。
  • 蓝牙控制器需要在每次启动后上电。
  • 蓝牙控制器需要在每次启动后被告知连接到键盘。

配对 是一个一次性过程,仅需一次。有些蓝牙键盘随附的蓝牙适配器已配对,但这不确定。我们将使用 bluez-utils 中的 bluetoothctl 命令来配对我们的适配器和键盘。

上电 可以使用 bluetoothctl 完成,也可以在 /etc/bluetooth/main.conf 中自动完成,请参见下文。

连接 也是如此,可以使用 bluetoothctlhcitool,后者对于脚本编写更有用。

我们将使用 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 应该会自动添加它。