Yosemite bluetooth audio is choppy/skips

On two separate MacBook Pros (one brand new, one several years old) running OSX Yosemite, all bluetooth audio devices are choppy (audio clicks in and out, skips like a scratched CD).

I have tried playing audio through Spotify, iTunes, YouTube with Beats Studio wireless headphones and a Big Jambox on both, in separate environments. Sometimes the sound is perfect and clear. Then it suddenly becomes choppy.

I've looked at Activity Monitor during choppy times, and nothing seems different from normal.

For the record, using the same Wifi and devices, iOS8 iPhone 6 and 5S both do not have this issue.

I'm curious how to even begin to troubleshoot the issue - It's hard to troubleshoot as there's no way of knowing if it's interference, app performance, etc.


Solution 1:

It's an issue with the amount of power/bandwidth supplied to the BluetoothAudioAgent, the daemon in charge of streaming. Apparently most people have had success by entering the following command in terminal.app:

defaults write com.apple.BluetoothAudioAgent "Apple Bitpool Min (editable)" -int 40

Source: http://lifehacker.com/fix-your-bluetooth-audio-in-yosemite-with-this-terminal-1670380974

The source article lists Yosemite as the specific OS this applies to, but I know that this fix also works back to Mavericks and (possibly) Snow Leopard (untested).

I am having this exact issue at the moment and entered that command with non-noticeable results. I'm going to reboot the machine and see if that takes the new settings into account. But it seems like this command is the way that the wide majority of people have resolved this issue.

EDIT: Just rebooted, the audio quality is significantly better. No noticeable choppiness whatsoever (knock on wood). It appears that the command I posted above does seem to resolve the issue.

EDIT 2 (2015-8-24): The above command does help in many cases and produces noticeable quality improvements. Unfortunately, however, Yosemite is very moody with regard to bluetooth audio. The problem compounds itself when in proximity of other bluetooth devices. To expand on my previous answer above, I highly recommend entering the following additional commands to increase other bluetooth audio parameters:

defaults write com.apple.BluetoothAudioAgent "Apple Bitpool Max (editable)" 80 
defaults write com.apple.BluetoothAudioAgent "Apple Bitpool Min (editable)" 48 
defaults write com.apple.BluetoothAudioAgent "Apple Initial Bitpool (editable)" 40 
defaults write com.apple.BluetoothAudioAgent "Apple Initial Bitpool Min (editable)" 40 
defaults write com.apple.BluetoothAudioAgent "Negotiated Bitpool" 58 
defaults write com.apple.BluetoothAudioAgent "Negotiated Bitpool Max" 58 
defaults write com.apple.BluetoothAudioAgent "Negotiated Bitpool Min" 48

EDIT 3 (2015-9-08): Alright. I'm sorry I keep updating this answer, but I keep finding more information about this issue (since improving bluetooth audio on Yosemite is a long-term effort, apparently). I've found several sources that cut straight to the mustard and set everything to 80 which appears to be the maximum allowable value for Bitpool settings. If the above settings don't work well enough for you, try the "All In™" approach.

defaults write com.apple.BluetoothAudioAgent "Apple Bitpool Max (editable)" 80 
defaults write com.apple.BluetoothAudioAgent "Apple Bitpool Min (editable)" 80 
defaults write com.apple.BluetoothAudioAgent "Apple Initial Bitpool (editable)" 80 
defaults write com.apple.BluetoothAudioAgent "Apple Initial Bitpool Min (editable)" 80 
defaults write com.apple.BluetoothAudioAgent "Negotiated Bitpool" 80 
defaults write com.apple.BluetoothAudioAgent "Negotiated Bitpool Max" 80 
defaults write com.apple.BluetoothAudioAgent "Negotiated Bitpool Min" 80

To see your current defaults:

defaults read com.apple.BluetoothAudioAgent

Edit 4 (2016-07-14): One more (hopefully last) edit. Make sure that you restart the bluetoothaudiod (or coreaudiod) service after making changes to these settings.

sudo killall bluetoothaudiod

Or, if you are on El Capitan:

sudo killall coreaudiod

Credit for this goes to the multiple wise nerds below who suggested it. (Thank you!)

Solution 2:

You can also tune the BlueToothAudioAgent by installing the bluetooth explorer that comes with XCode, and then within that, selecting tools..audio options. This gives a few more options, which are no doubt all also able to be set via the command line. There are also tools..audio graphs that you can look at to see what's going on. I found that tuning the number of buffered packets gave me good results (at least, until my bluetooth audio stopped working entirely).