I wanted to try out Bluetooth stereo audio for some time, now, and just got myself my first bluetooth headset, ever (more on that in another post). As audiophile my first impressions where a little mixed, but eventually I figured out why they where worse under Apple’s Mac OS X, even compared to Apple’s iPhone 3G. Some excessive research turned out why (beside the crappy SBC codec mandatory in A2DP): OS X’s “BluetoothAudioAgent” may use forbidable low bit-rates for the forbidable bad audio codec by default! The straight-forward, cut’n past-able tweak is as simply as running this in your terminal:
defaults write com.apple.BluetoothAudioAgent “Apple Bitpool Min (editable)” 52
The max may be 64, however, 56 did resulted in the agent to connect to my headset, 52 worked. Please post a comment if a higher rate works for you, or you need an ever lower value (btw. the default appears to be as low as 2! …). Now with the tweaked setting a lot of the noise, hissing, and other compression artifacts experienced with A2DP under Mac OS X are gone! :-)
On the way I found out something likewise interesting: The menu extra’s (the little widgets in the top-right area of the menu) show alternate versions when clicked with the Option key hold down (unlike other, regular, option-click context menus for this easter egg a possibly enabled, real right click is not enough, you have to Option-click).
For example the WiFi one shows some internals: BSSID, PHY mode, channel, encryption, … the Audio one lets you switch your audio sources (!!!), the Battery one shows the condition, and the Bluetooth one display the version, and entries for the Bluetooth Explorer, Diagnostics Utility, and PacketLogger. Neat!
Which finally brings me to the UI way to do this tweak: Option-click the Bluetooth Menu Extra : Open Bluetooth Explorer : Utilities : Special Options… : Audio Options : For A2DP connections use these bitpool values: Minimum : 52
Personally I find the “Special Options…” particularly amusing.
By-the-way: performance metric on the side, on an underperforming Atom Z530 iTunes consumes 11% CPU (3% on a 2.2GHz MacBookPro) decoding an average MP3, and the BluetoothAudioAgent a little more than 16% (5% on a 2.2GHz MacBookPro) to encode the audio stream into the sub-standard SBC (Sub-Band-Codec). Not only would MP3 codec over A2DP support in more headsets and Bluetooth stacks save at least those 16% of the re-encoding, it would also save some of the 11% initial decoding, and improve audio quality by magnitudes!
Hardware vendors, please? Guess it’s time to bring my own advanced-codec Bluetooth headsets to the market :-)