4

I have a Jabra Evolve 75 headset that I connect via Bluetooth to my Ubuntu 20.04 machine. Everything works fine in principle except for one little annoyance:

Whenever I turn the headset on, it connects and the Output Device is automatically set accordingly in the Sound Settings. This is the way I want it. However, the Input Device remains like it was set before and I manually have to go in to the settings and also change it to Jabra Evolve 75:

enter image description here

How can I configure the settings so that both Input Device and Output Device automatically switch to Jabra Evolve 75 once I turn the headset on?


UPDATE: The Input Device is also automatically switched when the Configuration setting is changed from High Fidelity Playback (A2DP Sink) to HSP/HFP. So if it is possible to automatically select that as a profile, my problem would also be solved.

3
  • 1
    I'm having the same problem. Bose QC35, waiting for a good answer. This post is talking about the same thing: askubuntu.com/questions/831331/… Not sure if it is still valid on ubuntu 22.04 or not.
    – aaronsun
    Dec 15, 2022 at 9:21
  • @aaronsun: I found a way to fix it for my purposes, see answer below...
    – buddemat
    Mar 3 at 10:10
  • Same problem - I wonder why it's not working out of the box like on mac or windows :/ Jun 12 at 6:21

2 Answers 2

3

Ok, I finally found how to automatically switch to the HFP audio profile, which will then also automatically set the headset microphone as input device.

There are multiple approaches around, but the only way to do this automatically when connecting the bluetooth headset seems to be to create a udev rule which runs a script when the headset is connected. There is a very nice blog post that describes this in-depth which I used to achieve what I wanted and where most of the code below is originally from.

These are the essential steps:

  1. Find out card name and profile using pactl list. The output contains two lines that you will need:

    ...
    Card #20
        Name: bluez_card.70_BF_92_C9_F5_D0
        ...
     Profiles:
         a2dp_sink: High Fidelity Playback (A2DP Sink) (sinks: 1, sources: 0, priority: 40, available: yes)
         handsfree_head_unit: Handsfree Head Unit (HFP) (sinks: 1, sources: 1, priority: 30, available: yes)
         off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
    ...
    

    In this example, the card name is bluez_card.70_BF_92_C9_F5_D0 and the profile name is handsfree_head_unit.

  2. With that, create a script ~/.config/auto-pactl.sh to switch the headset to the HFP profile:

    #!/bin/bash
    sleep 2 # wait for the headset to fully connect                                 
    sudo -u '#1000' XDG_RUNTIME_DIR=/run/user/1000 \                                
        pactl set-card-profile bluez_card.70_BF_92_C9_F5_D0 handsfree_head_unit     
    logger "Switched Jabra headset to HFP profile"
    
  3. Find out input name of headset using udevadm monitor and then connecting the BT headset. The output should be something like:

    ...
    UDEV  [54588.946048] add      /devices/virtual/input/input112 (input)
    ...
    
  4. Find out subsytem, vendor, and product using udevadm info -ap /devices/virtual/input/input112 (replacing the device with whatever the previous command's output was)

  5. With this information, create a udev rule to execute the above script and store it in /etc/udev/rules.d/52-jabra-headset.rules, inserting the values for your card and your username in the appropriate places:

    ACTION=="add", SUBSYSTEM=="input", ATTR{id/vendor}=="0067", ATTR{id/product}=="24a7", RUN+="/home/<myUsername>/.config/auto-pactl.sh"
    

That worked like a charm for me!

5
  • BTW: This also works on Mint 21.1
    – buddemat
    Feb 25 at 17:16
  • 1
    The Configuration does not change - but the input device changes :) Ubuntu 22.04.2 Jun 12 at 6:22
  • 1
    Small detail missing, u need to add in auto-pactl.sh this in first line: #!/bin/bash
    – Tai Truong
    Jul 18 at 8:38
  • @TaiTruong Thanks, you're right, I forgot the shebang in this post (though I had it in my local script). I've updated my answer.
    – buddemat
    Jul 18 at 11:11
  • This is 10 star quality answer because explain exactly what needs to be done. I'm going to use this knowledge to play with hardware keys, now that I know how to monitor attaching the device and obtaining vendor id, etc. Many thanks! Nov 7 at 16:07
0

I think it has to do with the "Configuration" type. You have selected A2DP, which only supports audio to the headset. Try switching to HSP/HFP, then it is bidirectional. Your sound quality may be a bit deteriorated with HSP/HFP. I haven't found any solution having high-quality audio with HSP/HFP on bluetooth.

You can also try pulseaudio volume control. It gives you more flexibility to control the sound settings.

Cheers

1
  • Thank you, you are correct. When I switch to HFP, the microphone setting also changes automatically. Unfortunately, that leaves me with basically the same problem: How do I make HFP the default setting?
    – buddemat
    Feb 17 at 10:21

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .