问题描述
我有一个不错的蓝牙音频接收器连接到我的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
音频质量差强人意。我该如何解决?
最佳解决办法
对我有用的是连接蓝牙设备,切换到HSP /HFP模式,断开连接,重新连接,然后再切换到A2DP模式。
次佳解决办法
与此相关的漏洞有很多,例如this one (started in 15.05)和this other one, quite older;总体原因尚不清楚。
在开始修改系统文件之前,您还可以检查Bluetooth speaker no sound in Ubuntu 16.04(似乎是个错误)和A2DP bluetooth doesn’t work on 16.04(由内核升级解决在注释中)。
以下是对我有用的修补程序—感谢user RobertFM in launchpad和SimFox3 in Arch forums。以下所有指令必须从根 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
并在加载模块module-x11-xsmp
之后添加行/usr/bin/pactl load-module module-bluetooth-discover
;在实践中,您应该在文件末尾编辑一个节,例如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并享受高品质的音乐:请注意,有时需要断开设备并将其重新连接到re-enable A2DP:…是的,这是个bug。但是,当它起作用时,它可以很好地工作。
-
重新启动后出现问题所有这些之后,有时该技巧似乎仅在下一次重新启动后才起作用。在这种情况下,请尝试遵循rmfought’s answer:对我有用的是连接蓝牙设备,切换到HSP /HFP模式,断开连接,重新连接,然后再切换到A2DP模式。 …也为我工作(再次,有时)。我什至必须一次加密狗一个re-pair un-pair。
-
如果仍然无法使用…如果仍然无法使用,您可以尝试使用this script —作者将其保留为up-to-date。
第三种解决办法
对于那些需要麦克风的人来说,这不一定是一个解决方案,但这在Ubuntu 16.04中对我有用:
sudo nano /etc/bluetooth/audio.conf
然后在[General]
下添加Disable=Headset
。
[General]
Disable=Headset
并重启蓝牙服务
sudo service bluetooth restart
而这家伙的所有信条:https://jimshaver.net/2015/03/31/going-a2dp-only-on-linux/