Software Engineer's Blog

Fix Bluetooth Audio Stutter in Chrome on Ubuntu 24 (The A2DP Lock)

Fix Bluetooth Audio Stutter in Chrome on Ubuntu 24  (The A2DP Lock)

Bluetooth earbuds stutter or drop to tinny, low-quality audio the moment you switch tabs in Chrome on Ubuntu 24 — jump from a YouTube video to Google Translate and the sound falls apart. The cause is profile switching. Chrome keeps flipping your headset between two Bluetooth audio profiles:

  • A2DP (Advanced Audio Distribution Profile) — high-quality, one-way playback.
  • HSP/HFP (Headset / Hands-Free Profile) — low-quality, two-way, meant for calls because it also opens the mic.

When Chrome opens a microphone capture stream, PipeWire’s session manager (WirePlumber) switches the headset to a profile that has a mic — the low-quality HSP/HFP — and audio quality collapses mid-stream. Pin the device to A2DP so that switch can’t happen, and the stutter stops. (pavucontrol sets the current profile; to make it truly stick you disable the mic profile entirely — see the last section.)

✅ Locking the Audio Profile to A2DP

Here is the step-by-step guide to force your system to use the high-fidelity A2DP profile.

1. Install pavucontrol

Open your terminal and install pavucontrol (PulseAudio Volume Control), a graphical utility that gives you control over PulseAudio settings.

sudo apt install pavucontrol

2. Run pavucontrol

After installation, execute the program from the terminal:

pavucontrol

3. Set the Audio Profile

Inside the pavucontrol window, navigate to the Configuration tab.

  • Locate your currently connected Bluetooth Earphones/Headphones in the list.
  • Click the Profile drop-down menu for that device.
  • Set the profile to “High Fidelity Playback (A2DP Sink)”.

Making it stick

Setting the profile in pavucontrol fixes the current session, but on modern Ubuntu (PipeWire/WirePlumber) it can quietly reset when the headset reconnects or after a reboot — which is annoying if you wanted this fixed for good. The durable fix is to stop the system from offering the headset profile at all, so nothing — Chrome included — can switch you back into it.

On PipeWire/WirePlumber that means a small user config under ~/.config/wireplumber/ that disables the HFP/HSP roles for Bluetooth, leaving A2DP as the only profile ever negotiated. The exact keys move between WirePlumber releases, so check the WirePlumber Bluetooth docs for your version rather than copying a snippet that may be stale. The trade-off is real and worth stating: disabling HFP/HSP means the headset’s microphone stops working, so don’t do this on the earbuds you take calls with.

Conclusion

Locking the profile to A2DP keeps Chrome from dragging your headset into the call-quality HSP/HFP mode, so playback stays stable when you jump between tabs and web apps. If instead Chrome goes completely silent rather than stuttering — no sound at all — that’s a different, routing-related issue; see Chrome has no sound on Kubuntu.