Conectar Raspberry Pi por Bluetooth a unos Altavoces.


42 posts   Page 1 of 2   1, 2
by SeeN » Fri Dec 21, 2012 10:43 am
Hola, alguno sabe podemos conectar la Raspberry Pi a unos altavoces via Bluetooth, en concreto tengo los siguientes Creative Ziisound D3x, el fabricante dice que cualquier dispositivo con bluetooth es compatible, he probado con el movil y perfecto. Se que tengo que utilizar la tegnologia Bluetooth A2DP, utilizo Raspbian Wheezy y he instalado los paquetes, bluetooth, bluez-utils, blueman, hago un scan con "hcitool scan" y me los encuentra.
Y ahora que? he tratado de conectarlos como si se tratara de un teclado o raton, pero no vale.

Alguna idea?

Saludos!
Posts: 61
Joined: Sun Aug 05, 2012 6:34 pm
by SeeN » Fri Dec 21, 2012 11:02 am
He encontrado esto pero es para Arch Linux -> http://kmonkey711.blogspot.de/

Probaremos!
Posts: 61
Joined: Sun Aug 05, 2012 6:34 pm
by micerinos » Fri Dec 21, 2012 12:41 pm
En el enlace que pones, hacen lo contrario: recibir sonido por bluetooth y reproducir por unos altavoces conectados a las raspi. Mirate esto:
http://forums.debian.net/viewtopic.php?f=16&t=49867

Hacerlo con el applet es lo más sencillo. Además si lo configuras por medio de un script que se ejecute al inicio del sistema, pulse es tan listo que, si no detecta un bluetooth headset cuando arranca, desactivará esa salida. Por eso lo más cómodo es seleccionar manualmente con el applet. Lo único malo es que eso requiere conexión al gui de raspi.

Un saludo
Posts: 74
Joined: Fri Nov 09, 2012 11:15 am
Location: Madrid, Spain
by SeeN » Fri Dec 21, 2012 3:03 pm
Gracias!

De momento seguire buscando para hacerlo desde SSH, me da palo desmontar el chiringuito para conectarlo a la TV, nuevamente gracias!
Posts: 61
Joined: Sun Aug 05, 2012 6:34 pm
by micerinos » Fri Dec 21, 2012 4:45 pm
no necesitas conectarlo a la tele. Con o sin ssh (en WAN o en LAN), puedes conectar a un servidor de escritorio (tightvnc-server o x11vnc son las dos alternativas, para tu caso el primero tiene más sentido) sin necesidad de una pantalla física.

Por comandos con pulseaudio no es muy complicado tampoco (sobretodo si vas a lanzar el script por ssh cuando necesites conexión a los altavoces). Lo más coñazo era el pairing, con el simple-agent y similares tenía problemas a la hora de automatizar. Ahora no encuentro la información que estuve manejando hace unos meses. Cuando saque tiempo y lo encuentre te lo mando si todavía lo necesitas.

En teoría, lo más sencillo para tu caso es configurar una salida ALSA tipo a2dp/bluetooth y hacerla la salida por defecto, sin usar el pulseaudio. Yo estaba intentando la inversa (recibir audio por bluetooth sin usar pulseaudio) y fue un dolor de cabeza. Además bluez y su interfaz dbus están en pleno proceso de reestruccturación hacia la versión 5 y la documentación sobre el estado actual es bastante deficiente.

Un saludo
Posts: 74
Joined: Fri Nov 09, 2012 11:15 am
Location: Madrid, Spain
by SeeN » Sat Dec 22, 2012 10:13 am
Cuantos datos, gracias!
Buscare, de todas maneras si me puedes aportar la información que utilizaste te lo agradecería.

Saludos!
Posts: 61
Joined: Sun Aug 05, 2012 6:34 pm
by Lobo Blanco » Sun Dec 23, 2012 7:36 pm
un consejo. .. usa pulseaudio.

Instálalo y si está bien hecho detecta el dispositivo y lo configura solo.
Posts: 61
Joined: Wed Aug 08, 2012 3:54 pm
by SeeN » Mon Dec 24, 2012 10:44 am
Lobo Blanco wrote:un consejo. .. usa pulseaudio.

Instálalo y si está bien hecho detecta el dispositivo y lo configura solo.


Gracias, me podrías adjuntar algo de mas información.

Saludos!
Posts: 61
Joined: Sun Aug 05, 2012 6:34 pm
by Lobo Blanco » Mon Dec 24, 2012 12:09 pm
Busco un hueco y te lo miro.

A ver si te hago un pequeño tuto.
Posts: 61
Joined: Wed Aug 08, 2012 3:54 pm
by SeeN » Mon Dec 24, 2012 12:46 pm
Lobo Blanco wrote:Busco un hueco y te lo miro.

A ver si te hago un pequeño tuto.


Gracias!
Posts: 61
Joined: Sun Aug 05, 2012 6:34 pm
by Lobo Blanco » Mon Dec 24, 2012 3:59 pm
Necesito saber si tienes activado el tightvnc, es decir, posibilidad de acceder al en torno gráfico o sólo quieres usar la terminal (más pesado). En función de ello una forma u otra para conectar el BT.
Posts: 61
Joined: Wed Aug 08, 2012 3:54 pm
by Lobo Blanco » Mon Dec 24, 2012 4:15 pm
Necesito saber si tienes activado el tightvnc, es decir, posibilidad de acceder al en torno gráfico o sólo quieres usar la terminal (más pesado). En función de ello una forma u otra para conectar el BT.
Posts: 61
Joined: Wed Aug 08, 2012 3:54 pm
by SeeN » Mon Dec 24, 2012 4:30 pm
No utilizo entorno gráfico, pero si es necesario lo utilizare, siempre trabajo por SSH.

Gracias nuevamente.
Posts: 61
Joined: Sun Aug 05, 2012 6:34 pm
by Lobo Blanco » Wed Dec 26, 2012 8:56 am
Bueno he estado probando y he encontrado problemas con los paquetes Bluez y los módulos bluetooth de pulseaudio.

El primero he conseguido arreglarlo y emparejar, cosa que me era imposible por que no se habían instalado unos paquetes.

Lo primero es que yo estoy usando la última imagen de Raspbian de este mes.

Lo segundo y viendo lo que instalaste ejecuta lo siguiente:
sudo apt-get install python-gobject python2-gobject

Si te da problemas ejecuta:
sudo apt-get update --fix-missing

y luego:
sudo apt-get install python-gobject python2-gobject

esto es debido a que el comando "bluez-simple-agent" me daba un error que indicaba que faltaban los paquetes indicados antes.

luego pond en modo visible el dispositivo BT y ejecuta:
hcitool scan

devolverá algo como esto:
Scanning ...
00:1E:DE:28:20:2E Nokia BH-505
00:11:22:AA:BB:CC Nokia N95
00:33:44:DD:EE:FF BT81

el valor hexadecimal separado por dos puntos y de 6 parejas es la MAC de los dispositivos. El mio es el Nokia BH-505.

Luego ejecuta:
sudo bluez-simple-agent hci0 00:1E:DE:28:20:2E
RequestPinCode (/org/bluez/1806/hci0/dev_00_1E_DE_28_20_2E)
Enter PIN Code: 0000

Pregunta por el PIN y coloca el valor que indique las instrucciones de ese equipo; normalmente para dispositivos de audio es 0000 o 1234.

Si todo va bien, y es la primera vez que se empareja saldrá:
Release
New device (/org/bluez/1806/hci0/dev_00_1E_DE_28_20_2E)

Sí ya hubiese sido emparejado anteriormente con la Raspberry Pi saldría:
Creating device failed: org.bluez.Error.AlreadyExists: Already Exists

Luego:
sudo bluez-test-audio 00:1E:DE:28:20:2E -> sustituye la MAC por el de tu dispositivo

el dispositivo mostrará conexión pero para asegurarnos:
hcitool con

Debería devolver algo como esto:
Connections:
< ACL 00:1E:DE:28:20:2E handle 41 state 1 lm MASTER AUTH ENCRYPT

Sigo comprobando pero ya me dirás si te funciona.
Posts: 61
Joined: Wed Aug 08, 2012 3:54 pm
by Lobo Blanco » Wed Dec 26, 2012 9:01 am
A mi me conectan pero el problema persiste pues pulseaudio no detecta el dispositivo para configurarlo, no me permite ni hacerlo manualmente. Estoy revisando los pasos en el portátil para encontrar el problema en la Raspberry.
Posts: 61
Joined: Wed Aug 08, 2012 3:54 pm
by Lobo Blanco » Wed Dec 26, 2012 9:42 am
Realizando esto en mi portátil con Ubuntu 12.04 funciona perfectamente.

Una vez lanzado el comando:
sudo bluez-test-audio connect [MAC-Dispositivo_Bluetooth]

una vez conecta, pulseaudio lo muestra como salida de audio automáticamente.

Falta ver cuál es el problema en la Raspberry Pi.
Posts: 61
Joined: Wed Aug 08, 2012 3:54 pm
by Lobo Blanco » Wed Dec 26, 2012 10:44 am
Tengo en el portátil la versión Pulseaudio 2.1

Tengo que localizar la forma de instalarlo en la Raspberry pero no encuentro repositorios para ello.

¿Ayuda?
Posts: 61
Joined: Wed Aug 08, 2012 3:54 pm
by Lobo Blanco » Thu Dec 27, 2012 10:25 pm
¡Solucionado!

Ya encontré el problema.

Pasos a seguir para asegurar tener los paquetes necesarios:
  • sudo apt-get install bluez
  • sudo apt-get install python-gobject
  • sudo apt-get install pulseaudio-module-bluetooth
  • sudo apt-get install bluez-audio
  • sudo apt-get install python-dbus

Para emparejar usamos:
hcitools scan -> detectará el dispositivo y mostrará la MAC, recuerda tener en modo visible los altavoces BT.

-Resultado de ejemplo-
Scanning ...
00:1E:DE:28:20:2E Nokia BH-505

bluez-simple-agent hci0 [MAC] -> la mac va sin corchetes

-Ejemplo-
bluez-simple-agent hci0 00:1E:DE:28:20:2E

Pedira el PIN si nunca lo hemos emparejado con la Raspberry...
RequestPinCode (/org/bluez/1806/hci0/dev_00_1E_DE_28_20_2E)
Enter PIN Code: 0000PIN_de tu dispositivo(0000 o 1234)

y si no mostrará...
"Creating device failed: org.bluez.Error.AlreadyExists: Already Exists"

Luego escribimos lo siguiente:
bluez-test-audio 00:1E:DE:28:20:2E -> sustituye la MAC por el de tu dispositivo

Si te sale algo como esto...
ERROR:dbus.proxies:Introspect error on :1.1:/: dbus.exceptions.DBusException: org.freedesktop.DBus.Error.AccessDenied: Rejected send message, 2 matched rules; type="method_call", sender=":1.6" (uid=1000 pid=2084 comm="/usr/bin/python /usr/bin/bluez-test-audio connect ") interface="org.freedesktop.DBus.Introspectable" member="Introspect" error name="(unset)" requested_reply="0" destination=":1.1" (uid=0 pid=1884 comm="/usr/sbin/bluetoothd ")
Traceback (most recent call last):
File "/usr/bin/bluez-test-audio", line 22, in <module>
adapter_path = manager.DefaultAdapter()
File "/usr/lib/python2.7/dist-packages/dbus/proxies.py", line 70, in __call__
return self._proxy_method(*args, **keywords)
File "/usr/lib/python2.7/dist-packages/dbus/proxies.py", line 145, in __call__
**keywords)
File "/usr/lib/python2.7/dist-packages/dbus/connection.py", line 651, in call_blocking
message, timeout)
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.AccessDenied: Rejected send message, 2 matched rules; type="method_call", sender=":1.6" (uid=1000 pid=2084 comm="/usr/bin/python /usr/bin/bluez-test-audio connect ") interface="org.bluez.Manager" member="DefaultAdapter" error name="(unset)" requested_reply="0" destination=":1.1" (uid=0 pid=1884 comm="/usr/sbin/bluetoothd ")

Es un problema de permisos con el grupo bluetooth; antes sólo funcionaba con el comando sudo o estando en root pero es que pulse trabaja la configuración por usuario y por ello no configuraba el dispositivo bluetooth automáticamente; escribe:
sudo adduser pi bluetooth

reinicia el sistema y vuelve a escribir:
bluez-test-audio 00:1E:DE:28:20:2E -> sustituye la MAC por el de tu dispositivo

el dispositivo mostrará conexión pero para asegurarnos:
hcitool con

Debería devolver algo como esto:
Connections:
< ACL 00:1E:DE:28:20:2E handle 41 state 1 lm MASTER AUTH ENCRYPT

Comprobamos si pulseaudio ha configurado una nueva salida:
pactl list short sinks
0 alsa_output.platform-bcm2835_AUD0.0.analog-stereo module-alsa-card.c s16le 2ch 44100Hz SUSPENDED
1 bluez_sink.00_1E_DE_28_20_2E module-bluetooth-device.c s16le 1ch 8000Hz SUSPENDED

Efectivamente lo detecta y lo configura; como son auriculares lo pone en calidad baja pero podemos cambiarlo con los comandos apropiados, con tus altavoces puede que los reconozca con más calidad.

Luego procedemos a indicar a Pulseaudio cual es la salida por defecto que queremos, la salida BT:
pacm set-default-sink Num_salida -> el número es la identificación de la salida BT, en mi caso es 1

Dime que como te ha ido con esto, mientras veo que comando para dar los parámetros que necesitemos de calidad.
Posts: 61
Joined: Wed Aug 08, 2012 3:54 pm
by juliovegap » Mon Dec 31, 2012 6:21 pm
Muchas muchas gracias Lolo Blanco!!

Después de muchos días buscando con tu sencilla solución es como me funciona a mi también!!
Posts: 1
Joined: Mon Dec 31, 2012 6:12 pm
by Lobo Blanco » Mon Dec 31, 2012 7:28 pm
Me alegro.

lo que no se es si al compañero que abrió el hilo le habrá servido.

Acabo de encontrar un problemilla.

Cuando reproduzco audio que no es de 44Khz y 2 canales no sale audio.
Me pasa con una pista de 12khz y 1 canal. En mi portátil no pada pero en la Raspberry sí.
Posts: 61
Joined: Wed Aug 08, 2012 3:54 pm
by SeeN » Tue Jan 01, 2013 7:10 pm
Lobo Blanco wrote:Me alegro.

lo que no se es si al compañero que abrió el hilo le habrá servido.

Acabo de encontrar un problemilla.

Cuando reproduzco audio que no es de 44Khz y 2 canales no sale audio.
Me pasa con una pista de 12khz y 1 canal. En mi portátil no pada pero en la Raspberry sí.


Gracias Lobo Blanco, perdona por contestar tan tarde, entre las fiestas y el trabajo no he podido probar nada hasta ahora.

Todo Ok, hasta que cuando lanzo el comando:
bluez-test-audio connect 00:02:3C:2E:83:42

bluez-testTraceback (most recent call last):
File "/usr/bin/bluez-test-audio", line 40, in <module>
audio.Connect()
File "/usr/lib/python2.7/dist-packages/dbus/proxies.py", line 70, in __call__
return self._proxy_method(*args, **keywords)
File "/usr/lib/python2.7/dist-packages/dbus/proxies.py", line 145, in __call__
**keywords)
File "/usr/lib/python2.7/dist-packages/dbus/connection.py", line 651, in call_blocking
message, timeout)
dbus.exceptions.DBusException: org.bluez.Error.Failed: Connect Failed

Siguiremos probando, nuevamente gracias!
Posts: 61
Joined: Sun Aug 05, 2012 6:34 pm
by micerinos » Thu Jan 03, 2013 2:27 pm
Buenas,
acabo de mirar esto de enviar el audio por bluetooth con ALSA. No he podido testearlo, así que no puedo asegurar que funcione. Deberías eliminar pulseaudio para que funcione (sudo apt-get autoremove pulseaudio). Aqui está la pagina oficial del wiki de debian sobre el tema:
http://wiki.debian.org/Bluetooth/Alsa

El pairing inicial lo haces igual que con pulse, aunque después debería ser automáticamente gestionado por ALSA-BlueZ. La idea es crear una salida de ALSA que sea la de tus altavoces bluetooth, y configurarla como por defecto. Para ello, edita el archivo /etc/asound.conf añadiendo lo siguiente:
Code: Select all
  pcm.!default {
  type bluetooth
  device XX:XX:XX:XX:XX:XX
  profile "auto"
  }


Donde las Xs son la MAC de tu bluetooth headset. Si hay otra salida pcm por defecto, renómbrala. Reinicia el sistema y ya debería estar listo. Yo recibiré unos altavoces bluetooth en breve y podré probarlo. De momento, si alguien lo prueba que nos cuente a ver que tal. Lo más probable que puede fallar es o bien los permisos (grupos audio y bluetooth) y que el pairing no lo gestione automáticamente ALSA. En ese caso habría que preparar arrancar el simple-agent en background al inicio del sistema, editando /etc/rc.local por ejemplo. Creo que sería recomendable usar nohup para desligar el comando de la terminal y que se quede arrancado todo el tiempo.

Y así nos quitamos de encima pulseaudio, que aunque es mucho más flexible y configurable, para problemas sencillos, mejor soluciones sencillas. Por cierto, si alguien consigue configurar la rpi como un bluetooth headset que reciba audio por bluetooth y lo escupa directamente a los altavoces locales sin usar pulseaudio, que lo comunique. Yo acabé harto y decidí postponerlo para la primavera.

Feliz año!
Posts: 74
Joined: Fri Nov 09, 2012 11:15 am
Location: Madrid, Spain
by micerinos » Thu Jan 03, 2013 2:36 pm
Se me olvidaba. Con Bluez > 4.96 (en wheezy es 4.99) hay que añadir lo siguiente a la seccion [General] del archivo /etc/bluetooth/audio.conf

Code: Select all
 Disable=Media
 Enable=Socket
Posts: 74
Joined: Fri Nov 09, 2012 11:15 am
Location: Madrid, Spain
by Lobo Blanco » Fri Jan 04, 2013 3:09 pm
Lo he probado y no me funciona con esa configuración y ALSA.

¿Algo a tener en cuenta?
Posts: 61
Joined: Wed Aug 08, 2012 3:54 pm
by Lobo Blanco » Fri Jan 04, 2013 3:09 pm
SeeN wrote:
Lobo Blanco wrote:Me alegro.

lo que no se es si al compañero que abrió el hilo le habrá servido.

Acabo de encontrar un problemilla.

Cuando reproduzco audio que no es de 44Khz y 2 canales no sale audio.
Me pasa con una pista de 12khz y 1 canal. En mi portátil no pada pero en la Raspberry sí.


Gracias Lobo Blanco, perdona por contestar tan tarde, entre las fiestas y el trabajo no he podido probar nada hasta ahora.

Todo Ok, hasta que cuando lanzo el comando:
bluez-test-audio connect 00:02:3C:2E:83:42

bluez-testTraceback (most recent call last):
File "/usr/bin/bluez-test-audio", line 40, in <module>
audio.Connect()
File "/usr/lib/python2.7/dist-packages/dbus/proxies.py", line 70, in __call__
return self._proxy_method(*args, **keywords)
File "/usr/lib/python2.7/dist-packages/dbus/proxies.py", line 145, in __call__
**keywords)
File "/usr/lib/python2.7/dist-packages/dbus/connection.py", line 651, in call_blocking
message, timeout)
dbus.exceptions.DBusException: org.bluez.Error.Failed: Connect Failed

Siguiremos probando, nuevamente gracias!


¿Puedes indicar que hiciste paso a paso?
Posts: 61
Joined: Wed Aug 08, 2012 3:54 pm