45 votes

Puis-je utiliser mon ordinateur comme récepteur A2DP / haut-parleur Bluetooth ?

Tout d'abord, le problème : j'utilise un lecteur MP3 Cowon comme lecteur de musique principal avec des bouchons d'oreille de base.

Il offre la fonction A2DP et j'aimerais que mon netbook (fonctionnant sous UNE 10.04) agisse en tant que récepteur.

Quelques ressources sur le web concernant l'a2dp, mais la plupart sont obsolètes :

54voto

slangasek Points 4716

Pour utiliser votre machine Ubuntu comme périphérique Bluetooth a2dp, vous devez d'abord la configurer pour qu'elle s'enregistre en tant que point d'extrémité "a2dp sink".

En bluez dans Ubuntu (10.04 et plus) comprend un utilitaire appelé sdptool qui peut être utilisée pour vérifier si un appareil Bluetooth est configuré comme un puits a2dp ou non. Voici la sortie de sdptool exécutée sur mon casque Bluetooth (l'adresse provient de la boîte de dialogue "Bluetooth settings" dans le 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 le résultat de l'exécution 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 puits a2dp. Elle s'annonce cependant 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 de s'appairer correctement avec le casque en tant que source audio, mais cela ne permet pas d'utiliser la machine Ubuntu en tant que sortie (sink) pour l'audio Bluetooth.

Si vous modifiez /etc/bluetooth/audio.conf vous pouvez activer la prise en charge des puits a2dp en ajoutant cette ligne sous le fichier [General] section :

  Enable=Source

Ce nom est à la fois contre-intuitif - puisque ce que nous ajoutons ici est la prise en charge des puits Bluetooth, et non la prise en charge de la source - et en contradiction avec le commentaire de ce fichier qui affirme que tous les services implémentés sont activés par défaut :(

Après avoir effectué cette modification, vous devrez redémarrer bluetoothd en exécutant la commande suivante sudo service bluetooth restart .

Si vous avez déjà appairé votre appareil Android et votre ordinateur Ubuntu en essayant de faire fonctionner ce système, vous devrez supprimer l'appairage des deux côtés et les appairer à nouveau afin qu'Android reconnaisse Ubuntu comme un appareil audio disponible.

Une fois que vous avez fait cela, l'appareil Android devrait apparaître en tant que périphérique d'entrée sous PulseAudio. Si PulseAudio ne détecte pas la nouvelle source audio Bluetooth, il se peut que vous deviez 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

Vous devez ensuite indiquer à PulseAudio d'acheminer cette entrée audio vers votre sortie/sortie (comme vos haut-parleurs ou un casque Bluetooth) à l'aide d'une connexion en boucle (une ligne droite entre une source et une sortie).

Les versions ultérieures de PulseAudio peuvent inclure module-bluetooth-policy et avoir déjà mis en place un périphérique de bouclage pour vous, mais cela ne semble pas être le cas le plus courant.

Une méthode semi-automatique pour configurer la connexion loopback - si le programme GUI pavucontrol est également installé - est de charger simplement le module loopback et de le configurer à l'aide de pavucontrol, puisque PulseAudio se souviendra des paramètres. Le chargement du module se fait à partir de la commande pactl :

 pactl load-module module-loopback

Ne vous inquiétez pas si vous n'entendez rien pour l'instant, ou si vous obtenez d'étranges effets de rétroaction, nous devons d'abord indiquer à l'appareil nouvellement créé de quelle source il doit recevoir les données d'entrée et vers quelle source il doit envoyer les données de sortie.

Ouvrez pavucontrol et ouvrez l'onglet Configuration. Assurez-vous que votre périphérique Bluetooth s'y affiche (après l'avoir apparié à l'aide de blueman-manager ou d'un autre outil Bluetooth) et que le profil est réglé sur A2DP. Passez à l'onglet Périphériques d'entrée et assurez-vous que votre périphérique s'y affiche également et qu'il n'est pas en sourdine. Passez maintenant à l'onglet Enregistrement et faites en sorte que la connexion loopback nouvellement créée utilise votre appareil comme source à l'aide de la case à cocher située à côté du bouton muet. Passez à l'onglet Lecture pour sélectionner le puits que la connexion de bouclage doit utiliser de la même manière. Si le périphérique de bouclage n'apparaît pas dans les onglets, assurez-vous que tous les flux sont affichés à l'aide de la boîte de sélection située au bas de chaque onglet.

Vous devriez maintenant entendre l'audio de votre appareil, s'il est en cours de lecture, dans vos haut-parleurs ou dans le puits de sortie que vous avez sélectionné. Lorsque votre appareil est déconnecté, le dispositif de bouclage se rabat sur une sortie et une source disponibles, ce qui n'est pas forcément souhaitable ; veillez donc à mettre le dispositif de bouclage en sourdine jusqu'à ce que vous en ayez besoin. La connexion de bouclage rétablira le même puits/source la prochaine fois que le même périphérique Bluetooth sera connecté grâce aux modules module-*-restore.

Si cela ne fonctionne pas ou si vous n'avez pas installé pavucontrol, vous pouvez configurer le bouclage en utilisant la méthode suivante :

 pactl load-module module-loopback source_dont_move=yes source=$BTSOURCE sink=$SINK

(Remplacer $BTSOURCE avec le nom de la source de votre appareil Bluetooth tel qu'il est vu par PulseAudio, par ex. bluez_source.14_DA_E9_2A_D7_57 ; et remplacer $SINK avec le nom de la sortie PulseAudio vers laquelle vous souhaitez envoyer le flux audio, par exemple alsa_output.pci-0000_00_1b.0.analog-stereo . Vous pouvez omettre complètement l'argument de l'évier et le faire basculer sur un évier actif, puis le modifier ultérieurement via pavucontrol).

  • Vous pouvez trouver $SINK con pactl list sinks , il est affiché après Name:
  • De même, vous pouvez voir le $BTSOURCE con pactl list sources
  • En source_dont_move empêche la connexion de bouclage 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 un exemple (n'oubliez pas de remplacer l'élément : con _ dans 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 repli échoue, essayez de supprimer l'élément source_dont_move=yes il a été mis à disposition en premier lieu dans la version 1.0. Veillez toutefois à supprimer cette connexion de bouclage avant d'abandonner l'audio, car si, par exemple, le microphone de votre ordinateur portable n'est pas coupé, vous risquez d'obtenir de très mauvaises réactions. Pour supprimer manuellement cette connexion loopback lorsque vous avez terminé, exécutez :

pactl unload-module $(pactl list short modules | grep "loopback.*$BTSOURCE" | cut -f1)

Remplacer à nouveau $BTSOURCE avec le nom de la source PulseAudio qui fait référence à votre appareil Bluetooth. Vous pouvez également décharger le module en utilisant l'identifiant 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

Références :

  • Article de blog décrivant certains détails sur la façon dont ce problème est résolu dans Ubuntu.

13voto

user47059 Points 213

J'utilise blueman, installé à partir du centre logiciel d'Ubuntu. En faisant un clic droit sur l'icône de blueman*-> "local services" -> audio-> Vérifier "advanced audio reception" est basculé. Je l'utilise pour écouter sur mon ordinateur portable Ubuntu 11.10 ce que je joue sur mon téléphone Android.

*L'icône blueman apparaît en bas à droite dans gnome Shell + ubuntu 11.10, c'est mon cas. J'espère que cela vous sera utile d'une manière ou d'une autre.

7voto

dghodgson Points 171

C'est très simple maintenant dans Ubuntu 12.04

Connectez votre appareil Bluetooth

Recherchez votre appareil Bluetooth et notez son numéro de source :

pactl list sources 

Effectuer un loopback pour le périphérique Bluetooth :

pactl load-module module-loopback source=$SOURCE_NUMBER  

Où $SOURCE_NUMBER est le numéro dont vous avez pris note précédemment.

Par exemple, j'ai saisi les données suivantes pour faire fonctionner la lecture audio :

$ pactl load-module module-loopback source=3  

C'est tout ! J'ai trouvé la solution de la réponse du haut un peu compliquée, alors je l'ai simplifiée de cette façon (beaucoup moins de saisie et de copier/coller). Cependant, ma solution ne fonctionnera probablement pas si vous supprimez tous les périphériques audio listés avant le périphérique bluetooth par pactl list sources .

N'oubliez pas non plus de retirer le module de bouclage avant de déconnecter le périphérique Bluetooth :

Notez le numéro de module du dispositif de bouclage que vous avez créé :

pactl list short modules

Retirer le dispositif de bouclage :

pactl unload-module $MODULE_NUMBER

Les réponses précédentes ont été écrites avant la sortie de la version 12.04, donc je suis sûr qu'il y a eu des changements. Par exemple, je n'ai pas eu à activer manuellement l'utilisation de périphériques Bluetooth comme source audio (elle était activée par défaut). Cependant, je dois parfois basculer le profil "Media Audio" dans mes paramètres bluetooth sur mon téléphone (Samsung Captivate sous CyanogenMod 9.1.0).

Il y a probablement un moyen d'exploiter dbus-monitor en utilisant un Shell Shell pour surveiller les connexions de périphériques Bluetooth A2DP et charger automatiquement un module de bouclage pour cela, mais cela me dépasse un peu.

Espérons que nous n'aurons plus besoin de le faire manuellement dans Ubuntu 12.10.

3voto

user184485 Points 31

Pour la version 13.04, associez votre appareil source à l'ordinateur portable ubuntu et cela fonctionne ! C'est vraiment cool de découvrir que c'est aussi facile maintenant.

3voto

Corin Blaikie Points 6223

Dans Ubuntu 16.04, cela fonctionne sans problème.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X