Pour utiliser votre ordinateur Ubuntu en tant que périphérique Bluetooth a2dp, vous devez d’abord le configurer pour s’enregistrer en tant que point de terminaison "récepteur a2dp".
Le paquet bluez dans Ubuntu (10.04 et supérieur) inclut un utilitaire appelé sdptool qui peut être utilisé pour vérifier si un périphérique Bluetooth est configuré en tant que récepteur a2dp ou non. Voici la sortie de sdptool exécutée avec mon casque Bluetooth (l'adresse provient de la boîte de dialogue "Paramètres Bluetooth" du gnome-control-center):
$ sdptool search --bdaddr 00:18:16:3A:3B:D4 a2snk
Searching for a2snk on 00:18:16:3A:3B:D4 ...
Service RecHandle: 0x10002
Service Class ID List:
"Audio Sink" (0x110b)
Protocol Descriptor List:
"L2CAP" (0x0100)
PSM: 25
"AVDTP" (0x0019)
uint16: 0x102
Profile Descriptor List:
"Advanced Audio" (0x110d)
Version: 0x0102
$
et voici la sortie lorsqu’elle est exécutée sur ma machine Ubuntu locale:
$ sdptool search --bdaddr local a2snk
Searching for a2snk on FF:FF:FF:00:00:00 ...
$
Cela montre que la machine Ubuntu ne se présente pas comme un évier a2dp. Cependant, il se présente comme une source A2DP:
$ sdptool search --bdaddr local a2src
Searching for a2src on FF:FF:FF:00:00:00 ...
Service Name: Audio Source
Service RecHandle: 0x10003
Service Class ID List:
"Audio Source" (0x110a)
Protocol Descriptor List:
"L2CAP" (0x0100)
PSM: 25
"AVDTP" (0x0019)
uint16: 0x102
Profile Descriptor List:
"Advanced Audio" (0x110d)
Version: 0x0102
Cela permet à la machine Ubuntu d’apparier correctement avec le casque en tant que source audio, mais ne permet pas d’utiliser la machine Ubuntu comme sortie (puits) pour l’audio Bluetooth.
Si vous modifiez /etc/bluetooth/audio.conf
, vous pouvez activer la prise en charge du récepteur a2dp en ajoutant cette ligne sous la [General]
section:
Enable=Source
Ceci est à la fois contre-intuitivement nommé - puisque ce que nous ajoutons ici est la prise en charge des récepteurs Bluetooth, et non des sources - et en contradiction avec le commentaire de ce fichier qui prétend que tous les services mis en œuvre sont activés par défaut. :(
Après avoir apporté cette modification, vous devrez redémarrer Bluetooth en exécutant sudo service bluetooth restart
.
Si vous avez déjà couplé votre appareil Android et votre ordinateur Ubuntu en essayant d'obtenir ce travail, vous devrez supprimer le couplage des deux côtés et les rapprocher afin qu'Android reconnaisse Ubuntu comme périphérique audio disponible.
Une fois que cela est fait, le périphérique Android doit apparaître comme un périphérique d'entrée sous PulseAudio. Si PulseAudio ne détecte pas la nouvelle source audio Bluetooth, vous devrez peut-être installer et charger le module Bluetooth à partir de la ligne de commande:
sudo apt-get install pulseaudio-module-bluetooth
pactl load-module module-bluetooth-discover
Ensuite, vous devez indiquer à PulseAudio d’acheminer cette entrée audio vers votre sortie (par exemple vos haut-parleurs ou un casque Bluetooth) à l’aide d’une connexion en boucle (une ligne droite reliant une source à un récepteur).
Des versions ultérieures de PulseAudio peuvent inclure une politique de module bluetooth et déjà configuré un périphérique de bouclage, mais cela ne semble pas être le cas le plus courant.
Un moyen semi-automatique de configurer la connexion en boucle (si vous avez également installé le programme d'interface graphique pavucontrol) consiste à simplement charger le module de bouclage et à le configurer à l'aide de pavucontrol, étant donné que PulseAudio gardera les paramètres en mémoire. Le chargement du module se fait depuis la commande en utilisant pactl:
pactl load-module module-loopback
Ne craignez rien si vous n'entendez rien encore ou si vous obtenez des effets de retour étranges, nous devons indiquer au périphérique nouvellement créé la source à partir de laquelle entrer et le récepteur auquel envoyer la sortie en premier.
Ouvrez pavucontrol et ouvrez son onglet Configuration. Assurez-vous que votre périphérique Bluetooth apparaît ici (après l'avoir couplé à l'aide de blueman-manager ou d'un autre outil Bluetooth) et que le profil est défini sur A2DP. Basculez sur l'onglet Périphériques d'entrée et assurez-vous que votre périphérique s'affiche également ici et qu'il n'est pas mis en sourdine. Passez maintenant à l'onglet Enregistrement et faites en sorte que la connexion de bouclage nouvellement créée utilise votre appareil en tant que source avec la zone de sélection en regard du bouton Muet. Basculez sur l'onglet Lecture pour sélectionner l'évier que la connexion en boucle doit utiliser de la même manière. Si le périphérique de bouclage ne s'affiche pas dans les onglets, assurez-vous que tous les flux sont affichés à l'aide de la zone de sélection située au bas de chaque onglet.
Vous devriez maintenant entendre le son de votre appareil, s'il est en cours de lecture, dans vos haut-parleurs ou dans le récepteur de sortie que vous avez sélectionné. Lorsque votre périphérique est déconnecté, le périphérique en boucle retourne à un récepteur et à une source disponibles, ce qui peut ne pas être souhaitable. Veillez donc à désactiver le périphérique en boucle jusqu'à ce que vous en ayez besoin. La connexion en boucle restaure le même récepteur / source lors de la prochaine connexion du même périphérique Bluetooth grâce au module - * - modules de restauration.
Si cela ne fonctionne pas ou si vous n'avez pas installé pavucontrol, vous pouvez plutôt configurer le bouclage à l'aide de la méthode suivante:
pactl load-module module-loopback source_dont_move=yes source=$BTSOURCE sink=$SINK
(Remplacez-le $BTSOURCE
par le nom source de votre périphérique Bluetooth tel que vu par PulseAudio, par exemple bluez_source.14_DA_E9_2A_D7_57
; et remplacez $SINK
par le nom de la sortie PulseAudio à laquelle vous voulez envoyer le flux audio, par exemple alsa_output.pci-0000_00_1b.0.analog-stereo
:. dans un évier actif et changez-le plus tard via pavucontrol.)
- Vous pouvez trouver
$SINK
avec pactl list sinks
, c'est montré aprèsName:
- De même, vous pouvez voir le
$BTSOURCE
avecpactl list sources
- L'
source_dont_move
argument empêche la connexion en boucle de revenir à une autre source audio lorsque le périphérique Bluetooth est déconnecté. Au lieu de cela, il est supprimé et vous devrez le configurer à nouveau la prochaine fois.
Voici à quoi un exemple ressemblerait (souvenez-vous de remplacer le :
avec _
par l'adresse Bluetooth!):
pactl load-module module-loopback source_dont_move=yes source=bluez_source.14_DA_E9_2A_D7_57 sink=alsa_output.pci-0000_00_14.2.analog-stereo
Si le chargement du module de secours échoue, essayez de supprimer l' source_dont_move=yes
argument, celui-ci a été rendu disponible dans la version 1.0. Veillez toutefois à supprimer cette connexion en boucle avant de supprimer cet audio, ou si, par exemple, le microphone de votre ordinateur portable n’est pas mis en sourdine, vous risquez d’obtenir des informations très mauvaises. Pour supprimer manuellement cette connexion en boucle lorsque vous avez terminé, exécutez:
pactl unload-module $(pactl list short modules | grep "loopback.*$BTSOURCE" | cut -f1)
Encore une fois, remplacez-le $BTSOURCE
par le nom de la source PulseAudio qui fait référence à votre périphérique Bluetooth. Vous pouvez également décharger le module à l'aide de l'ID renvoyé par la commande load-module:
$ pactl load-module module-loopback source_dont_move=yes source=bluez_source.14_DA_E9_2A_D7_57 sink=alsa_output.pci-0000_00_14.2.analog-stereo
15
$ pactl unload-module 15
Les références:
- Article de blog décrivant certains des détails de la résolution de ce problème dans Ubuntu.