[Galaxy S I9000 Android Development] spoidar:
Tried connecting my Galaxy S to some A2DP speakers, found it would pair then fail to connect, constantly reporting "Paired but not connected".

After a bit of poking around, I found in /system/etc/bluez/audio.conf:

# Configuration file for the audio service

# This section contains options which are not specific to any
# particular interface
# NOTE: Enable=Sink means that bluetoothd exposes Sink interface for remote
# devices, and the local device is a Source
[General]
Enable=Sink,Control
Disable=Headset,Gateway,Source

# Switch to master role for incoming connections (defaults to true)
#Master=true

# SCO routing. Either PCM or HCI (in which case audio is routed to/from ALSA)
# Defaults to HCI
#SCORouting=PCM

# Automatically connect both A2DP and HFP/HSP profiles for incoming
# connections. Some headsets that support both profiles will only connect the
# other one automatically so the default setting of true is usually a good
# idea.
#AutoConnect=true

# Headset interface specific options (i.e. options which affect how the audio
# service interacts with remote headset devices)
#[Headset]

# Set to true to support HFP (in addition to HSP only which is the default)
# Defaults to false
#HFP=true

# Maximum number of connected HSP/HFP devices per adapter. Defaults to 1
#MaxConnections=1

# Just an example of potential config options for the other interfaces
[A2DP]
SBCSources=1
MPEG12Sources=0

[AVRCP]
InputDeviceName=AVRCP

Changed to:

# Configuration file for the audio service

# This section contains options which are not specific to any
# particular interface
# NOTE: Enable=Sink means that bluetoothd exposes Sink interface for remote
# devices, and the local device is a Source
[General]
Enable=Sink,Control,Headset,Gateway,Source
#Disable=

# Switch to master role for incoming connections (defaults to true)
#Master=true

# SCO routing. Either PCM or HCI (in which case audio is routed to/from ALSA)
# Defaults to HCI
#SCORouting=PCM

# Automatically connect both A2DP and HFP/HSP profiles for incoming
# connections. Some headsets that support both profiles will only connect the
# other one automatically so the default setting of true is usually a good
# idea.
AutoConnect=true

# Headset interface specific options (i.e. options which affect how the audio
# service interacts with remote headset devices)
#[Headset]

# Set to true to support HFP (in addition to HSP only which is the default)
# Defaults to false
HFP=true

# Maximum number of connected HSP/HFP devices per adapter. Defaults to 1
#MaxConnections=1

# Just an example of potential config options for the other interfaces
[A2DP]
SBCSources=1
MPEG12Sources=0

[AVRCP]
InputDeviceName=AVRCP

Rebooted, and everything works like a charm. Probably only need to enable the additional profiles.

Here's the diff for those so inclined:

--- audio.conf.dist
+++ audio.conf
@@ -5,8 +5,8 @@
# NOTE: Enable=Sink means that bluetoothd exposes Sink interface for remote
# devices, and the local device is a Source
[General]
-Enable=Sink,Control
-Disable=Headset,Gateway,Source
+Enable=Sink,Control,Headset,Gateway,Source
+#Disable=

# Switch to master role for incoming connections (defaults to true)
#Master=true
@@ -19,7 +19,7 @@
# connections. Some headsets that support both profiles will only connect the
# other one automatically so the default setting of true is usually a good
# idea.
-#AutoConnect=true
+AutoConnect=true

# Headset interface specific options (i.e. options which affect how the audio
# service interacts with remote headset devices)
@@ -27,7 +27,7 @@

# Set to true to support HFP (in addition to HSP only which is the default)
# Defaults to false
-#HFP=true
+HFP=true

# Maximum number of connected HSP/HFP devices per adapter. Defaults to 1
#MaxConnections=1