如何在 Ubuntu 中使用蓝牙耳机麦克风?

use*_*507 6 sound pulseaudio microphone bluetooth

我有一个蓝牙耳机(Sennheiser MM 550-X)通过 USB 蓝牙加密狗(Asus USB-BT400)连接到我的电脑。我正在运行 Ubuntu 14.10。我想将耳机配置为输出(耳机)和输入源(麦克风)。

首先耳机与电脑配对: 在此处输入图片说明

在 Ubuntu 声音设置中,如果我将耳机配置为“A2DP”模式,我可以将声音从计算机发送到耳机。但是将输入源配置为我的耳机会将输出模式切换为 HSP/HFP 并且没有任何效果(声音输出或麦克风都没有)

根据我在互联网上的研究,我了解到只有 HSP/HFP 模式才能使麦克风工作。此外,加密狗使用 Broadcom BCM20702A0 芯片组,我发现了一些关于它的错误报告,但我不确定该芯片组是否仍然存在问题。

如何让麦克风工作?

谢谢 !

编辑:添加 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
Run Code Online (Sandbox Code Playgroud)

编辑 2:更新 Jeremy31 答案。我的耳机是 00:16:94:0F:23:C6

dmesg|尾:

[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
Run Code Online (Sandbox Code Playgroud)

use*_*507 2

问题出在 btusb 驱动程序和华硕适配器 USB-BT400 上。该加密狗需要固件。要获取固件,请在此处下载最新的 Windows 驱动程序(蓝牙部分): http://support.asus.com/download.aspx ?SLanguage=en&p=1&s=45&m=MAXIMUS+VI+FORMULA&os=30&hashedid=Dbn0i1Jz1yusKO7u

提取 .zip 文件。固件有很多,所以我们必须找到合适的固件。编辑文件 bcbtums-win7x86-brcm.inf(例如),通过在文件中搜索 USB 产品 ID(不区分大小写)找到加密狗的部分。该部分引用了一个 .hex 文件,在我的例子中为“BCM20702A1_001.002.014.1315.1347.hex”。

在这里下载 hex2hcd: https: //github.com/jessesung/hex2hcd 编译它并从之前识别的 .hex 文件生成 .hcd 文件。现在我们有了固件。

看起来 btusb 驱动程序不会尝试加载此加密狗的固件,这可能是一个错误(?)。安装 linux-source-3.16.0 以获取源代码。在 btusb.c 中进行一点修改:

@@ -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 */
Run Code Online (Sandbox Code Playgroud)

编译模块(我之前必须编译内核,以避免加载新模块时出现“Exec 格式错误”)。备份原始模块并用新的 btusb.ko 覆盖它(在我的例子中它位于 /lib/modules/3.16.0-33-generic/kernel/drivers/bluetooth/btusb.ko 中)

将 .hcd 文件放入:/lib/firmware/brcm/BCM20702A0-0b05-17cb.hcd(如果需要,请调整名称)。

现在我们可以重新加载 btusb 驱动程序:

modprobe -r btusb;modprobe btusb

dmesg 应显示如下行:

[52.121571]蓝牙:hci0:BCM:固件hci_ver = 06 hci_rev = 1543 lmp_ver = 06 lmp_subver = 220e

现在 HSP/HFP 配置文件正在运行!这意味着耳机可以用于输入和输出。