From: Mikel Astiz <mikel.astiz@xxxxxxxxxxxx> This second proposal is similar to v0 with the following improvements as suggested by Tanu: 1. setup_stream() is called directly from thread_func() to avoid a race condition. 2. The profile switch to "hsp" or "a2dp" now fails if the bt_transport_acquire() fails. This avoids the unlikely but still undesired situation of PA_SUSPEND_IDLE state, which the user could not easily fix. >From original cover-letter: Current module-bluetooth-device relies on module-suspend-on-idle with regard to when the audio-stream (SCO) gets resumed/suspended. The bluetooth card assumes that SCO should be down (i.e. saving battery and radio bandwidth) until somebody starts to use it. This can be considered a regresion in case some average users have PulseAudio without module-suspend-on-idle. Therefore, the simplest solution -only affecting the use headsets- would be to start SCO by default, and wait until it gets suspended some seconds later. Mikel Astiz (3): bluetooth: Trivially refactor to call setup_stream() directly bluetooth: Do not setup stream before thread starts bluetooth: Request headset audio during profile switch src/modules/bluetooth/module-bluetooth-device.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) -- 1.7.11.7