linux命令行连接蓝牙键盘

在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 来获取帮助。

  1. (可选操作) 选择一个默认的蓝牙接收器select MAC_address.
  2. 使用命令 power on 打开蓝牙,蓝牙默认是关闭的,并且重启之后默认也会关闭,参照 #开机后自动启动.
  3. 使用命令 agent on (推荐)选择要连接的设备类型或者去选择一个特定的类型: 如果你在 agent 命令后按下两次tab键, 你应该看到一些可以使用的类型列表,比如 DisplayOnly KeyboardDisplay NoInputNoOutput DisplayYesNo KeyboardOnly off on.
  4. 使用命令 default-agent 去确认并完成要连接的设备类型
  5. 使用命令 devices 去获得想要去配对的设备MAC地址
  6. 如果设备没有出现在上一步的列表中,使用命令 scan on 去搜索发现所有可配对的设备
  7. 使用命令 pair MAC_address 去配对设备(tab键可以自动补全MAC地址)
  8. 如果配对设备不需要配对码(PIN), 那么你可能需要手动将给设备添加到信任列表,使用命令 trust MAC_address
  9. 使用命令 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

总结

完成以上操作,终于可以开机自动启动并自动连接蓝牙键盘啦。这下方便了不少。

这么折腾的主要原因是我这台笔记本电脑自带的键盘目前没找到驱动的方法。每次只能先用鼠标点软键盘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

猜你喜欢

转载自blog.csdn.net/lxyoucan/article/details/124705648