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

更新至 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

音频质量很差。我该如何修复?

答案1

对我来说有用的是连接蓝牙设备,切换到 HSP/HFP 模式,断开连接,重新连接,然后切换到 A2DP 模式。

答案2

关于此问题,有几个错误,例如这个(从 15.05 开始)另一个比较老;总体而言,其原因尚不十分清楚。

在开始修改系统文件之前,您还可以检查Ubuntu 16.04 中蓝牙扬声器没有声音(似乎是另一个错误)和A2DP 蓝牙在 16.04 上不起作用(通过内核升级在评论中解决)。

对我有用的修复方法如下 --- 感谢启动板中的用户 RobertFMArch 论坛中的 SimFox3。以下所有指令都必须从 root 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并添加行;实际上,你应该在文件末尾附近编辑一个类似这样的节/usr/bin/pactl load-module module-bluetooth-discovermodule-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
    
  5. 重启。

    现在您应该可以将设备设置为 A2DP 并享受高品质音乐:

    声音设置

    请注意,有时您需要断开并重新连接设备以重新启用 A2DP:

    蓝牙设备

    ...是的,这确实有很多问题。但当它发挥作用时,效果非常好。

  6. 重启后出现问题

    完成所有这些操作后,有时这个技巧似乎只有在下次重启后才会起作用。在这种情况下,请尝试按照rmfought 的回答

    对我来说有用的是连接蓝牙设备,切换到 HSP/HFP 模式,断开连接,重新连接,然后切换到 A2DP 模式。

    ...对我来说也有效(再次,有时)。我甚至不得不取消配对并重新配对加密狗一次。

  7. 如果仍然不起作用...

    如果这对你不起作用,你可以尝试 这个脚本--- 它的作者正在保持其更新。

答案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/

相关内容