¿Cómo usar un micrófono con auriculares bluetooth en Ubuntu?

4

Tengo un auricular bluetooth (Sennheiser MM 550-X) conectado a mi computadora a través de un dongle USB bluetooth (Asus USB-BT400). Estoy ejecutando Ubuntu 14.10. Me gustaría configurar los auriculares como salida (auriculares) y como fuente de entrada (el micrófono).

En primer lugar, los auriculares se emparejan con la computadora: ingrese la descripción de la imagen aquí

En la configuración de sonido de Ubuntu, si configuro el auricular en modo "A2DP", puedo enviar el sonido de la computadora al auricular. Pero configurar la fuente de entrada como mi auricular cambia el modo de salida a HSP / HFP y ya nada funciona (ni salida de sonido ni micrófono)

Según mi investigación en Internet, entiendo que solo el modo HSP / HFP puede hacer que el micrófono funcione. Además, el dongle utiliza un conjunto de chips Broadcom BCM20702A0 y encontré algunos informes de errores al respecto, pero no estoy seguro de si todavía hay problemas o no con este conjunto de chips.

¿Cómo hacer funcionar el micrófono?

Gracias !

Editar: agregar salida de lsusb:

Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 002: ID 0d3d:0040 Tangtop Technology Co., Ltd 
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0b05:17cb ASUSTek Computer, Inc. 
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Edit2: actualización a la respuesta Jeremy31. Mi auricular es 00: 16: 94: 0F: 23: C6

dmesg | cola:

[35677.706802] usbcore: deregistering interface driver btusb
[35677.709252] Bluetooth: hci0 urb ffff8800d5ec6840 failed to resubmit (2)
[35690.999061] usbcore: registered new interface driver btusb
usuario368507
fuente
¿Puedes agregar el resultado de lsusbtu pregunta? Creo que el BCM20702A0 es uno de los dispositivos bluetooth que necesitan firmware de patchram para usar HSP / HFP
Jeremy31

Respuestas:

1

Para obtener el firmware

wget https://www.dropbox.com/s/hjd2uvnkki5i0f8/fw-0b05_17cb.hcd
sudo cp fw-0b05_17cb.hcd /lib/firmware/
sudo cp fw-0b05_17cb.hcd /lib/firmware/brcm/BCM20702A0-0b05-17cb.hcd
sudo modprobe -r btusb
sudo modprobe btusb
pactl load-module module-bluetooth-discover

Luego vea si dmesg muestra que el firmware se está cargando

dmesg | tail

Entonces deberías poder probar tus auriculares

Jeremy31
fuente
Edité mi respuesta
user368507
Puedo usar mi auricular Philips SHB4000 como dispositivo de entrada / salida con un bluetooth BCM20702A0 y veo un mensaje en dmesg que muestra el firmware cargado Bluetooth: hci0: BCM: firmware hci_ver=06 hci_rev=153a lmp_ver=06 lmp_subver=220econ el kernel 3.16.0-33
Jeremy31
Lo tengo funcionando. Haré una respuesta que tenga todos los detalles, para otras personas. Solo para información, ¿dónde / cómo obtuvo el archivo .hcd? Funciona pero utilicé uno diferente que también funciona. No sé cómo agradecer que considerar esta respuesta no está funcionando ...
user368507
La respuesta unix.stackexchange.com/questions/189790/… es similar a lo que hago, excepto que uso una fuente de controlador diferente, un archivo llamado Bluetooth_Win7-8-8-1_V6515800_12009860 y realicé un trabajo para hacer un archivo para encontrar el nombre de archivo hexadecimal para usar. dropbox.com/s/molbtv7bohxfbez/broadcomhexnames2.ods?dl=0 pero solo se puede usar con el archivo de controlador que indiqué. Creo que si responde a su propia pregunta, puede marcarla como aceptada después de 2 días
Jeremy31
1
Usé exactamente este controlador también. ¿Cómo es que no tenemos el mismo .hcd? Usé BCM20702A1_001.002.014.1315.1347.hex
user368507
1

El problema es con el controlador btusb y el dongle asus USB-BT400. Este dongle necesita un firmware. Para obtener el firmware, descargue el controlador de Windows más reciente aquí (sección Bluetooth): http://support.asus.com/download.aspx?SLanguage=en&p=1&s=45&m=MAXIMUS+VI+FORMULA&os=30&hashedid=Dbn0i1Jz1yusKO7u

Extrae el archivo .zip. Hay muchos firmwares, así que tenemos que encontrar el correcto. Edite el archivo bcbtums-win7x86-brcm.inf (por ejemplo), ubique la sección de su dongle buscando su ID de producto usb en el archivo (sin distinción entre mayúsculas y minúsculas). La sección hace referencia a un archivo .hex, en mi caso "BCM20702A1_001.002.014.1315.1347.hex".

Descargue hex2hcd aquí: https://github.com/jessesung/hex2hcd Compílelo y cree un archivo .hcd a partir del archivo .hex identificado previamente. Ahora tenemos el firmware.

Parece que el controlador btusb no intenta cargar el firmware para este dongle, que probablemente sea un error (?). Instale linux-source-3.16.0 para obtener las fuentes. En btusb.c realiza esta pequeña modificación:

@@ -106,7 +106,7 @@ static const struct usb_device_id btusb_table[] = {
        { USB_DEVICE(0x0489, 0xe042) },
        { USB_DEVICE(0x04ca, 0x2003) },
        { USB_DEVICE(0x0b05, 0x17b5) },
-       { USB_DEVICE(0x0b05, 0x17cb) },
+       { USB_DEVICE(0x0b05, 0x17cb), .driver_info = BTUSB_BCM_PATCHRAM },
        { USB_DEVICE(0x413c, 0x8197) },

        /* Foxconn - Hon Hai */

Compile los módulos (tuve que compilar el núcleo antes para evitar un "error de formato Exec" al cargar el nuevo módulo). Haga una copia de seguridad del módulo original y sobrescríbalo con el nuevo btusb.ko (en mi caso, estaba en /lib/modules/3.16.0-33-generic/kernel/drivers/bluetooth/btusb.ko)

Coloque el archivo .hcd en: /lib/firmware/brcm/BCM20702A0-0b05-17cb.hcd (adapte el nombre si es necesario).

Ahora podemos recargar el controlador btusb:

modprobe -r btusb; modprobe btusb

dmesg debería mostrar una línea como:

[52.121571] Bluetooth: hci0: BCM: firmware hci_ver = 06 hci_rev = 1543 lmp_ver = 06 lmp_subver = 220e

¡Ahora el perfil HSP / HFP está funcionando! Lo que significa que el auricular se puede usar en entrada y salida.

usuario368507
fuente
Buena captura, perdí esa línea en btusb.c y vi la de la línea 120 que habría cubierto su dispositivo si no fuera por la línea 109. No debería tener que construir todo el núcleo si usa la terminal desde el / drivers / bluetooth / carpeta y cp /boot/config-$(uname -r) .config, y cp /usr/src/linux-headers-$(uname -r)/Module.symvers Module.symversentonces usted puede hacer sus módulos Bluetooth con make -C /lib/modules/$(uname -r)/build M=$PWD modules Si actualiza el kernel, y luego cambiar en el directorio de origen bluetooth ymake -C /lib/modules/$(uname -r)/build M=$PWD clean
Jeremy31
Luego copie la configuración y Modules.symvers y cree nuevos módulos que puedan funcionar en el nuevo núcleo. Algunas veces se hacen demasiados cambios en un nuevo núcleo para que funcione con el código fuente anterior, pero muchas veces funcionará
Jeremy31
Gracias. Me perdí la parte Module.symvers
user368507