Hi Jaganath, On Wed, May 02, 2012, Jaganath Kanakkassery wrote: > When bluez initiates headset connection hfp and hs handle is saved > each time when initiating connection. So at some point if hf service > is removed in remote headset then bluez connects to hs service. But > because of previously stored hfp handle bluez thinks that connection > made to hs service is hfp connection and waits for at commands. > Eventually bluez connection state will be incorrectly set. > --- > audio/headset.c | 2 ++ > 1 files changed, 2 insertions(+), 0 deletions(-) > > diff --git a/audio/headset.c b/audio/headset.c > index 04b26a9..27367d7 100644 > --- a/audio/headset.c > +++ b/audio/headset.c > @@ -1462,6 +1462,8 @@ static int headset_set_channel(struct headset *headset, > } > > headset->rfcomm_ch = ch; > + headset->hfp_handle = 0; > + headset->hsp_handle = 0; > > if (svc == HANDSFREE_SVCLASS_ID) { > headset->hfp_handle = record->handle; I'd instead prefer something like the following: if (svc == HANDSFREE_SVCLASS_ID) { headset->hfp_handle = record->handle; + headset->hsp_handle = 0; DBG("Discovered Handsfree service on channel %d", ch); } else { headset->hsp_handle = record->handle; + headset->hfp_handle = 0; DBG("Discovered Headset service on channel %d", ch); } Would that be ok? Johan -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html