Puis-je utiliser mon ordinateur en tant que récepteur A2DP / haut-parleur Bluetooth?

37

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

Il offre A2DP & amp; J'aimerais avoir mon netbook (sous UNE 10.04) comme récepteur.

Quelques ressources sur le web à propos de a2dp, mais la plupart sont obsolètes:

posée Pierre-Yves Gillier 18.08.2010 - 12:48
la source

6 réponses

44

Pour utiliser votre machine Ubuntu en tant que périphérique Bluetooth a2dp, vous devez d'abord le configurer pour vous enregistrer en tant que point de terminaison "a2dp sink".

Le package bluez d’Ubuntu (10.04 et supérieur) inclut un utilitaire appelé sdptool permettant de vérifier si un périphérique Bluetooth est configuré comme un récepteur a2dp ou non. Voici la sortie de sdptool exécutée sur mon oreillette Bluetooth (l'adresse provient de la boîte de dialogue "Paramètres Bluetooth" 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 lorsqu'il est exécuté 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 s’annonce pas comme un évier a2dp. Il fait de la publicité en tant que source a2dp cependant:

$ 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 se coupler correctement avec le casque en tant que source audio, mais ne permet pas d'utiliser la machine Ubuntu comme sortie (récepteur) pour l'audio Bluetooth.

Si vous modifiez /etc/bluetooth/audio.conf , vous pouvez activer la prise en charge de l'évier a2dp en ajoutant cette ligne sous la section [General] :

  Enable=Source

Ceci est à la fois contre-intuitif - car ce que nous ajoutons ici est le support du récepteur Bluetooth, et non le support 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 apporté cette modification, vous devrez redémarrer bluetoothd en exécutant sudo service bluetooth restart .

Si vous avez déjà associé votre appareil Android et votre ordinateur Ubuntu en essayant d’obtenir ce travail, vous devrez supprimer l’appariement des deux côtés et les ré-associer pour que Android reconnaisse Ubuntu comme périphérique audio disponible.

Une fois cela fait, 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, 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

Vous devez ensuite indiquer à PulseAudio d’acheminer cette entrée audio vers votre sortie / récepteur (tels que vos haut-parleurs ou un casque Bluetooth) en utilisant une connexion en boucle (une ligne droite d’une source à un récepteur).

Les versions ultérieures de PulseAudio ont peut-être une stratégie de module Bluetooth incluse et il est possible qu’elle ait déjà configuré 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 en boucle - si vous avez également installé le programme d’interface graphique pavucontrol - il suffit de charger le module de bouclage et de le configurer à l’aide de pavucontrol, paramètres. Le chargement du module se fait depuis la commande en utilisant pactl:

 pactl load-module module-loopback

Ne craignez rien si vous n’entendez encore rien, ou si vous obtenez des effets de retour étranges, nous devons indiquer au périphérique nouvellement créé de quelle source il doit entrer et quel récepteur lui envoyer en premier.

Ouvrez pavucontrol et ouvrez son onglet Configuration. Assurez-vous que votre périphérique Bluetooth apparaît ici (après avoir été associé à l'aide de blueman-manager ou d'un autre outil Bluetooth) et que le profil est défini sur A2DP. Basculez vers l'onglet Périphériques d'entrée et assurez-vous que votre périphérique s'affiche également et qu'il n'est pas en sourdine. Passez maintenant à l'onglet Enregistrement et faites en sorte que la connexion de bouclage nouvellement créée utilise votre appareil comme source avec la case de sélection située à côté du bouton Muet. Passez à 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 en 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 quel que soit le récepteur que vous avez sélectionné. Lorsque votre appareil est déconnecté, le périphérique de bouclage se rabat sur un récepteur et une source disponibles, ce qui peut ne pas être souhaitable, alors assurez-vous de désactiver le périphérique de bouclage jusqu'à ce que vous en ayez besoin. La connexion en boucle restaure le même récepteur / source la prochaine fois que le même périphérique Bluetooth est connecté, grâce au module - * - modules de restauration.

Si cela ne fonctionne pas ou si vous n’avez pas installé pavucontrol, vous pouvez configurer le bouclage à l’aide de la méthode suivante:

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

(Remplacez $BTSOURCE par le nom source de votre périphérique Bluetooth par PulseAudio, par exemple bluez_source.14_DA_E9_2A_D7_57 ; et remplacez $SINK par le nom de la sortie PulseAudio à 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 récepteur actif, et le modifier ultérieurement via pavucontrol.

  • Vous pouvez trouver $SINK avec pactl list sinks , il est affiché après Name:
  • De même, vous pouvez voir le $BTSOURCE avec pactl list sources
  • L'argument source_dont_move empêche la connexion en boucle de retomber sur une autre source audio lorsque le périphérique Bluetooth est déconnecté. Il est plutôt retiré et vous devrez le configurer à nouveau la prochaine fois.

Voici à quoi un exemple ressemblerait (N'oubliez pas de remplacer : par _ 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 secours échoue, essayez de supprimer l’argument source_dont_move=yes , il a été rendu disponible en premier dans la version 1.0. Veillez toutefois à supprimer cette connexion en boucle avant de déposer cet audio, ou si, par exemple, le microphone de votre ordinateur portable n'est pas activé, vous risquez de recevoir de très mauvaises réactions. Pour supprimer cette connexion de bouclage manuellement, exécutez:

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

Encore une fois, remplacez $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 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:

réponse donnée slangasek 02.03.2012 - 23:22
la source
12

J'utilise blueman, installé depuis le centre du logiciel Ubuntu. Cliquez avec le bouton droit sur l'icône blueman * - & gt; "services locaux" - & gt; audio- & gt; Vérifiez que la "réception audio avancée" est inclinée. Btw je l'utilise pour écouter dans mon ordinateur portable Ubuntu 11.10 ce que je joue sur mon téléphone Android.

* L'icône blueman est affichée dans le coin inférieur droit de gnome shell + ubuntu 11.10, c'est mon cas. J'espère que c'est utile d'une certaine manière pour vous.

    
réponse donnée user47059 02.03.2012 - 22:20
la source
7

C'est vraiment simple maintenant dans Ubuntu 12.04

Connectez votre périphérique Bluetooth

Recherchez votre périphérique Bluetooth et prenez note de son numéro de source:

pactl list sources 

Réalisez un bouclage pour le périphérique Bluetooth:

pactl load-module module-loopback source=$SOURCE_NUMBER  

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

Par exemple, j'ai saisi les éléments suivants pour que la lecture audio fonctionne:

$ pactl load-module module-loopback source=3  

C'est ça! J'ai trouvé la solution dans la réponse supérieure un peu compliquée, alors je l'ai simplifiée de cette façon (beaucoup moins de saisie et de copier / coller). Bien que ma solution sera probablement rompue si vous supprimez tous les périphériques audio répertoriés avant le périphérique Bluetooth de 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 périphérique de bouclage que vous avez créé:

pactl list short modules

Supprimer le périphérique de bouclage:

pactl unload-module $MODULE_NUMBER

Les réponses précédentes ont été écrites avant 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 exécutant CyanogenMod 9.1.0).

Il existe probablement un moyen de tirer parti de dbus-monitor en utilisant un script shell pour surveiller les connexions 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.

    
réponse donnée Toasty 29.08.2012 - 17:09
la source
3

Pour 13.04, associez votre périphérique source au portable ubuntu et ça marche! Très cool de trouver que c'était aussi facile maintenant.

    
réponse donnée user184485 16.08.2013 - 02:14
la source
1

Dans Ubuntu 16.04, cela fonctionne parfaitement.

    
réponse donnée mniess 17.08.2016 - 23:39
la source
0

Une solution encore plus simple que la réponse.

Vous pouvez simplement y aller

sudo apt-get install pulseaudio*

Puis redémarrez. Après le redémarrage, connectez-vous à votre Bluetooth et jouez simplement la musique sur votre téléphone. Tout sera transmis à votre ordinateur et diffusé sur les haut-parleurs de l'ordinateur.

Et oui! vous êtes les bienvenus.

    
réponse donnée Adel Abula - MageBinary 24.12.2014 - 05:52
la source

Lire d'autres questions sur les étiquettes