ubuntu18.04 PulseAudio蓝牙耳机开启mic的解决办法

一、背景

  • 基于Linux音频服务子系统PulseAudio(Linux默认声音服务器)进行音频开发,包括采集(record)和播放(playback);
  • 测试中发现笔记本(ubuntu 18.04)连接蓝牙后无法读取record设备,只能识别到playback设备,经过一番折腾,发现native PulseAudio不支持HSP/HFP, 连接蓝牙耳机后,输入指令pactl list cards查看声卡信息:
查看蓝牙耳机声卡Profiles:
Profiles:
off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
a2dp-sink: High Fidelity Playback (A2DP Sink) (sinks: 1, sources: 0, priority: 0, available: yes)
headset-head-unit: Headset Head Unit (HSP/HFP) (sinks: 1, sources: 1, priority: 0, available: no)

可以看出此时默认只支持A2DP协议,不支持HSP/HFP,解释如下:

  • a2dp-sink: High Fidelity Playback (A2DP Sink) (sinks: 1, sources: 0, priority: 0, available: yes)
    A2DP是单向的,只支持播放(sink),不支持录制(source);
  • headset-head-unit: Headset Head Unit (HSP/HFP) (sinks: 1, sources: 1, priority: 0, available: no)
    HSP/HFP是双向的,同时支持播放(sink)和录制(source);

结论:当前系统环境下无法支持蓝牙耳机录制,就算从PulseAudio Volume Control工具下切换Configuration也是毫无意义的。

二、解决方案

查阅资料发现,可以通过安装pipewire(参考
PipeWire: The Linux audio/video bus)让PulseAudio工作在pipewire上。
详细操作可以参考How to Enable PipeWire Audio Service to Replace PulseAudio in Ubuntu 21.10 & 21.04

步骤如下:

1. 通过ppa安装pipewire

sudo add-apt-repository ppa:pipewire-debian/pipewire-upstream
sudo apt install pipewire
sudo apt install libspa-0.2-bluetooth

2. 重启系统

3. 验证pipewire是否正常安装

pactl info

sam@sam-ThinkPad-Edge-E440:~$ pactl info
Server String: /run/user/1000/pulse/native
Library Protocol Version: 32
Server Protocol Version: 35
Is Local: yes
Client Index: 74
Tile Size: 65472
User Name: sam
Host Name: sam-ThinkPad-Edge-E440
Server Name: PulseAudio (on PipeWire 0.3.39)
Server Version: 15.0.0
Default Sample Specification: float32le 2ch 48000Hz
Default Channel Map: front-left,front-right
Default Sink: alsa_output.pci-0000_00_1b.0.analog-stereo
Default Source: alsa_input.pci-0000_00_1b.0.analog-stereo
Cookie: 2c95:ace7

查看Server Name出现PipeWire说明安装完成
Server Name: PulseAudio (on PipeWire 0.3.39)

4. 查看声卡Profiles

pactl list cards

Profiles:
off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
a2dp-sink: High Fidelity Playback (A2DP Sink) (sinks: 1, sources: 0, priority: 0, available: yes)
headset-head-unit: Headset Head Unit (HSP/HFP) (sinks: 1, sources: 1, priority: 0, available: yes)
a2dp-sink-sbc: High Fidelity Playback (A2DP Sink, codec SBC) (sinks: 1, sources: 0, priority: 0, available: yes)
headset-head-unit-cvsd: Headset Head Unit (HSP/HFP, codec CVSD) (sinks: 1, sources: 1, priority: 0, available: yes)

现在看到A2DP和HSP/HFP都支持了,现在移步到系统Settings或使用PulseAudio Volume Control工具去配置蓝牙耳机的profile为HSP/HFP,即可使用蓝牙耳机的mic功能。

### 如何在 Ubuntu 18.04 上设置和连接蓝牙耳机 #### 蓝牙服务启动与状态确认 确保蓝牙服务已经启动并正常运行。可以通过终端输入`sudo systemctl start bluetooth`来启动蓝牙服务,通过`sudo systemctl status bluetooth`查看其当前的状态。 #### 移除现有配对记录重新尝试连接 对于之前有过失败连接经历的情况,建议先进入系统的蓝牙设置界面,找到曾经试图连接过的蓝牙耳机条目,将其移除后再进行新的搜索与连接操作[^3]。 #### 修改 ControllerMode 设置 如果遇到即便成功匹配却始终无法建立稳定连接的问题,则可能是因为默认的控制器模式不适用于某些类型的蓝牙设备。此时可编辑配置文件 `/etc/bluetooth/main.conf` ,定位至 `[General]` 段落下,将 `ControllerMode` 参数设定为 `bredr` (经典蓝牙),而非 le 或 dual 。这一步骤有助于改善兼容性问题[^5]。 ```bash # 使用文本编辑器打开配置文件 sudo nano /etc/bluetooth/main.conf # 找到 [General] 部分, 添加或修改如下行: ControllerMode = bredr ``` #### 利用图形化工具调整音频配置文件 为了实现更丰富的功能比如启用麦克风收音,在完成基本连接之后还需要进一步指定所使用的音频传输协议。借助于GNOME自带的声音设置对话框或是第三方应用程序如Pavucontrol (PulseAudio Volume Control),能够方便地切换不同的Profile选项,例如 A2DP Sink(高质量音乐播放) 和 HSP/HFP(Source)(通话质量)[^4]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值