how to determine which codecs a bluetooth device supports over A2DP

Philipp picture Philipp · Mar 25, 2014 · Viewed 11.3k times · Source

I have a bluetooth device (headphones) that supports playing audio over A2DP. I've been pairing them with both an iPhone and an Android, and I get only extremely poor audio quality with both sources.

My suspicion is that the device only supports the SBC codec, but not Mp3. Or if it does MP3, only an abysmally low bitrate. The manufacturer only states A2DP is supported, but not which codecs.

How can I determine which codecs are supported? Is there a kind of protocol sniffer I could use on my phone or my computer and interrogate the device to get a definitive answer on what it supports?

Answer

rshev picture rshev · Feb 12, 2017

You can actually see used A2DP codec in iOS device's console.

Step-by-step guide:

  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: select subsystem
  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: search, SBC search, AAC
  7. You'll see used codec in codec: field. Values are the same as specified in Bluetooth specs (example). Basically 0 = SBC, 2 = AAC.

Was very surprised, though, that a pair of headphones I just bought from very adored and award-winning manufacturer (not Sennheiser) does not have AAC codec in them, despite having that in specifications (will not name them here, contacting their tech support for clarification).