Audifonos Stereo Bluetooth en Ubuntu 8.10 con PulseAudio (A2DP)
Hace mucho que no escribía un post, pero aquí estoy de vuelta, esta entrada viene con historia.
Ayer me compré unos audífonos estéreo bluetooth (Sony DR-BT21IK por si a alguien le interesa); la verdad son bastante buenos, un precio razonable, o asi lo es por lo menos acá en Chile, me costaron lo mismo que los 2 audífonos con cable que se me han muerto (cable cortado) este año, y ademas tienen buen sonido, aunque no espectacular, son mejores que mis panasonic anteriores de todas maneras.
A principios de ali también tuve unos audífonos bluetooth (LG sonido pésimo, los devolví, eran una estafa); los cuales podía hacer funcionar perfectamente con gstreamer, pero con bastantes problemas, el que mas me molestaba era el no poder reproducir mas de 2 sonidos al mismo tiempo (ej: música y algún podcast o video de youtube) pero ahora que pulseaudio es el servidor de sonido por defecto de Ubuntu se abre un mundo nuevo de posibilidades; donde no solo pulse se encarga de hacer el mixing, sino que también puedes dirigir la salida de audio POR APLICACIÓN, ademas de manejar el volumen independientemente de la salida normal (parlantes o jack).
Ok.. el tema es bien simple:
- Antes que nada debes emparejar los audifonos con tu computador; la forma mas simple es usar la aplicación que provee Ubuntu (bluez), es el ícono de bluetooth en el área de notificación
- Debes instalar algunos paquetes; mas que nada son para configurar pulseaudio (lo siento por aquellos que no lo ocupen, de todas formas es el servidor de audio por defecto en Intrepid), asi que abrimos una consola y ponemos
sudo aptitude install pulseaudio-utils padevchooser paprefs pavucontrol
esto instalará unas utilidades de consola para pulseaudio y otras para el entorno gráfico (son gtk+) - Para poder utilizar nuestro headset usaremos Alsa; es por esto que debemos obtener la dirección MAC de tus audífonos, para esto debes ponerlos en “modo de emparejamiento” (pairing mode) y en la querida cosola escribimos
hcitool scan
esto nos devolverá algo así
Scanning ...
00:1E:BA:36:82:15 DR-BT21G
00:1F:E2:E9:CE:F6 Sconfro
00:16:E8:ED:68:E0 K510i
Esos numeros y letras extraños es la MAC; en mi caso la que importa es el primer resultado - Ahora debemos editar un archivo de texto; en la consola (asumiendo que esta en el home del usuario) ejecutamos
gedit .asoundrc
o el editor que prefieras, en el archivo debemos agregar el siguiente texto.
pcm.headset{
type bluetooth
device [Aqui la MAC del punto anterior, sin los corchetes]
profile "auto"
}
con esto ALSA sabrá que tenemos una salida de audio bluetooth con esa MAC; donde dice headset puedes poner otro nombre, solo que no sea “bluetooth” u otro nombre reservado de alsa
guarda y cierra el editor - Ahora volvemos a la consola; porque debemos contarle a pulseaudio que tenemos una nueva salida; para esto usamos una de las utilidades que instalamos en el punto 1
pactl load-module module-alsa-sink device=headset
pactl load-module module-alsa-source device=headset
La primera linea le dice a pulseaudio que hay un dispositivo alsa que es una salida de audio (sink); mientras la segunda le dice que hay una entrada, pongo esto porque mis audifonos tienen micrófono, aunque no lo he probado.
Desafortunadamente esto se debe hacer cada vez que queramos usar nuestros audífonos y hayamos reiniciado el sistema; puedes hacerlo un script y que se ejecute al inicio, si no encuentra el dispositivo simplemente fallará y tendrás que ejecutarlo manualmente. Debe haber alguna forma de que ejecute los comandos al emparejar el dispositivo con el PC, solo que aun no la he descubierto.
Hasta aqui tenemos todo listo en cuanto a configuración
Hey! esto no funciona, quiero mi dinero de vuelta
Aun falta algo que hacer… decir que mande el sonido a los audifonos; hay algunas variantes.. asi que primero hechamos a correr una útil aplicación: “PulseAudio device chooser” (padevchooser en una consola o en el menu Aplicaciones>Sonido y video de gnome); esta corre en el área de notificación. Si le hacemos click izquierdo nos mostrará un menu, por el momento nos interesa el “Manager…”.
En la pestaña devices podemos ver que hay una salida llamada alsa_output.headset (o como le hayas puesto a la salida en alsa); si en el menú de padevchooser vas a default sink>other y pones ese nombre.. bueno todo el audio saldrá por el headset!
Por otra parte si en el menú de padevchooser entramos a “volume control” y tenemos alguna aplicación reproduciendo audio podemos dirigir el stream de esa aplicación en particular a nuestro headset.. práctico ¿no?
Demasiado bueno ¿no?
Si bien funciona de maravilla para lo que yo ocupo hay algunos detalles que están sin resolver:
- Hay que ejecutar los comandos del punto 5 para poder comenzar a utilizar tu headset
- Hay que ingresar el sink manualmente cada reinicio (cuando tenga mas tiempo veré como hacerlo por consola para ponerlo en un script)
- No todas las aplicaciones usan PulseAudio; no he tenido tiempo de probar, pero en teoría algunos juegos no enviarian el audio a los audifonos
- Al apagar los audifonos sin volver el sink a default o con aplicaciones dirigiendo su salida de audio al headset, pulseaudio tiende a caer, otra vez seria trabajo para un script.
- Ya no puedo perder tiempo productivo desenredando el cable de 4 metros de mis antiguos audifonos
First!
Ok, no se como va a salir esto; pero por algo estoy aqui ¿o no?


