web-dev-qa-db-fra.com

Après la mise à jour vers 16.04, le mode audio Bluetooth A2DP a cessé de fonctionner

J'ai un récepteur audio Bluetooth Nice connecté à ma chaîne hi-fi, et je pouvais le connecter en 14.04 en tant qu'évier A2DP de qualité Nice.

Après la mise à niveau vers 16.04, le périphérique se connecte uniquement en tant que casque et lors de la tentative de commutation en mode A2DP, le message d'erreur suivant apparaît dans mon syslog:

May 21 11:35:50 RRyS pulseaudio[6159]: [pulseaudio] module-bluez5-device.c: Refused to switch profile to a2dp_sink: Not connected

et la qualité de l'audio est abismal. Comment puis-je le réparer?

29
Rmano

Plusieurs bogues ont été ouverts à ce sujet, vérifiez par exemple celui-ci (commencé à 15.05) et cet autre, bien plus ancien ; les causes en général ne sont pas bien comprises.

Avant de commencer à modifier les fichiers système, vous pouvez également vérifier haut-parleur Bluetooth pas de son sous Ubuntu 16.04 (semble un bogue différent) et bluetooth A2DP ne fonctionne pas le 16.04 (résolu dans les commentaires par une mise à niveau du noyau).

Le correctif qui a fonctionné pour moi est le suivant --- grâce à l'utilisateur RobertFM dans le tableau de bord et SimFox3 dans les forums Arch . Toutes les instructions suivantes doivent être exécutées à partir d'un shell racine (Sudo -i). Prenez soin de vous et vérifiez trois fois.

  1. Tout d’abord, faites une sauvegarde de ces fichiers (on ne sait jamais):

    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. Éditez /etc/bluetooth/audio.conf et rendez-le semblable à celui-ci:

    # 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. Editez /etc/Pulse/default.pa et commentez la ligne

    #load-module module-bluetooth-discover
    

    (vous n'avez vraiment besoin que d'ajouter le # au début)

  4. Editez /usr/bin/start-pulseaudio-x11 et ajoutez la ligne /usr/bin/pactl load-module module-bluetooth-discover après le chargement du module module-x11-xsmp; en pratique, vous devriez éditer le fichier vers la fin pour avoir une strophe comme

    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. Redémarrez.

    Vous devriez maintenant pouvoir configurer votre appareil sur A2DP et profiter d'une musique de haute qualité:

    Sound settings

    Notez que vous devez parfois déconnecter et reconnecter votre appareil pour réactiver A2DP:

    Bluetooth devices

    ... oui, c'est une boîte de bogues. Mais quand ça marche, ça marche à merveille.

  6. Problèmes après le redémarrage

    Après tout cela, parfois, l’astuce semble fonctionner seulement après le prochain redémarrage. Dans un tel cas, essayez de suivre réponse de rmfought :

    Ce qui fonctionne pour moi est de connecter le périphérique Bluetooth, de basculer en mode HSP/HFP, de se déconnecter, de se reconnecter, puis de passer en mode A2DP.

    ... travaille pour moi aussi (encore une fois). Je devais même dissocier une nouvelle fois le dongle.

  7. Si ça ne marche toujours pas ...

    Si cela ne fonctionne pas non plus pour vous, vous pouvez essayer avec ce script --- son auteur le tient à jour.

34
Rmano

Ce qui fonctionne pour moi est de connecter le périphérique Bluetooth, de basculer en mode HSP/HFP, de se déconnecter, de se reconnecter, puis de passer en mode A2DP.

38
rmfought

Ce n'est pas forcément une solution pour ceux qui ont besoin du micro, mais cela a fonctionné pour Ubuntu 16.04:

Sudo nano /etc/bluetooth/audio.conf

Et ajoutez ensuite Disable=Headset sous [General].

[General]
Disable=Headset

Et redémarrez le service Bluetooth

Sudo service bluetooth restart

Et tous les remerciements à ce gars: https://jimshaver.net/2015/03/31/going-a2dp-only-on-linux/

5
helgis