蓝牙键盘
本文介绍如何在 Arch Linux 上设置 蓝牙 HID 键盘,使用 bluez 版本 5。
配对过程
通过有线键盘或 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
中自动完成,请参见下文。
连接 也是如此,可以使用 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
[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 应该会自动添加它。