¿Puedo usar mi computadora como un receptor A2DP / altavoz bluetooth?

40

Primero, el problema: estoy usando un reproductor de MP3 Cowon como mi reproductor de música principal con tapones para los oídos básicos.

Ofrece A2DP y me gustaría que mi netbook (con UNE 10.04) actúe como receptor.

Algunos recursos en la web sobre a2dp, pero la mayoría están desactualizados:

Pierre-Yves Gillier
fuente

Respuestas:

47

Para usar su máquina Ubuntu como un dispositivo Bluetooth a2dp, primero debe configurarlo para que se registre como un punto final "sumidero a2dp".

El paquete bluez en Ubuntu (10.04 y superior) incluye una utilidad llamada sdptool que puede usarse para verificar si un dispositivo Bluetooth está configurado como un receptor a2dp o no. Aquí está la salida de sdptool ejecutada en mi auricular Bluetooth (la dirección se toma del cuadro de diálogo "Configuración de Bluetooth" en el centro de control de gnome):

$ 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

$

y aquí está el resultado cuando se ejecuta contra mi máquina Ubuntu local:

$ sdptool search --bdaddr local a2snk
Searching for a2snk on FF:FF:FF:00:00:00 ...
$

Esto muestra que la máquina Ubuntu no se anuncia como un sumidero a2dp. Sin embargo, se está publicitando como una fuente 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

Esto permite que la máquina Ubuntu se empareje correctamente con los auriculares como fuente de audio, pero no permite usar la máquina Ubuntu como salida (receptor) para audio Bluetooth.

Si edita /etc/bluetooth/audio.conf, puede habilitar el soporte de sumidero a2dp agregando esta línea debajo de la [General]sección:

  Enable=Source

Esto tiene un nombre contradictorio, ya que lo que estamos agregando aquí es la compatibilidad con el receptor Bluetooth, no la compatibilidad con la fuente, y en contradicción con el comentario en este archivo que afirma que todos los servicios implementados están habilitados de forma predeterminada. :(

Después de realizar este cambio, deberá reiniciar bluetoothd ejecutando sudo service bluetooth restart.

Si previamente ha emparejado su dispositivo Android y su computadora Ubuntu mientras intentaba hacer este trabajo, necesitará eliminar el emparejamiento en ambos lados y volver a emparejarlos para que Android reconozca Ubuntu como un dispositivo de audio disponible.

Una vez que haya hecho esto, el dispositivo Android debería aparecer como un dispositivo de entrada en PulseAudio. Si PulseAudio no detecta la nueva fuente de audio Bluetooth, es posible que deba instalar y cargar el módulo Bluetooth, desde la línea de comandos:

 sudo apt-get install pulseaudio-module-bluetooth
 pactl load-module module-bluetooth-discover

Luego, debe decirle a PulseAudio que enrute esta entrada de audio a su salida / receptor (como sus altavoces o auriculares Bluetooth) utilizando una conexión de bucle invertido (una línea recta desde una fuente a un receptor).

Las versiones posteriores de PulseAudio pueden tener una política de módulo bluetooth incluida y puede que ya haya configurado un dispositivo de bucle invertido para usted, pero este no parece ser el caso más común.

Una forma semiautomática para configurar la conexión de bucle invertido, si también tiene instalado el programa GUI de pavucontrol, es simplemente cargar el módulo de bucle invertido y configurarlo mediante pavucontrol, ya que PulseAudio recordará la configuración. La carga del módulo se realiza desde el comando usando pactl:

 pactl load-module module-loopback

No temas si aún no escuchas nada, o si obtienes efectos de retroalimentación extraños, tenemos que decirle al dispositivo recién creado de qué fuente recibir entrada y a qué sumidero enviar primero la salida.

Abra pavucontrol y abra su pestaña Configuración. Asegúrese de que su dispositivo Bluetooth aparezca aquí (después de emparejarlo con blueman-manager u otra herramienta Bluetooth) y que el perfil esté configurado en A2DP. Cambie a la pestaña Dispositivos de entrada y asegúrese de que su dispositivo aparezca aquí también y que no esté silenciado. Ahora cambie a la pestaña Grabación y haga que la conexión de bucle invertido recién creada use su dispositivo como fuente con el cuadro de selección junto al botón de silencio. Cambie a la pestaña Reproducción para seleccionar el sumidero que la conexión de bucle invertido debe usar de la misma manera. Si el dispositivo de bucle invertido no aparece en las pestañas, asegúrese de que todas las transmisiones se muestren usando el cuadro de selección en la parte inferior de cada pestaña.

Ahora debería escuchar el audio de su dispositivo, si se está reproduciendo, en sus altavoces o en cualquier receptor de salida que haya seleccionado. Cuando su dispositivo está desconectado, el dispositivo de bucle invertido recurrirá a un sumidero y fuente disponible, lo que puede no ser deseable, así que asegúrese de silenciar el dispositivo de bucle invertido hasta que lo necesite. La conexión de bucle invertido restaurará el mismo receptor / fuente la próxima vez que se conecte el mismo dispositivo Bluetooth gracias al módulo - * - módulos de restauración.

Si eso no funciona , o si no tiene instalado pavucontrol, puede configurar el loopback usando el siguiente método:

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

(Reemplace $BTSOURCEcon el nombre de la fuente de su dispositivo Bluetooth como lo ve PulseAudio, por ejemplo bluez_source.14_DA_E9_2A_D7_57; y reemplácelo $SINKcon el nombre de la salida de PulseAudio a la que desea enviar la transmisión de audio, por ejemplo:. alsa_output.pci-0000_00_1b.0.analog-stereoPuede omitir por completo el argumento del receptor y hacer que retroceda a un fregadero activo, y cámbielo más tarde a través de pavucontrol.)

  • Puedes encontrar $SINKcon pactl list sinks, se muestra despuésName:
  • Del mismo modo puedes ver el $BTSOURCEconpactl list sources
  • El source_dont_moveargumento evita que la conexión de bucle invertido vuelva a caer a otra fuente de audio cuando se desconecta el dispositivo Bluetooth. En su lugar, se elimina y tendrá que configurarlo de nuevo la próxima vez.

Así es como se vería un ejemplo (¡recuerde reemplazarlo :con _en la dirección 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 la carga del módulo de respaldo falla, intente eliminar el source_dont_move=yesargumento, primero estuvo disponible en la versión 1.0. Sin embargo, tenga cuidado de eliminar esta conexión de bucle invertido antes de soltar este audio, o si, por ejemplo, el micrófono de su computadora portátil no está silenciado, puede recibir comentarios muy malos. Para abandonar esta conexión de bucle invertido manualmente cuando haya terminado, ejecute:

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

Nuevamente, reemplácelo $BTSOURCEcon el nombre de la fuente PulseAudio que se refiere a su dispositivo Bluetooth. También puede descargar el módulo utilizando la identificación devuelta por el comando 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

Referencias

slangasek
fuente
¿podemos cambiar el mapa de canales para un dispositivo en particular?
Prakash V Holkar
hola theree y gracias por la guía detallada. El comando pactl load-module module-bluethooth-discoverfalla en ubuntu studio 14.04. Por lo tanto, no veo ninguna bluezfuente pulseaudio, aunque mi teléfono ve correctamente la PC como un receptor de audio. ¿Algunas ideas?
nass
si pactl list sources shortno muestra la fuente de bluez para usted, he encontrado dos posibles soluciones: llame a gdbus call --system --dest org.bluez --object-path /org/bluez/XXX/hci0/dev_XX_XX_XX_XX_XX_XX --method org.bluez.AudioSource.Connectwhere (la ruta incluye la dirección BD del dispositivo y la ruta del adaptador con la que puede obtener gdbus call --system --dest org.bluez --object-path / --method org.bluez.Manager.DefaultAdapter). O use d-feet como se explica aquí . De lo contrario, conéctese del lado del teléfono y comience a reproducir algo.
Treviño
Todavía no veo ninguna fuente de bluez apareciendo. Linux Mint 17.3 "Rosa" aquí.
donquixote
1
¡Guauu! con cambios mínimos (/etc/bluetooth/main.conf en lugar de audio.conf) esto funciona en Rasbian. ¡Gracias! (No se necesita configuración de bucle invertido en ese sistema operativo)
jamie
13

Yo uso blueman, instalado desde el centro de software de Ubuntu. Al hacer clic con el botón derecho en el ícono de blueman * -> "servicios locales" -> audio-> Verifique que se indique "recepción de audio avanzada" Por cierto, lo uso para escuchar en mi laptop Ubuntu 11.10 lo que juego en mi teléfono Android.

* El icono de Blueman se muestra en la esquina inferior derecha en gnome shell + ubuntu 11.10, ese es mi caso. Espero que esto sea útil de alguna manera para ti.

user47059
fuente
La interfaz de configuración de blueman para audio solo establece el valor Enable = Source en /etc/bluetooth/audio.conf, por lo que no veo cómo esto permitiría que Android use una computadora como salida de audio.
slangasek
ok, por lo que si fijo en audio.conf y luego desvincular de ambos lados de la conexión, que parece ser suficiente para que Android ver el ordenador como un disipador de audio después de todo ...
slangasek
Lo intenté y no pude reconocerlo como el receptor de audio. : - /
Jorge Castro
blueman trabajó para mí en 12.04 con cero problemas además del hecho de que terminé con dos iconos de bluetooth en mi applet indicador.
HDave
7

Es realmente simple ahora en Ubuntu 12.04

Conecte su dispositivo bluetooth

Busque su dispositivo bluetooth y tome nota de su número de origen:

pactl list sources 

Haga un loopback para el dispositivo bluetooth:

pactl load-module module-loopback source=$SOURCE_NUMBER  

Donde $ SOURCE_NUMBER es el número que tomó nota anteriormente.

Por ejemplo, ingresé lo siguiente para que la reproducción de audio funcione:

$ pactl load-module module-loopback source=3  

¡Eso es! Encontré que la solución en la respuesta superior era un poco complicada, así que la simplifiqué de esta manera (mucho menos escribiendo y copiando / pegando). Aunque mi solución probablemente se romperá si eliminas los dispositivos de audio enumerados antes del dispositivo bluetooth pactl list sources.

Además, no olvide quitar el módulo de bucle invertido antes de desconectar el dispositivo bluetooth:

Tome nota del número de módulo del dispositivo de bucle invertido que creó:

pactl list short modules

Retire el dispositivo de bucle invertido:

pactl unload-module $MODULE_NUMBER

Las respuestas anteriores se escribieron antes del lanzamiento de 12.04, así que estoy seguro de que hubo algunos cambios. Por ejemplo, no tuve que habilitar manualmente el uso de dispositivos bluetooth como fuente de audio (estaba habilitado de forma predeterminada). Sin embargo, a veces tengo que alternar el perfil "Media Audio" en la configuración de mi bluetooth en mi teléfono (Samsung Captivate con CyanogenMod 9.1.0).

Probablemente haya una manera de aprovechar dbus-monitor mediante el uso de un script de shell para observar las conexiones del dispositivo bluetooth A2DP y cargar automáticamente un módulo de bucle invertido, pero eso está un poco sobre mi cabeza.

Esperemos que ya no necesitemos hacer esto manualmente en Ubuntu 12.10.

Tostado
fuente
Después de la carga módulo de bucle de retorno para los sumideros particulares, podemos cambiar el mapa de canales de módulo-loopback De particular dispositivo a la izquierda o derecha
Prakash V Holkar
3

Para 13.04, empareje su dispositivo fuente con la computadora portátil ubuntu y ¡simplemente funciona! Es genial descubrir que ahora era así de fácil.

usuario184485
fuente
2

En Ubuntu 16.04 esto funciona desde el primer momento.

mniess
fuente
Lo mismo, aunque el siguiente error (no informado) lo estaba deteniendo, atrapado en el diario del sistema: askubuntu.com/questions/689281/…
ThorSummoner
0

Solución aún más fácil que la respuesta.

Puedes simplemente ir

sudo apt-get install pulseaudio*

Luego reiniciar. Después de reiniciar, conéctese a su Bluetooth y simplemente reproduzca la música en su teléfono. Todo se transmitirá a su computadora y se reproducirá en los altavoces de la computadora.

¡Y si! De nada.

Adel Abula - MageBinary
fuente
apt-getusa expresiones regulares, no comodines. Por lo tanto, no tiene idea de lo que se instalará usando pulseaudio*(pista: no son solo los paquetes que comienzan con pulseaudi). Y PulseAudio ya es parte de la instalación predeterminada de Ubuntu.
muru
¡Sí! Pero esto funcionará para todas las personas perezosas que quieren que las cosas funcionen al instante.
Adel Abula - MageBinary