我有一个很好的蓝牙音频接收器连接到我的 HiFi 立体声音响,我以前能够在 14.04 中将它连接为质量很好的 A2DP 接收器。
升级到 16.04 后,该设备仅作为耳机连接,当尝试在 A2DP 模式下切换时,我的系统日志中出现此错误:
May 21 11:35:50 RRyS pulseaudio[6159]: [pulseaudio] module-bluez5-device.c: Refused to switch profile to a2dp_sink: Not connected
音频质量很差。我该如何修复?
答案1
对我来说有用的是连接蓝牙设备,切换到 HSP/HFP 模式,断开连接,重新连接,然后切换到 A2DP 模式。
答案2
关于此问题,有几个错误,例如这个(从 15.05 开始)和另一个比较老;总体而言,其原因尚不十分清楚。
在开始修改系统文件之前,您还可以检查Ubuntu 16.04 中蓝牙扬声器没有声音(似乎是另一个错误)和A2DP 蓝牙在 16.04 上不起作用(通过内核升级在评论中解决)。
对我有用的修复方法如下 --- 感谢启动板中的用户 RobertFM和Arch 论坛中的 SimFox3。以下所有指令都必须从 root shell 执行(sudo -i
)。请小心并仔细检查。
首先,备份这些文件(你永远不知道):
cp /etc/bluetooth/audio.conf /etc/bluetooth/audio.conf.bak cp /etc/pulse/default.pa /etc/pulse/default.pa.bak cp /usr/bin/start-pulseaudio-x11 /usr/bin/start-pulseaudio-x11.bak
编辑
/etc/bluetooth/audio.conf
并使其与此类似:# Configuration file for the audio service # This section contains options which are not specific to any # particular interface [General] Enable=Gateway,Source # Switch to master role for incoming connections (defaults to true) Master=true # If we want to disable support for specific services # Defaults to supporting all implemented services #Disable=Gateway,Source,Socket Disable=Socket # SCO routing. Either PCM or HCI (in which case audio is routed to/from ALSA) # Defaults to HCI #SCORouting=HCI # Automatically connect both A2DP and HFP/HSP profiles for incoming # connections. Some headsets that support both profiles will only connect the # other one automatically so the default setting of true is usually a good # idea. AutoConnect=true # Headset interface specific options (i.e. options which affect how the audio # service interacts with remote headset devices) [Headset] # Set to true to support HFP, false means only HSP is supported # Defaults to true HFP=true # Maximum number of connected HSP/HFP devices per adapter. Defaults to 1 MaxConnected=2 # Set to true to enable use of fast connectable mode (faster page scanning) # for HFP when incoming call starts. Default settings are restored after # call is answered or rejected. Page scan interval is much shorter and page # scan type changed to interlaced. Such allows faster connection initiated # by a headset. FastConnectable=true # Just an example of potential config options for the other interfaces #[A2DP] #SBCSources=1 #MPEG12Sources=0
编辑
/etc/pulse/default.pa
并注释掉以下行#load-module module-bluetooth-discover
#
(你实际上只需要在开头添加)在模块加载后编辑
/usr/bin/start-pulseaudio-x11
并添加行;实际上,你应该在文件末尾附近编辑一个类似这样的节/usr/bin/pactl load-module module-bluetooth-discover
module-x11-xsmp
if [ x"$SESSION_MANAGER" != x ] ; then /usr/bin/pactl load-module module-x11-xsmp "display=$DISPLAY session_manager=$SESSION_MANAGER" > /dev/null # add this line here: /usr/bin/pactl load-module module-bluetooth-discover fi
重启。
现在您应该可以将设备设置为 A2DP 并享受高品质音乐:
请注意,有时您需要断开并重新连接设备以重新启用 A2DP:
...是的,这确实有很多问题。但当它发挥作用时,效果非常好。
重启后出现问题
完成所有这些操作后,有时这个技巧似乎只有在下次重启后才会起作用。在这种情况下,请尝试按照rmfought 的回答:
对我来说有用的是连接蓝牙设备,切换到 HSP/HFP 模式,断开连接,重新连接,然后切换到 A2DP 模式。
...对我来说也有效(再次,有时)。我甚至不得不取消配对并重新配对加密狗一次。
如果仍然不起作用...
如果这对你不起作用,你可以尝试 这个脚本--- 它的作者正在保持其更新。
答案3
对于需要麦克风的人来说,这不一定是一个解决方案,但这对我来说在 Ubuntu 16.04 中有效:
sudo nano /etc/bluetooth/audio.conf
然后Disable=Headset
在 下添加[General]
。
[General]
Disable=Headset
并重启蓝牙服务
sudo service bluetooth restart
以下是这家伙的所有荣誉: https://jimshaver.net/2015/03/31/going-a2dp-only-on-linux/