No audio output with Bluetooth headset in HSP/HFP profile (mic works, output doesn’t)

When my Bluetooth headset switches to the Handsfree (HSP/HFP) profile during calls, the microphone works, but I get no sound output.
In contrast, the A2DP profile works fine for playback (music, videos, etc.), but it doesn’t support microphone input, so I can’t use it for calls.
I’m not sure where to start troubleshooting this. Is this a known issue with PipeWire or my specific hardware? What would you recommend checking or trying first?

Distro: Fedora Linux 42 (Workstation Edition)
Kernel: 6.14.6-300.fc42.x86_64
BIOS: 03.09
Device: Framework Laptop 13 (AMD Ryzen 7040Series)

Manually selecting input/output devices using pavucontrol graphically is a practical solution to a common issue. With Bluetooth headsets using the HSP/HFP profile, it’s often reported that the microphone works, but there’s no audio output.

In pavucontrol,

  • In the “Playback” tab, manually select your Bluetooth headset as the output device for the currently playing application (for example, Firefox or system sounds).
  • In the “Output Devices” tab, check if your Bluetooth headset is listed and set it as the fallback device by clicking “Set as fallback”.
  • In the “Configuration” tab, verify the selected profile:
  • Use A2DP-Sink for high-quality audio output.
  • Avoid HSP/HFP, as it is optimized for calls and may cause output issues.

Thanks for your answer.
The issue is that I can’t use A2DP for output while keeping the Bluetooth mic (HSP/HFP) active, selecting one forces the whole profile to switch. I can’t use the headset mic at all, selecting it forces the headset into handsfree mode, but then audio output stops working.
So I’m stuck using the internal mic, since the headset mic can’t be used with A2DP.

Try using QjackCtl’s Graph interface to customize input and output.

This is a known behavior when using Bluetooth audio on Linux on hands-free mode: you cannot use A2DP for high-quality audio output while simultaneously using the Bluetooth microphone via HSP/HFP, due to profile limitations in the Bluetooth specification and current Linux audio stack.

SBC on hands-free mode

CVSD on hands-free mode

Using a dedicated microphone (for example, USB or analog) alongside Bluetooth headphones set to A2DP can provide both high-quality audio output and microphone input without profile switching.

TL;DR: qjackctl is not a general solution for Bluetooth problems. Stick to PulseAudio/PipeWire tools unless you’re in a JACK-based audio environment.

  • qjackctl is a front-end for the JACK audio server, which is designed for low-latency professional audio, not typical desktop use.
  • Bluetooth audio devices are normally managed by PulseAudio or PipeWire, not JACK.

Thank you all for your answer. I understood that the best solution should be to use the internal mic of my computer so the headset is in A2DP profile.

But I was wondering why I don’t have any sound output on HSP/HFP profile. Do you have an idea?

Update PipeWire and WirePlumber to the latest versions:
sudo dnf upgrade pipewire\* wireplumber --refresh

This resolves the issue in most cases.

tl;dr: Why this happens
HSP/HFP is used for calls and enables your headset mic, but Fedora sometimes forgets to activate the audio output after switching profiles. PipeWire updates fix this by properly initializing both mic and speaker.

Yes, I understood that you’re thinking of using the internal mic of your computer, so that your Bluetooth headset stays in the A2DP profile for better audio quality.

That can work, and it’s totally your choice — just keep in mind a couple of things:

  • A2DP = great sound quality, but mic won’t work
  • If you use the internal mic, it avoids switching to HSP/HFP (output), which solves your no-audio issue.
  • However, depending on your environment (like a small room), you might get feedback or echo using the laptop mic.

Personally, I prefer using a USB mic and keeping the Bluetooth headset in A2DP for clean monitoring (looks neat on camera) — but again, it’s up to you and your setup!

Thanks again for your answer!

All my packages are up to date.