I have paired my Bluetooth headset with my Ubuntu 12.04 laptop with a Bluetooth chip inside:

lsusb | grep Bluetooth

Bus 003 Device 003: ID 045e:0745 Microsoft Corp. Nano Transceiver v1.0 for Bluetooth

The device has been paired, and with the help of blueman, I've connected it to PulseAudio as a sink. Audio does come across in A2DP mode, but is terribly choppy and skips to the point of being not much better than nothing.

I read around and saw that there was a fix involving adjusting the nice priority of the PulseAudio server. Since by default, PulseAudio runs on a per-user basis, I added the following to my /etc/security/limits.conf:

*       hard    rtpio   0
*       soft    rtpio   0
@audio  hard    rtpio   20
@audio  soft    rtpio   20
pulse   hard    rtpio   20
pulse   soft    rtpio   20

I then added myself to the audio group to be able to schedule priority for the pulseaudio process. It seems that pulseaudio is now running with a priority of -11:

ps -eo pri,ni,cmd | grep [p]ulse

30 -11 /usr/bin/pulseaudio --start --log-target=syslog

This should mean that PulseAudio is running with a priority of -11, which is good.

However, even after restarting, I still get the terrible choppy audio.

How should I proceed? I'm trying to make this Bluetooth headset I purchased usable.

Note: I've tried pairing this device with an Android tablet right next to my laptop and it works fine, so it's not wireless congestion, it seems to be directly correlated to Linux somehow.

  • I have the same problem with playing videos — where sound latency offset cannot be a solution, unfortunately. So I am pretty desperate. Any ideas?
    – KiriSakow
    Feb 15, 2021 at 17:25

7 Answers 7


As none of the other answers worked on my system (Ubuntu 18.04 LTS on a 2012 MacBook Air), I found my solution on the german ubuntuusers wiki. English summary of the german instructions:

The choppy output might be caused by the A2DP implementation, and how it buffers sound before encoding it. For me, changing this buffer's size solved the choppy sound problem. You need to perform three steps:

  1. Find necessary info about the bluetooth device (while it is connected!)

    pactl list | grep -Pzo '.*bluez_card(.*\n)*'

The output should be something like

    Name: bluez_card.28_11_A5_84_B6_F9
    Driver: module-bluez5-device.c
    speaker-output: Speaker (priority: 0, latency offset: 0 usec, available)
        Part of profile(s): a2dp_sink, headset_head_unit
    speaker-input: Bluetooth Input (priority: 0, latency offset: 0 usec, not available)
        Part of profile(s): headset_head_unit

We see that the buffers have currently 0 latency. In the next step, you will need the NAME and PORT of your output. In this example, these are bluez_card.28_11_A5_84_B6_F9 and speaker-output, respectively.

  1. Set the buffer size (latency) of your card to a suitable value with this command pattern:

    pactl set-port-latency-offset <NAME> <PORT> <BUFFER_SIZE_MICROSECONDS> 

The latency unit of the following command is microseconds, so I'm using a 50 millisecond buffer for my command here:

    pactl set-port-latency-offset bluez_card.28_11_A5_84_B6_F9 speaker-output 50000 
  1. Restart your bluetooth service to apply your change

    sudo service bluetooth restart

As there is usually no documentation about this, you may have to experiment with higher or lower buffer values. Many people people posted their working latencies in the comments to this answer. Check them out for guidance on the latency value.

  • 4
    You deserve more upvotes! I would like to mention that 45000 works well for the Macbook Air (early 2014) and Bose QC35
    – Ole Aldric
    Mar 13, 2020 at 11:42
  • 3
    Still stuttering for me :( (Manjaro) May 11, 2020 at 14:38
  • 3
    a much smaller value worked most of the time, but I had to crank it up to 64448 to get rid of skips when doing stuff like inspecting elements in chrome and changing styles.
    – Nick
    May 15, 2020 at 21:13
  • 3
    Works for me on 20.04 LTS, Sennheiser CX400BT used @OleAldric 's latency 45000
    – prabhu
    Nov 7, 2021 at 12:27
  • 2
    This works for me (ubuntu 22.04). knb's method below works too and it doesn't involve command line commands.
    – Andrei B
    Jun 17 at 12:07

Edit the ALSA configuration file

sudo gedit /etc/modprobe.d/alsa-base.conf

Add the line

options snd-hda-intel model=generic

to the end of the file, and restart the bluetooth service:

sudo service bluetooth restart
  • 3
    This worked wonderfully for my BOSE quiet comfort 35 II speakers (ubuntu 18.04) Jun 26, 2018 at 12:39
  • This simple fix also worked for me after a lot of searching. Ubuntu 18.10, bluetooth earphones (promate trueBlue). Nov 20, 2018 at 14:15
  • Created an account to mention that this solved my problems too (QC35II). An explanation would be helpful; but either way, you are a life saver
    – Sam
    Jan 3, 2019 at 10:34
  • 1
    Although there's this Canonical article that advises against doing this: In particular, avoid model=generic – that is almost guaranteed to give you trouble. In many cases, when trying different models, you will find that you might fix one thing but break another. voices.canonical.com/david.henningsson/2012/07/13/… Jan 5, 2019 at 7:57
  • 8
    at the end after editing this file you don't need to restart, just run sudo service bluetooth restart Jan 13, 2019 at 3:49

You can open the search bar (CTRL-D in unity, Windows-Key in Gnome) type in "Pulse" or "Volume". Open the GUI tool "Pulseaudio Volume Control", its icon looks like knob or gauge.

There you can select your Bluetooth speaker. Click on Advanced, set the Latency value just like proposed in the other answers . 45 ms or 50 ms seems to work for them, but I haven't found a good value that works for me.

A screenshot is attached. My Bluetooth Speaker is called SRS-BTX300. You don't need to restart bluetooth after changing the latency value.

enter image description here

  • This did the trick!
    – daviewales
    Jun 28, 2020 at 1:48
  • 1
    Sound latency offset cannot be a solution for playing video, unfortunately.
    – KiriSakow
    Feb 15, 2021 at 17:19
  • This works for me (ubuntu 22.04)
    – Andrei B
    Jun 17 at 12:06
  • Audio-to-video synchronization article on Wikipedia states: For television applications, the Advanced Television Systems Committee recommends that audio should lead video by no more than 15 milliseconds and audio should lag video by no more than 45 milliseconds. However, the ITU performed strictly controlled tests with expert viewers and found that the threshold for detectability is -125ms to +45ms. For film, acceptable lip sync is considered to be no more than 22 milliseconds in either direction. Jul 20 at 11:53

Chris_128 answer worked for me but for newbies I'll add a bit detail.

For the NAME and PORT for the command below:

pactl set-port-latency-offset NAME PORT 50000 

You will get it after you have result from typing:

pactl list | grep -Pzo '.*bluez_card(.*\n)*'

Name: bluez_card.5C_FB_7C_0D_0F_EE
Driver: module-bluez5-device.c
Owner Module: 28
    headset_head_unit: Headset Head Unit (HSP/HFP) (sinks: 1, sources: 1, priority: 30, available: yes)
    a2dp_sink: High Fidelity Playback (A2DP Sink) (sinks: 1, sources: 0, priority: 40, available: yes)
    off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
Active Profile: a2dp_sink
    headset-output: Headset (priority: 0, latency offset: 0 usec, available)
        Part of profile(s): headset_head_unit, a2dp_sink
    headset-input: Headset (priority: 0, latency offset: 0 usec)
        Part of profile(s): headset_head_unit

The NAME will be "bluez_card.5C_FB_7C_0D_0F_EE" and the PORT will be "headset-output"

So for my case my command is

"pactl set-port-latency-offset bluez_card.5C_FB_7C_0D_0F_EE headset-output 50000"

Restart your bluetooth service

sudo service bluetooth restart
  • Sound latency offset cannot be a solution for videos, unfortunately
    – KiriSakow
    Feb 15, 2021 at 17:19
  • @KiriSakow many video players will let you configure an audio offset
    – HilarieAK
    Sep 4, 2021 at 10:53
  • @HilarieAK youtube won't
    – devman
    Oct 29, 2021 at 14:26
  • It is still worth the try. 5 ms resolved the issue to me (on YouTube) – I am fine with such delay. Maybe a smaller one would work. Jul 20 at 10:50

Had the same issue with Ubuntu 18.04 running as dual boot in MacBook Mini. Tried changing the ALSA configuration as mentioned by @ConfirmAndCreateThisAccount.

But it didn't work.

So i installed Blueman using the below command

sudo apt-get install blueman

Then i disconnected the bluetooth device from the system bluetooth settings & re-paired using Blueman. Now everything is fine. Even the Play/Pause controls work.


The fix worked for me, although I did find that I had to REM the line before it. See below:

# Keep snd-usb-audio from beeing loaded as first soundcard  
# options snd-usb-audio index=-2  <-REM this line if it doesn't work at first  
options snd-hda-intel model=generic
  • My problem is sound stuttering in videos — where sound latency offset cannot be a solution, unfortunately.
    – KiriSakow
    Feb 15, 2021 at 17:22

I solved my problem by changing the wifi connection I am using from using the 2.4 ghz connection (same as bluetooth) to a 5 ghz connection. My router and laptop are able to use both.

  • That really seems to be it. So simple!
    – Jakob
    Oct 11 at 6:58

Not the answer you're looking for? Browse other questions tagged or ask your own question.