我在 Dell XPS 13 9380 上使用 Ubuntu 19.10。我到处都找过了,甚至在网上搜索了 Bluez 源代码,以找到导致这种令人愤怒的行为的确切代码行或配置:不仅是为什么 A2DP 不是一个更合理的默认设置,而且更重要的是,为什么如此常见的用例(即连接时选择默认的 BT 配置文件)不是用户可以配置/选择的东西,在 /etc/bluetooth/main.conf 中所有现有的选项中,其中大多数用户可能不需要更改。我发现一些线索,类似这个配置的东西曾经存在,但后来由于某种原因被删除了;正如我在系统日志中看到的那样,Bluez 不再识别这些设置。
如果每次都使用 PulseAudio/Blueman 手动选择配置文件,那就更好了。但这并不总是有效,有时它似乎会挂起并在此过程中与耳机断开连接,而是通过我的 PC 扬声器传输音频。然后我需要关闭耳机并重新打开,希望这次能正常工作。我会考虑这可能是我的耳机的问题,但我的 Android 从来没有出现过这个问题,所以我更倾向于相信我的 PC 是不断出错的那个。
吐槽完毕,有人遇到过这个问题吗?也许知道一些对他们有用的方法?或者最近的 20.04 版本是否以某种神奇的方式解决了这个问题?
更新:升级到 20.04(包括 Bluez 5.53)没有任何变化。耳机仍然默认为 HSP/HFP。到目前为止,我已经几乎习惯了每次使用 BlueMan 时手动切换配置文件。如果有人后来找到了真正的解决方案,他们当然仍然可以自由地提供答案。
答案1
事实证明,问题是由于 Bluez 与耳机争夺先连接 A2DP 的权利而引起的。有些耳机不能很好地处理这种交叉——在这种情况下,混乱表现为耳机需要几秒钟才能响应 AVDTP 命令。
结果是,当 PulseAudio 需要紧急路由音频时,它似乎它注意到 A2DP 尚未连接,因此选择最接近的替代方案,即 HFP/SCO。
在 21.10 Impish Indri 上,结果更糟,由于耳机的延迟响应,一些 Bluez A2DP 出现超时,并且 A2DP 完全断开连接,随后其他配置文件也断开连接。
此处已提出一张票:https://bugs.launchpad.net/ubuntu/+source/bluez/+bug/1941977,以防其他人遇到同样的问题并想参与进来。但我不会将此标记为已回答,直到 Bluez 团队的某个人确认那里的分析,合并提议的更改,并且我能够确认结果做修复我的耳机问题。