在KDE的图形界面连接蓝牙设备非常的方便,图形化点点就行了。
图形化连接
基础
#安装
sudo pacman -S bluez bluez-utils
#开机启动
sudo systemctl enable bluetooth.service
#立即开启
sudo systemctl start bluetooth.service
蓝牙图形化管理工具安装
sudo pacman -S bluedevil
安装了以上内容后,在KDE的图形界面就可以连接蓝牙设备了。非常方便。
命令行连接
既然图形化的连接已经非常的方便了,那么为什么还在搞命令行的连接呢?我有苦衷啊,我用的i3wm直接调用KDE的设置中的蓝牙连接,怎么也连接不上。那也只能从命令行连接了。
参考wiki:https://wiki.archlinux.org/title/Bluetooth_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)
加载btusb内核模块
通用蓝牙驱动是 btusb 内核模块。检查 模块是否加载了。如果没有就先加载模块。
我这边是要手动加载的
modprobe btusb
每次开机要手动加载,太麻烦了。设置自动加载方法:
cd /etc/modules-load.d
nvim btusb.conf
文件内容如下:
btusb
自动加载内核模块参考:
https://wiki.archlinux.org/title/Kernel_module_%28%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%29#%E4%BD%BF%E7%94%A8systemd%E8%87%AA%E5%8A%A8%E5%8A%A0%E8%BD%BD%E6%A8%A1%E5%9D%97
bluetoothctl
因为上面图形化的连接方便,已经安装了一些包,所以我可以直接 使用以下命令了。如果你的电脑中没有以下命令请安装一下上面的一些包试试。
下面内容是直接复制wiki上的内容的。
运行 bluetoothctl
交互命令。输入 help
来获取帮助。
- (可选操作) 选择一个默认的蓝牙接收器
select MAC_address
. - 使用命令
power on
打开蓝牙,蓝牙默认是关闭的,并且重启之后默认也会关闭,参照 #开机后自动启动. - 使用命令
agent on
(推荐)选择要连接的设备类型或者去选择一个特定的类型: 如果你在agent
命令后按下两次tab键, 你应该看到一些可以使用的类型列表,比如DisplayOnly KeyboardDisplay NoInputNoOutput DisplayYesNo KeyboardOnly off on
. - 使用命令
default-agent
去确认并完成要连接的设备类型 - 使用命令
devices
去获得想要去配对的设备MAC地址 - 如果设备没有出现在上一步的列表中,使用命令
scan on
去搜索发现所有可配对的设备 - 使用命令
pair MAC_address
去配对设备(tab键可以自动补全MAC地址) - 如果配对设备不需要配对码(PIN), 那么你可能需要手动将给设备添加到信任列表,使用命令
trust MAC_address
- 使用命令
connect MAC_address
去确认最后的连接
以下为一个交互实例:
# bluetoothctl
[NEW] Controller 00:10:20:30:40:50 pi [default]
[bluetooth]# agent KeyboardOnly
Agent registered
[bluetooth]# default-agent
Default agent request successful
[bluetooth]# power on
Changing power on succeeded
[CHG] Controller 00:10:20:30:40:50 Powered: yes
[bluetooth]# scan on
Discovery started
[CHG] Controller 00:10:20:30:40:50 Discovering: yes
[NEW] Device 00:12:34:56:78:90 myLino
[CHG] Device 00:12:34:56:78:90 LegacyPairing: yes
[bluetooth]# pair 00:12:34:56:78:90
Attempting to pair with 00:12:34:56:78:90
[CHG] Device 00:12:34:56:78:90 Connected: yes
[CHG] Device 00:12:34:56:78:90 Connected: no
[CHG] Device 00:12:34:56:78:90 Connected: yes
Request PIN code
[agent] Enter PIN code: 1234
[CHG] Device 00:12:34:56:78:90 Paired: yes
Pairing successful
[CHG] Device 00:12:34:56:78:90 Connected: no
[bluetooth]# connect 00:12:34:56:78:90
Attempting to connect to 00:12:34:56:78:90
[CHG] Device 00:12:34:56:78:90 Connected: yes
Connection successful
我根据这个操作实例成功的连接了我的蓝牙设备了。有了 这个命令连接蓝牙键盘的经历,以为就算在命令行中,我也会连接蓝牙了。
以下是我实现录入命令,把关键的命令和结果显示出来,方便命令的复制
#进入蓝牙设备交互程序
bluetoothctl
#选择要连接的设备类型
agent KeyboardOnly
default-agent
#打开蓝牙,蓝牙默认是关闭的,并且重启之后默认也会关闭
power on
#扫描可以连接的蓝牙设备
scan on
#[CHG] Controller 8C:B8:7E:E7:2C:27 Discovering: yes
#[NEW] Device F4:73:35:40:04:F4 Keyboard K380
#连接上面搜到的蓝牙键盘的MAC地址,会有个提示输入PassKey按蓝牙键盘的相应按钮
pair F4:73:35:40:04:F4
#[agent] Passkey: 258038
#[CHG] Device F4:73:35:40:04:F4 Paired: yes
#Pairing successful
#配对成功以后,需要进行connect 连接后才可以正常连接蓝牙设备
connect F4:73:35:40:04:F4
#[CHG] Device F4:73:35:40:04:F4 Connected: yes
#Connection successful
信任设备
以上操作完成以后,发现每次蓝牙断开重新连接,就会有一个提示信息。如果不确认设备就无法正常连接。这对于蓝牙键盘很不方便。询问信息如下:
[CHG] Device F4:73:35:40:04:F4 Connected: yes
Authorize service
[agent] Authorize service 00001124-0000-1000-8000-00805f9b34fb (yes/no): yes
后来根据测试,是因为设备没有被信任导致的。
trust 设备MAC地址
trust F4:73:35:40:04:F4
查询设备信息
info F4:73:35:40:04:F4
设置开机后自动启动
蓝牙在重启后默认不会自动启动。你只需要将 AutoEnable=true 添加在 /etc/bluetooth/main.conf 底部的 [Policy] 下面:
nvim /etc/bluetooth/main.conf
内容如下:
[Policy]
AutoEnable=true
删除重新连接
因为我是windows和Linux双系统,平时大多时间在linux中使用蓝牙键盘。但是偶尔在windows连接过蓝牙键盘后,就会发现回到linux时,蓝牙键盘已经无法连接了。
我的目前解决办法比较愚笨一些。就是把设备删除了重新连接。至少能解决问题,更好的解决办法以后有空在尝试吧。
#删除已经配对的蓝牙设备
remove F4:73:35:40:04:F4
#重新配对方法与之前一致,我也写一下方便我以后直接复制。
pair F4:73:35:40:04:F4
connect F4:73:35:40:04:F4
trust F4:73:35:40:04:F4
以上删除重新连接,有时会遇到怎么也配对不上的问题。这样的问题,我的解决办法:
- 尝试关闭键盘,重新开启键盘。
- 尝试切换其他的连接端(比较我的K380可以同时连接3个设备,切成别的试试)
经过折腾彻底解决了,蓝牙键盘多系统中切换的问题。
《windows11 + linux 蓝牙连接问题》 https://blog.csdn.net/lxyoucan/article/details/125594711
总结
完成以上操作,终于可以开机自动启动并自动连接蓝牙键盘啦。这下方便了不少。
这么折腾的主要原因是我这台笔记本电脑自带的键盘目前没找到驱动的方法。每次只能先用鼠标点软键盘onboard
然后连接蓝牙键盘。
一劳永逸,舒服。
参考
https://wiki.archlinux.org/title/Bluetooth_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)
https://wiki.gentoo.org/wiki/Bluetooth