当前位置: 首页>>技术问答>>正文


更新到16.04后,蓝牙音频A2DP模式停止工作

, , , ,

问题描述

我有一个不错的蓝牙音频接收器连接到我的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 launchpadSimFox3 in Arch forums。以下所有指令必须从根 shell 程序(sudo -i)执行。保重并进行三重检查。

  1. 首先,备份以下文件(您永远不会知道):

    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
    
  2. 编辑/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
    
  3. 编辑/etc/pulse/default.pa并注释掉该行

    #load-module module-bluetooth-discover
    

    (您实际上只需要在开始时添加#)

  4. 编辑/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
    
  5. 重启。现在,您应该能够将设备设置为A2DP并享受高品质的音乐:请注意,有时需要断开设备并将其重新连接到re-enable A2DP:…是的,这是个bug。但是,当它起作用时,它可以很好地工作。

  6. 重新启动后出现问题所有这些之后,有时该技巧似乎仅在下一次重新启动后才起作用。在这种情况下,请尝试遵循rmfought’s answer:对我有用的是连接蓝牙设备,切换到HSP /HFP模式,断开连接,重新连接,然后再切换到A2DP模式。 …也为我工作(再次,有时)。我什至必须一次加密狗一个re-pair un-pair。

  7. 如果仍然无法使用…如果仍然无法使用,您可以尝试使用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/

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/7438.html,未经允许,请勿转载。