蓝牙键盘
本文档介绍如何设置使用 Arch Linux 和 bluez 5 版本的 蓝牙 HID 键盘。
配对过程
请使用有线键盘或 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]#
在 `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
接下来,将此设备设置为受信任设备(这允许设备自行建立连接)。同样,蓝牙 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 应自动添加它。