Ubuntu – Microphone not working on Bluetooth earbuds

bluetoothmicrophonesound

I have a Dell Inspiron 7580 laptop and I'm running Ubuntu 20.04. I've been trying to get my Jaybird Tarah Pro wireless headphones to work correctly. Sound output is working fine, but microphone input from the earbuds is not working.

I was able to pair the headphones in Ubuntu using the standard Bluetooth setup. But the Sound options under Settings only display the following choices:

Output Device:

  • Speakers – Internal Audio (laptop speakers)
  • Headphones – Jaybird Tarah Pro (headphone output, works correctly)

Input Device:

  • Headset Microphone – Internal Audio (doesn't seem to work)
  • Internal Microphone – Internal Audio (works, but uses laptop microphone)

Do I have to install extra software to get the Bluetooth mic working? Is there any way to find out if the microphone profile was detected in the Bluetooth device?

Thanks in advance

Edit 1

I tried to unpair and pair my headset and now I have a new option under Input Device:

Input Device:

  • Headset Microphone – Internal Audio
  • Internal Microphone – Internal Audio
  • Bluetooth Input – Jaybird Tarah Pro

Sound Settings

However, I've tried to select the last item and it doesn't seem to work. The level indicator doesn't move when there's sound.

Any ideas on how to fix that?

Edit 2

The output of pactl list cards is:

Card #0
    Name: alsa_card.pci-0000_00_1f.3
    Driver: module-alsa-card.c
    Owner Module: 23
    Properties:
        alsa.card = "0"
        alsa.card_name = "HDA Intel PCH"
        alsa.long_card_name = "HDA Intel PCH at 0xa5418000 irq 150"
        alsa.driver_name = "snd_hda_intel"
        device.bus_path = "pci-0000:00:1f.3"
        sysfs.path = "/devices/pci0000:00/0000:00:1f.3/sound/card0"
        device.bus = "pci"
        device.vendor.id = "8086"
        device.vendor.name = "Intel Corporation"
        device.product.id = "9dc8"
        device.product.name = "Cannon Point-LP High Definition Audio Controller"
        device.form_factor = "internal"
        device.string = "0"
        device.description = "Áudio interno"
        module-udev-detect.discovered = "1"
        device.icon_name = "audio-card-pci"
    Profiles:
        input:analog-stereo: Entrada de Estéreo analógico (sinks: 0, sources: 1, priority: 65, available: yes)
        output:analog-stereo: Saída de Estéreo analógico (sinks: 1, sources: 0, priority: 6500, available: yes)
        output:analog-stereo+input:analog-stereo: Duplex estéreo analógico (sinks: 1, sources: 1, priority: 6565, available: yes)
        output:hdmi-stereo: Saída de Digital Stereo (HDMI) (sinks: 1, sources: 0, priority: 5900, available: no)
        output:hdmi-stereo+input:analog-stereo: Saída de Digital Stereo (HDMI) + Entrada de Estéreo analógico (sinks: 1, sources: 1, priority: 5965, available: no)
        output:hdmi-surround: Saída de Digital Surround 5.1 (HDMI) (sinks: 1, sources: 0, priority: 800, available: no)
        output:hdmi-surround+input:analog-stereo: Saída de Digital Surround 5.1 (HDMI) + Entrada de Estéreo analógico (sinks: 1, sources: 1, priority: 865, available: no)
        output:hdmi-surround71: Saída de Digital Surround 7.1 (HDMI) (sinks: 1, sources: 0, priority: 800, available: no)
        output:hdmi-surround71+input:analog-stereo: Saída de Digital Surround 7.1 (HDMI) + Entrada de Estéreo analógico (sinks: 1, sources: 1, priority: 865, available: no)
        output:hdmi-stereo-extra1: Saída de Digital Stereo (HDMI 2) (sinks: 1, sources: 0, priority: 5700, available: no)
        output:hdmi-stereo-extra1+input:analog-stereo: Saída de Digital Stereo (HDMI 2) + Entrada de Estéreo analógico (sinks: 1, sources: 1, priority: 5765, available: no)
        output:hdmi-surround-extra1: Saída de Digital Surround 5.1 (HDMI 2) (sinks: 1, sources: 0, priority: 600, available: no)
        output:hdmi-surround-extra1+input:analog-stereo: Saída de Digital Surround 5.1 (HDMI 2) + Entrada de Estéreo analógico (sinks: 1, sources: 1, priority: 665, available: no)
        output:hdmi-surround71-extra1: Saída de Digital Surround 7.1 (HDMI 2) (sinks: 1, sources: 0, priority: 600, available: no)
        output:hdmi-surround71-extra1+input:analog-stereo: Saída de Digital Surround 7.1 (HDMI 2) + Entrada de Estéreo analógico (sinks: 1, sources: 1, priority: 665, available: no)
        output:hdmi-stereo-extra2: Saída de Digital Stereo (HDMI 3) (sinks: 1, sources: 0, priority: 5700, available: no)
        output:hdmi-stereo-extra2+input:analog-stereo: Saída de Digital Stereo (HDMI 3) + Entrada de Estéreo analógico (sinks: 1, sources: 1, priority: 5765, available: no)
        output:hdmi-surround-extra2: Saída de Digital Surround 5.1 (HDMI 3) (sinks: 1, sources: 0, priority: 600, available: no)
        output:hdmi-surround-extra2+input:analog-stereo: Saída de Digital Surround 5.1 (HDMI 3) + Entrada de Estéreo analógico (sinks: 1, sources: 1, priority: 665, available: no)
        output:hdmi-surround71-extra2: Saída de Digital Surround 7.1 (HDMI 3) (sinks: 1, sources: 0, priority: 600, available: no)
        output:hdmi-surround71-extra2+input:analog-stereo: Saída de Digital Surround 7.1 (HDMI 3) + Entrada de Estéreo analógico (sinks: 1, sources: 1, priority: 665, available: no)
        output:hdmi-stereo-extra3: Saída de Digital Stereo (HDMI 4) (sinks: 1, sources: 0, priority: 5700, available: no)
        output:hdmi-stereo-extra3+input:analog-stereo: Saída de Digital Stereo (HDMI 4) + Entrada de Estéreo analógico (sinks: 1, sources: 1, priority: 5765, available: no)
        output:hdmi-surround-extra3: Saída de Digital Surround 5.1 (HDMI 4) (sinks: 1, sources: 0, priority: 600, available: no)
        output:hdmi-surround-extra3+input:analog-stereo: Saída de Digital Surround 5.1 (HDMI 4) + Entrada de Estéreo analógico (sinks: 1, sources: 1, priority: 665, available: no)
        output:hdmi-surround71-extra3: Saída de Digital Surround 7.1 (HDMI 4) (sinks: 1, sources: 0, priority: 600, available: no)
        output:hdmi-surround71-extra3+input:analog-stereo: Saída de Digital Surround 7.1 (HDMI 4) + Entrada de Estéreo analógico (sinks: 1, sources: 1, priority: 665, available: no)
        output:hdmi-stereo-extra4: Saída de Digital Stereo (HDMI 5) (sinks: 1, sources: 0, priority: 5700, available: no)
        output:hdmi-stereo-extra4+input:analog-stereo: Saída de Digital Stereo (HDMI 5) + Entrada de Estéreo analógico (sinks: 1, sources: 1, priority: 5765, available: no)
        output:hdmi-surround-extra4: Saída de Digital Surround 5.1 (HDMI 5) (sinks: 1, sources: 0, priority: 600, available: no)
        output:hdmi-surround-extra4+input:analog-stereo: Saída de Digital Surround 5.1 (HDMI 5) + Entrada de Estéreo analógico (sinks: 1, sources: 1, priority: 665, available: no)
        output:hdmi-surround71-extra4: Saída de Digital Surround 7.1 (HDMI 5) (sinks: 1, sources: 0, priority: 600, available: no)
        output:hdmi-surround71-extra4+input:analog-stereo: Saída de Digital Surround 7.1 (HDMI 5) + Entrada de Estéreo analógico (sinks: 1, sources: 1, priority: 665, available: no)
        off: Desligado (sinks: 0, sources: 0, priority: 0, available: yes)
    Active Profile: output:analog-stereo+input:analog-stereo
    Ports:
        analog-input-internal-mic: Microfone interno (priority: 8900, latency offset: 0 usec)
            Properties:
                device.icon_name = "audio-input-microphone"
            Part of profile(s): input:analog-stereo, output:analog-stereo+input:analog-stereo, output:hdmi-stereo+input:analog-stereo, output:hdmi-surround+input:analog-stereo, output:hdmi-surround71+input:analog-stereo, output:hdmi-stereo-extra1+input:analog-stereo, output:hdmi-surround-extra1+input:analog-stereo, output:hdmi-surround71-extra1+input:analog-stereo, output:hdmi-stereo-extra2+input:analog-stereo, output:hdmi-surround-extra2+input:analog-stereo, output:hdmi-surround71-extra2+input:analog-stereo, output:hdmi-stereo-extra3+input:analog-stereo, output:hdmi-surround-extra3+input:analog-stereo, output:hdmi-surround71-extra3+input:analog-stereo, output:hdmi-stereo-extra4+input:analog-stereo, output:hdmi-surround-extra4+input:analog-stereo, output:hdmi-surround71-extra4+input:analog-stereo
        analog-input-headphone-mic: Microfone (priority: 8700, latency offset: 0 usec, not available)
            Properties:
                device.icon_name = "audio-input-microphone"
            Part of profile(s): input:analog-stereo, output:analog-stereo+input:analog-stereo, output:hdmi-stereo+input:analog-stereo, output:hdmi-surround+input:analog-stereo, output:hdmi-surround71+input:analog-stereo, output:hdmi-stereo-extra1+input:analog-stereo, output:hdmi-surround-extra1+input:analog-stereo, output:hdmi-surround71-extra1+input:analog-stereo, output:hdmi-stereo-extra2+input:analog-stereo, output:hdmi-surround-extra2+input:analog-stereo, output:hdmi-surround71-extra2+input:analog-stereo, output:hdmi-stereo-extra3+input:analog-stereo, output:hdmi-surround-extra3+input:analog-stereo, output:hdmi-surround71-extra3+input:analog-stereo, output:hdmi-stereo-extra4+input:analog-stereo, output:hdmi-surround-extra4+input:analog-stereo, output:hdmi-surround71-extra4+input:analog-stereo
        analog-input-headset-mic: Microfone de headset (priority: 8800, latency offset: 0 usec, not available)
            Properties:
                device.icon_name = "audio-input-microphone"
            Part of profile(s): input:analog-stereo, output:analog-stereo+input:analog-stereo, output:hdmi-stereo+input:analog-stereo, output:hdmi-surround+input:analog-stereo, output:hdmi-surround71+input:analog-stereo, output:hdmi-stereo-extra1+input:analog-stereo, output:hdmi-surround-extra1+input:analog-stereo, output:hdmi-surround71-extra1+input:analog-stereo, output:hdmi-stereo-extra2+input:analog-stereo, output:hdmi-surround-extra2+input:analog-stereo, output:hdmi-surround71-extra2+input:analog-stereo, output:hdmi-stereo-extra3+input:analog-stereo, output:hdmi-surround-extra3+input:analog-stereo, output:hdmi-surround71-extra3+input:analog-stereo, output:hdmi-stereo-extra4+input:analog-stereo, output:hdmi-surround-extra4+input:analog-stereo, output:hdmi-surround71-extra4+input:analog-stereo
        analog-output-speaker: Alto-falantes (priority: 10000, latency offset: 0 usec)
            Properties:
                device.icon_name = "audio-speakers"
            Part of profile(s): output:analog-stereo, output:analog-stereo+input:analog-stereo
        analog-output-headphones: Fones de ouvido (priority: 9900, latency offset: 0 usec, not available)
            Properties:
                device.icon_name = "audio-headphones"
            Part of profile(s): output:analog-stereo, output:analog-stereo+input:analog-stereo
        hdmi-output-0: HDMI / DisplayPort (priority: 5900, latency offset: 0 usec, not available)
            Properties:
                device.icon_name = "video-display"
            Part of profile(s): output:hdmi-stereo, output:hdmi-stereo+input:analog-stereo, output:hdmi-surround, output:hdmi-surround+input:analog-stereo, output:hdmi-surround71, output:hdmi-surround71+input:analog-stereo
        hdmi-output-1: HDMI / DisplayPort 2 (priority: 5800, latency offset: 0 usec, not available)
            Properties:
                device.icon_name = "video-display"
            Part of profile(s): output:hdmi-stereo-extra1, output:hdmi-stereo-extra1+input:analog-stereo, output:hdmi-surround-extra1, output:hdmi-surround-extra1+input:analog-stereo, output:hdmi-surround71-extra1, output:hdmi-surround71-extra1+input:analog-stereo
        hdmi-output-2: HDMI / DisplayPort 3 (priority: 5700, latency offset: 0 usec, not available)
            Properties:
                device.icon_name = "video-display"
            Part of profile(s): output:hdmi-stereo-extra2, output:hdmi-stereo-extra2+input:analog-stereo, output:hdmi-surround-extra2, output:hdmi-surround-extra2+input:analog-stereo, output:hdmi-surround71-extra2, output:hdmi-surround71-extra2+input:analog-stereo
        hdmi-output-3: HDMI / DisplayPort 4 (priority: 5600, latency offset: 0 usec, not available)
            Properties:
                device.icon_name = "video-display"
            Part of profile(s): output:hdmi-stereo-extra3, output:hdmi-stereo-extra3+input:analog-stereo, output:hdmi-surround-extra3, output:hdmi-surround-extra3+input:analog-stereo, output:hdmi-surround71-extra3, output:hdmi-surround71-extra3+input:analog-stereo
        hdmi-output-4: HDMI / DisplayPort 5 (priority: 5500, latency offset: 0 usec, not available)
            Properties:
                device.icon_name = "video-display"
            Part of profile(s): output:hdmi-stereo-extra4, output:hdmi-stereo-extra4+input:analog-stereo, output:hdmi-surround-extra4, output:hdmi-surround-extra4+input:analog-stereo, output:hdmi-surround71-extra4, output:hdmi-surround71-extra4+input:analog-stereo

Card #4
    Name: bluez_card.C0_28_8D_AF_C6_72
    Driver: module-bluez5-device.c
    Owner Module: 30
    Properties:
        device.description = "Jaybird Tarah Pro"
        device.string = "C0:28:8D:AF:C6:72"
        device.api = "bluez"
        device.class = "sound"
        device.bus = "bluetooth"
        device.form_factor = "headphone"
        bluez.path = "/org/bluez/hci0/dev_C0_28_8D_AF_C6_72"
        bluez.class = "0x240418"
        bluez.alias = "Jaybird Tarah Pro"
        device.icon_name = "audio-headphones-bluetooth"
    Profiles:
        a2dp_sink: Reprodução de alta fidelidade (Destino A2DP) (sinks: 1, sources: 0, priority: 40, available: yes)
        headset_head_unit: Unidade de headset (HSP/HFP) (sinks: 1, sources: 1, priority: 30, available: yes)
        off: Desligado (sinks: 0, sources: 0, priority: 0, available: yes)
    Active Profile: off
    Ports:
        headphone-output: Fones de ouvido (priority: 0, latency offset: 0 usec)
            Part of profile(s): a2dp_sink, headset_head_unit
        headphone-input: Entrada Bluetooth (priority: 0, latency offset: 0 usec)
            Part of profile(s): headset_head_unit

Best Answer

The problem is PulseAudio support for HSP/HFP (the bluetooth profiles that allow the microphone to work) isn't very good.

Recently a the proper support for HSP/HFP was merged: Add support for bluetooth A2DP codecs and codec switching. However, until a new version of PulseAudio is released and packaged in Ubuntu, it seems the only option is to build it yourself following the instructions in the link. I've tried but with no success.

Update: I just tried with Ubuntu 21.04 and it still doesn't seem to work. Another possibility I still have to test is PipeWire, the future PulseAudio replacement.

Related Question