前言

这篇博客的起因是我想连接下蓝牙耳机听下网上的课程。


一、一键搞不定?

鉴于我是个小白,所以我一开始采用的是最Low的方式对蓝牙耳机进行连接,即使用左上角的蓝牙设置,然而它就一直转啊转啊,丝毫不理会我的感受。

二、失败的摸索过程

1.安装blueman

一开始毫无反应后,我搜索了一下,网上基本都在说可以安装Blueman来管理蓝牙设备更好,于是我根据下面的指令安装了Blueman。

sudo apt install blueman
./blueman

安装blueman后通过blueman我先后尝试了连接我的蓝牙耳机和蓝牙手环,结果发现手环成功连接上了,但是没有任何声音,而耳机则毫无反应。

2.安装pavucontrol

由于手环没有任何声音,而且声音设置里没有我的手环。于是我又进行了搜索,找到了教程说可以通过安装pavucontrol来进行控制输出设备。

sudo apt install pavucontrol
pavucontrol

然而打开之后虽然好像有那么回事,但无论是怎么设置,还是没有看到我的手环。重启也没有什么帮助。

3.重启蓝牙服务

折腾了一通后不知道哪里有问题,本来连接上的手环直接不能连接了,本来配对时会弹出的是否同意也直接不弹出了,每次一配对就一闪而过,然后就系统报错,并且显示配对失败。

sudo service bluetooth start
bluetoothctl

然后输入下面的指令

power on 
agent on 
default-agent 
scan on 
pair yourDeviceMAC

这时其实我已经比较接近答案了,但是我尝试后还是不行,总是报错Failed to pair: org.bluez.Error.InProgress

4.安装pulseaudio-module-bluetooth

检索上面的错误,我搜索到了新方法

sudo apt install pulseaudio-module-bluetooth 
pulseaudio -k
pulseaudio --start
sudo pactl load-module module-bluetooth-discover

结果提示:失败。模块初始化失败

5.修改配置文件

头疼但是还是想着继续的我继续搜索,发现了一个修改配置文件的方法

sudo gedit  /etc/pulse/default.pa
sudo gedit /usr/bin/start-pulseaudio-x11

具体可见:修改配置文件
修改完没有任何变化,至此我已经开始有点崩溃了,其实这个过程是分两天来做的,不然更无语。

三、梳理后重新开始

认真梳理了下,我把上面步骤中修改的配置文件还原了,然后安装的库我把pavucontrol删掉了,留下blueman和pulseaudio-module-bluetooth的原因是提到它们两个的教程太多了,我想再试下,另外blueman的确比自带的好用,至少有提示。。。

1.找到胜利的曙光

忽略又是半个多小时的资料搜索,我找到了一份在命令行下进行蓝牙连接的教程(在文章的最后)。我也思考了一下,因为我后面一直无法配对和连接的最大问题是是否配对的询问弹不出来,因此我也觉得在命令行下会更靠谱一些,一番尝试之后终于成功了!右上角的blueman也亮了起来。流程如下:

bluetoothctl

然后进到蓝牙方面的界面,依次输入下面的指令,XX:XX:XX:XX:XX:XX是你蓝牙设备的MAC地址,你可以在scan on后在输出列表中里面找,也可以用blueman右键查看。

scan on
trust XX:XX:XX:XX:XX:XX
pair XX:XX:XX:XX:XX:XX
connect XX:XX:XX:XX:XX:XX

到这里为止我的蓝牙连接终于成功了。

2.重来1遍确保流程正确

我把Blueman和pulseaudio-module-bluetooth卸载了,耳机已经建立好的连接也直接断开了,重新按照上面的流程来发现死活配对不上了。下面是刚进bluetoothctl的输出和进行配对后的输出。
在这里插入图片描述
在这里插入图片描述
此时我们可以很明显地看到这里显示的是Discovering:no,因此我感觉加入下面的应该有效果

sudo apt install pulseaudio-module-bluetooth 
pulseaudio -k
pulseaudio --start
sudo pactl load-module module-bluetooth-discover

结果果然成功了,重开一个终端跑上面的指令后,再次进入bluetoothctl后重新输第1步的指令,得到的提示都变了,Control变成了Pairable:yes。询问那个配对密钥时选择yes,马上就配对成功了,然后再连接也立刻连接上了。
在这里插入图片描述

3.结论

Blueman不是必要的,pulseaudio-module-bluetooth是必须的。认真思考了一下:这里应该是Ubuntu的module-bluetooth-discover一直没有很好的适配和加载吧,另外那个配对询问的弹窗鲁棒性估计也有问题。因此针对这两个问题,直接使用重新加载和在命令行下配对连接的方式就好了。具体流程见第2步。
参考:
1、Discovering:no的解决思路
2、命令行下进行蓝牙连接


总结

本文介绍了Ubuntu20.04下连接蓝牙耳机的可靠方法(个人感觉应该也适用于其他蓝牙设备),希望能帮到有需要的人。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐