在使用Ubuntu时,是否遇到过这样的困扰:蓝牙音响或耳机在Windows上可以轻松连接,但在Ubuntu的图形界面中却不断要求输入PIN码,而你又不知道这个PIN码是什么?这种问题通常源于Ubuntu的蓝牙管理器与某些设备间的兼容性问题,或是配对协商过程出现了异常。
本文将介绍如何通过命令行工具bluetoothctl进行强制配对,绕过图形界面的限制,解决那些顽固的蓝牙连接问题。
一、bluetoothctl简介
bluetoothctl是BlueZ蓝牙协议栈提供的官方命令行工具,其提供了更底层的控制能力,可以:
- 手动控制配对过程
- 查看详细的调试信息
- 绕过某些图形界面的限制
- 使用替代的配对方法
二、准备工作
- 确保蓝牙服务正常运行
bash
sudo systemctl status bluetooth
如果服务未运行,使用以下命令启动:
bash
sudo systemctl start bluetooth
sudo systemctl enable bluetooth # 设置开机自启
- 安装必要工具(如果尚未安装)
bash
sudo apt update
sudo apt install bluez bluez-tools
三、操作步骤
1. 启动bluetoothctl控制台
打开终端,输入:
bash
bluetoothctl
将看到提示符变为 [bluetooth]#,表示已进入蓝牙控制模式。
2. 启用代理并设置默认代理
在bluetoothctl控制台中依次输入:
bash
agent on
default-agent
agent负责处理配对过程中的认证请求,启用是配对的前提。
3. 打开蓝牙并启动扫描
bash
power on
scan on
scan on会开始搜索周围的蓝牙设备,你需要等待你的设备出现在列表中。
4. 识别并选择目标设备
扫描开始后,你将看到类似下面的输出:
bash
Device 00:11:22:33:44:55
记下设备地址(本例中的00:11:22:33:44:55)。
停止扫描以节省电力并减少干扰:
bash
scan off
步骤5:配对设备
使用设备的MAC地址进行配对:
bash
pair 00:11:22:33:44:55
步骤6:信任并连接设备
配对成功后,为了让系统自动连接此设备,需要将其标记为信任:
bash
trust 00:11:22:33:44:55
然后建立连接:
bash
connect 00:11:22:33:44:55
步骤7:退出并测试
bash
exit
退出bluetoothctl后,尝试播放音频,确认蓝牙设备正常工作。