Enabling AAC and AptX over Bluetooth on MacOS

Published by areilly on

I recently purchased a pair of Sony MDR-1000X Bluetooth noise-cancelling headphones. Although I usually prefer Sennheiser headphones (my previous pair of NC headphones was the Sennheiser Momentum Wireless 2 (aka HD-1)), I went with the Sony due to their support of the AAC codec, as my primary devices are all Apple.

By default on OS X and MacOS, the headphones will connect with the SBC codec when playing audio. (And occasionally a fallback to the low-quality SCO streaming codec for some voice-chat apps like Cisco Jabber) The OS does support aptX and AAC over bluetooth, but you have to jump through some hoops to enable them. Why? who knows. My best guess is that it is becuase SBC is the universally supported (and required) codec for the A2DP Bluetooth audio profile, and using that maximizes compatibility and minimizes customer complaints. If you can’t reliably detect what a headset supports, then the lowest common denominator is the safe choice.

AirPods however do automatically use the AAC codec without the user having to set any options.

Update 4 Dec 2017:

Thanks to Anders Carling in the comments, looks like there is a much easier way to check and update these settings.

Open Terminal and enter “sudo defaults read bluetoothaudiod” and type in your password when prompted. You should then see the current settings:

"AAC Bitrate" = 128;
"AAC CBR" = 0;
"Apple Bitpool Max" = 64;
"Apple Bitpool Min" = 2;
"Apple Initial Bitpool" = 40;
"Disable HFP" = 0;
"Enable AAC codec" = 1;
"Enable AptX codec" = 0;

If you get an error “Domain bluetoothaudiod does not exist”, that means none of these settings have been set before, update the setting as shown below and you’ll be able to read the setting as outlined above.

To update these settings in the Terminal:

to enable AptX:

sudo defaults write bluetoothaudiod "Enable AptX codec" -bool true

to enable AAC:

sudo defaults write bluetoothaudiod "Enable AAC codec" -bool true

To disable either one, just change “-bool true” to “-bool false” at the end of the command.

Here’s the original method, still handy in case you want a GUI to toggle the settings:

To enable aptX or AAC support, you need to get a copy of Apple’s Bluetooth Explorer development utility.

Go to the Apple developer downloads page – you will need to register a developer account if you don’t already have one.

Search for “Additional Tools for Xcode” – at the time of this writing, the latest released version is for Xcode 9.0. This will download a .dmg file that contains “Bluetooth Explorer.app” – this is the only file you need, move it anywhere, and you can delete the rest.

If you’re already logged in to the developer site, you can also use this direct link for the 9.0 version:


For older versions you’ll get “Hardware IO Tools for Xcode 7.3”

Run Bluetooth Explorer, then go to Tools>Audio Options. Select “Enable AAC”. If you have an aptX-only device you can enable that here as well. If your headset is already connected, disconnect and reconnect. You don’t need to re-pair the device.

Once you’re reconnected, you can verify which codec you’re connecting with by enabling the Bluetooth menu bar icon (System Preferences >Bluetooth>Show Bluetooth in menu bar), then holding down option and clicking the Bluetooth menu bar icon and navigating to the headphones entry.

That’s it. You’ll be running the improved wireless codec, and should notice a definite improvement.


Categories: Uncategorized


Ed Mund · November 20, 2017 at 23:17

I appreciate you documenting this so clearly… I went through the motions for my aptX Sennheiser HD1 Earphones… Still no aptX

Using Bluetooth Explorer, Tools, Bluetooth Staus: “Active Audio Codec: ” Nothing shown.

    areilly · December 4, 2017 at 12:02

    I had the older version of the HD1 and it worked for me – as far as I know the HD1 didn’t have any major changes. The only thing I can think of is to make sure there is a music app playing, and that there aren’t any chat/calling apps running that might be forcing the codec down to something else. I just updated the post with an alternate method from another commenter that you could try to see if it makes a difference.

User · December 4, 2017 at 02:51

Thank you

Anders Carling · December 4, 2017 at 11:42

I did some digging and found where the relevant setting is stored.

Using Terminal, it can be checked by running:
sudo defaults read bluetoothaudiod

And set by running:
sudo defaults write bluetoothaudiod “Enable AAC codec” -bool true

Reconnecting the headphones seems to be enough to pick up the change.

Mark Wadham · December 7, 2017 at 15:16

The defaults command doesn’t seem to work in 10.13.2

$ sudo defaults read bluetoothaudiod
2017-12-07 20:15:26.382 defaults[12912:1035323]
Domain bluetoothaudiod does not exist

    areilly · December 9, 2017 at 15:26

    I just updated to 10.13.2 and I’m seeing the same, looks like it’s been moved or renamed.

      Anders Carling · December 10, 2017 at 08:39

      I’ve tested both checking and updating the “Enable AAC codec” setting under 10.13.2 and it still works here.

      Mark: That would be the output have you never changed any of the bluetoothaudiod settings, so might just be that? Have you tried enabling AAC and checking again?

      areilly: Are you sure you didn’t just miss “sudo” – it’s required as the setting, for no obvious reason, is stored in the root users Library folder (i.e. in /var/root/Library/Preferences/bluetoothaudiod.plist).

        areilly · December 10, 2017 at 12:49

        I see what happened now, I originally tried it on a machine that I just just wiped and done a fresh install of 10.13.2, and got the “Domain bluetoothaudiod does not exist” since it had not been set yet, like you mentioned in another comment.

LBrown · December 9, 2017 at 11:46

When entering the terminal command I’m given “Domain bluetoothaudiod does not exist.” I tried searching/downloading Additional Tools for Xcode on the Developer site, but the only download available as of 12/09/17 was Xcode itself. Likewise, it wasn’t available on the App Store. Any help would be appreciated.

fvw · December 13, 2017 at 11:55

Thanks for this! It looks like my beatsX are not picking up the AAC codec despite enabling it on my mac.

This is what i get in terminal once i enter “sudo defaults read bluetoothaudiod”:

“Enable AAC codec” = 1;
“Enable AptX codec” = 1;

I removed my beatsX from my device completely, reconnected it, but when look at the active codec it still shows as “not active”

any tips?

    areilly · December 13, 2017 at 15:53

    Make sure there’s some kind of music app playing – MacOS will turn off or switch codecs depending on the app that is accessing the audio device. If you have a voice chat open at the same time as iTunes, it will sometimes downgrade the codec for the voice chat app.

Chris · December 13, 2017 at 15:46

Any reason not to bump the AAC bandwidth to max?

    areilly · December 13, 2017 at 15:54

    I was never able to get a clear answer on that. I tried changing it, but the bluetooth transmission rates didn’t seem to change, and I didn’t hear a difference.

Enzo · December 16, 2017 at 14:42

Frustrating, I’ve tried all, no success.
I downloaded the bt explorer, it appears different from the one shown in the image. Do all the steps, my SONY HTRT40 is aac bt capable, but the Mac refuses to connect through AAC. Funny thing is that I connect my iPad Air, and sound is great, Idk for sure if ipad is using AAC, but I guess so because sound from my android and my Mac sound horrible and I can be for sure in the Mac is using SBC, is there a way I can verify this on the iPad?

    Jake · December 22, 2017 at 13:11

    Harder to find out on iOS but if you have a Mac it’s possible:

    Here we go:

    1. Connect your iOS device to your Mac, answer Trust on the iOS device if you haven’t done this before.

    2. Open Console.app.

    3. Select your iOS device on the left sidebar.

    4. Type `bluetooth` in the top-right search bar, press Enter and select `Subsystem` instead of `All`.

    5. Now, start playing to your bluetooth headphones on the iOS device (codec activates only when you output sound).

    6. Press `Cmd+F` and search for `Starting a2dp send thread` in your console messages.

    7. You’ll see used codec in `codec: ` field. Values are the same as specified in Bluetooth specs. Basically `0 = SBC`, `2 = AAC`.

    Stolen from:


Jake · December 22, 2017 at 13:01

I hear a HUGE difference between SBC and AAC through Apple Music. Thanks for this post!

PS — how do you like the 1000X? I was thinking of picking up the WH1000xm2 myself.

Winston · January 3, 2018 at 18:00

hey guys,

trying to go through this process on my work computer (which, unfortunately, doesn’t give me access to terminal so using the original method) for my new beoplay E8’s which support AAC but not aptX.

for some reason, when i open up the ‘audio options’ pop-up in bluetooth explorer, i don’t have an ‘enable AAC’ box to toggle (everything else matches the screenshots in the article exactly). is there a way to make it visible or am i stuck with SBC?

currently running OS 10.12.6


    Winston · January 3, 2018 at 18:19

    never mind – had an old version of bluetooth explorer 🙂 thanks anyway!

LWeiLi · January 31, 2018 at 09:16


Ralph · February 12, 2018 at 05:35

So what I just found out (because frustratingly none of this worked):

If you have a headset instead of “just headphones”, you need to change the audio input to something different, don’t use the one from your headset. If that is turned on, MacOS will *always* choose SBC as a codec for the bluetooth audio connection. Once you redirect that to “internal microphone”, our Mac will choose the better codec. AAAARGH.

steve · March 2, 2018 at 09:31

Thank You aptx is now an option

Miguel Hiraldo · March 3, 2018 at 19:29

Ahhh! Thanks! Was using my Mid 2010 MacBook Pro with my MiniBlink (a Bluetooth DAC device with GREAT sound) connected to my stereo (Naim) and was getting very compressed sound as i was only able to get Aptx.
As soon as i downloaded the Bluetooth Explorer and clicked on the AAC the sound was much better. Now, does someone know how to maximize the SBC Codec so that the Bit Pool can be extended to 80 (instead of the default maximum of 64)? I read it makes a huge difference but as hard as tried to enter the commands (found on some other page in the web) on the mac terminal app, i was not able to change the parameters in Bluetooth Explorer.

Cemal · March 4, 2018 at 16:52

I did the ( bluetoothaudiod “Enable AptX codec” -bool true ) but nothing happened.

What happened?

Mike · March 29, 2018 at 01:38

I tried both the GUI using bluetooth explorer and the terminal command using SUDO to activate aac.
It DOES show “Apple Initial Bitpool” = 64; & “Enable AAC codec” = 1; which means the AAC is activated.

BUUUTTT, sadly every time I right click on the bluetooth icon to see the codec being used, it still always says SBC when audio is playing via my bluetooth earbuds.
I’m on MacOS High Sierra.


vadikgo · May 5, 2018 at 16:08

Why to set AAC Bitrate to 128? Apple Music encoded with 256Kbs bitrate.

Vlad · July 29, 2018 at 20:01

Just off microphone

Brendan · August 31, 2018 at 14:13

I’m able to enable the AAC codec for music like Spotify, but whenever I need to use the microphone the driver still switches to SCO and the quality goes to garbage.

Calum · November 8, 2018 at 11:38

For my Sony MDR ZX770BN I’ve managed to get it working using the BT Explorer but it only sticks with the AAC codec for about 20 seconds and then goes back to SCO. I then made sure the input was the internal mic, and it switched to AAC but then, again, switched back to SCO after about 20 seconds. So frustrating. Anyone else experienced this?

Motti Shneor · February 14, 2019 at 08:58

This is great, and I managed to have my Bowers&Wilkins PX to play using AAC from iTunes application. However – that only survived until I quit the “Bluetooth Explorer” application, in which time, they somehow switched to using aptX. Strangely – this happened without even disconnect-reconnect of the bluetooth device. My question: Can this change be done permanently, using “sudo defaults write” ? where are these defaults stored? Another question – why would aptX sound distinctively inferior to AAC when playing the same piece in iTunes? The file itself is encoded using AAC – can it be the recompression?

Motti Shneor · February 14, 2019 at 09:01

I forgot to write – on my iMac (mid 2015) and MacOS 10.14.2 – “sudo defaults read bluetoothaudiod” yields “unknown domain”. Should I first “write” and only then “read” ?

sjlee · June 5, 2019 at 20:59

For “sudo defaults write” to work, you need to turn off SIP: https://apple.stackexchange.com/questions/208478/how-do-i-disable-system-integrity-protection-sip-aka-rootless-on-macos-os-x

sjlee · June 5, 2019 at 21:02

Also correct domain name is “com.apple.bluetoothaudiod”.

AirPods: Mac-App für besseren Klang und längere Laufzeit › ifun.de · January 4, 2020 at 20:07

[…] Quality Fixer“ lässt sich im Verbund mit dem AirPods-Schnellverbinder Toothfairy und mit dem AAC-Trick […]

Leave a Reply

Your email address will not be published. Required fields are marked *