如何使用具有 HSP/HFP 配置文件的蓝牙设备(使用pulsaudio >=6 和 bluez >= 5.24)

如何使用具有 HSP/HFP 配置文件的蓝牙设备(使用pulsaudio >=6 和 bluez >= 5.24)

我想在我的 Linux 盒子上接收/录制来自蓝牙设备的音频。我的耳机可以正常工作(尤其是麦克风工作正常),即在 macOS 上,但我无法让它在 Linux 上工作 - 特别是 raspbian jessy - 但从我所看到的情况来看,它也会影响其他发行版。

  • 设备已使用正确配对和连接bluetoothctl
  • A2DP 配置文件工作正常
  • pactl ls报告等headset_head_unit: Headset Head Unit (HSP/HFP) (priority 20, available: no)
  • 在尝试切换到headset_head_unitpulseaudio报告时[pulseaudio] module-bluez5-device.c: Refused to switch profile to headset_head_unit: Not connected

我发现并尝试了各种关于升级、使用等的建议,bluezpulseaudio没有ofono成功。最常见的评论是 HSP/HFP 支持最近已被删除bluezofono应该使用(但我不确定 ofono 应该如何在这里提供帮助,因为据我所知,当 BT susystem 被用作客户端时,即连接到手机)。我可以看到许多未解决的错误,即 freedesktop这里这里,红帽,乌班图德比安以及 stackexchange 上提出的类似问题。虽然有一些成功的报道,但我无法继续尝试,即

  • 使用pulseaudio配置load-module module-bluetooth-discover headset=ofono(以及autonative体),版本 7、8、10
  • bluez5.24、5.42、5.43(无法找到 debian 的其他版本,因为 ie 报告bluez5.35 取得了一些成功)
  • 重新配对并重新连接耳机设备bluetoothctl

报告中也存在一些混乱,因为可能有些人正在混合使用 Linux 蓝牙堆栈作为客户端/服务器 - 至少这是我对使用ofono.

虽然也有一些关于 RPI 3 上的蓝牙的问题报告,但我想首先找到任何迹象,看看当前的bluez/是否可以实现 HFP/HSP pulseaudio。在 debian 上(在 raspbian 上更好)有任何带有明确步骤的成功报告会对我有很大帮助。即使在任何其他发行版上的任何成功设置都可以帮助我在我的盒子上构建相同的内容。看起来这个问题影响pulseaudio/bluez堆积了一年多,很难相信人们不能使用他们的 BT 耳机,即进行 VOiP 通话这么长时间......不确定我是否提供了我的调查中的所有重要细节,所以在如果有评论我可以更新这个问题。

还想知道是否有一些错误报告以及一些积极的开发和解决方案的机会。

更新: 最有可能的是,在删除之后,ofono我终于设法能够headset_head_unit在尝试录制或播放声音时切换连接,设备显示一些活动(即脉动的内置 LED),但没有接收/发送数据(即parec创建空的wav大小) 44b,这只是 wav 标头)。我已经使用配置文件测试了相同的设备a2dp_sink,并且可以毫无问题地播放声音。我想知道如何调试它。

答案1

我的解决方案:

经过大量搜索后,我刚刚在 Fedora 26 中找到了我的解决方案,使用 Plantronics Legend 和可插拔蓝牙 USB。

我将回顾我的历史,并尽可能用我的解决方案更新线程。这对我有用,直接来自 Plugable(这是我正在使用的 USB 模块)。

邮政。

上述链接的命令摘要

wget https://s3.amazonaws.com/plugable/bin/fw-0a5c_21e8.hcd
sudo mkdir /lib/firmware/brcm
sudo mv fw-0a5c_21e8.hcd /lib/firmware/brcm/BCM20702A0-0a5c-21e8.hcd
sudo cp /lib/firmware/brcm/BCM20702A0-0a5c-21e8.hcd /lib/firmware/brcm/BCM20702A1-0a5c-21e8.hcd

然后重新启动。

答案2

我在使用 Oneplus Wireless Z Bass 版本时也遇到了同样的问题。 PulseAudio 未检测到我的耳机麦克风,问题是我的耳机没有 HSP 配置文件,只有 HFP 配置文件。经过两天的尝试,我找到了用Pipewire声音服务器替换PulseAudio的解决方案,它本身支持HSP、HFP和A2DP。因此无需安装任何其他实用程序,例如ofono, phonesim。另外,需要注意的是,即使按照ofonoPulseAudio 中的所有配置步骤进行配置,我的问题也没有得到解决。所以我想出了用 PipeWire 替换 PulseAudio 的步骤。

这是我为解决此问题而编写的详细文章,我也在此处添加了其步骤。您可以按照它进行操作,并且很可能能够解决您的问题。

未检测到蓝牙耳机麦克风

打开您的终端并按照以下步骤操作:

  1. 我们将使用 PPA 将 Pipewire 添加到 Ubuntu 20.04,它会定期维护:

    sudo add-apt-repository ppa:pipewire-debian/pipewire-upstream
    
  2. 要更新系统中的 PPA 包,请执行以下操作:

    sudo apt update
    
  3. 安装包:

    sudo apt install pipewire
    
  4. Pipewire还需要安装一个依赖项,否则你将面临以下问题“安装pipewire后蓝牙耳机无法连接”。通过以下方式安装依赖项:

    sudo apt install libspa-0.2-bluetooth
    
  5. 现在,安装客户端库:

    sudo apt install pipewire-audio-client-libraries
    
  6. 重新加载守护进程:

    systemctl --user daemon-reload
    
  7. 禁用 PulseAudio:

    systemctl --user --now disable pulseaudio.service pulseaudio.socket
    
  8. 如果您使用的是 Ubuntu 20.04,您还需要通过以下方式“屏蔽”PulseAudio:

    systemctl --user mask pulseaudio
    

我不确定,但如果可能的话,您也可以尝试在其他版本上运行它。
9. Pipewire新更新后,您还需要启用pipewire-media-session-service

   systemctl --user --now enable pipewire-media-session.service
  1. 您可以确保 Pipewire 现在正在运行:

    pactl info
    

    该命令将给出以下输出,在服务器名称中您可以看到:

    PulseAudio (on PipeWire 0.3.28)
    

    现在一切应该可以正常工作,您可以看到您的麦克风。

如果没有显示,请尝试通过以下命令重新启动 Pipewire:

systemctl --user restart pipewire

如果安装了 ofono 和 ofono-phonesim,您还需要卸载它们:

sudo apt remove ofono
sudo apt remove ofono-phonesim

如果仍然没有显示您的麦克风,您可以尝试重新启动一次,然后移除并再次配对您的蓝牙设备,以检查它现在是否正常工作。

我希望我已经帮助您解决了您的问题。

如果您想回滚我们所做的所有更改,可以使用以下命令来完成:

systemctl --user unmask pulseaudio
systemctl --user --now enable pulseaudio.service pulseaudio.socket

相关内容