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:

https://download.developer.apple.com/Developer_Tools/Additional_Tools_for_Xcode_9/Additional_Tools_for_Xcode_9.dmg

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.

 

29 Thoughts on “Enabling AAC and AptX over Bluetooth on MacOS”

  • 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.

    • 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.

  • 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.

  • 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

      • 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).

        • 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.

  • 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.

  • 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?

    • 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.

  • 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?

    • 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:

      https://stackoverflow.com/questions/22639691/how-to-determine-which-codecs-a-bluetooth-device-supports-over-a2dp/42190656

  • 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.

  • 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

    thanks!
    winston

  • 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.

  • 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.

  • 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.

    PLEASE HELP!!

Leave a Reply

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