Grandstream gxp 2010, BLF and incoming calls from outside

Hi. I have a question about setting up BFL with my Grandstream gxp 2010 phones, that is driving me nuts!

I have 2 grandstream gxp 2010 phones. One downstairs and one upstairs. When a call from the outside is coming in, only the phone downstairs is ringing (to avoid waking the baby, who is taking a nap). But it would be nice to pickup the phone upstairs anyway. Hello BFL!

I have set this up and is it working too. But only with internal calls. If I call the phone downstairs (with a third phone) I can pickup the call upstairs. And vice versa. The problem is when a call comes in from outside. Only the phone downstairs rings, as programmed. The BFL light on the phone upstairs is blinking, as programmed. So far, so good. But when I pickup the horn and push the button, I get a busy tone.

TL;DR: BFL is working with internal calls, but not when external calls come in.

Does someone know how to fix this?

Ok, for anyone who is struggling with this problem and landed on this thread, here is what causing the problem and how to solve it.

Lets say this is your dialplan

[myhome]
exten => 10,hint,SIP/livingroom
exten => 11,hint,SIP/bedroom

exten => s,n,Dial(SIP/livingroom&SIP/bedroom,30,kKtT)
exten => s,n,Hangup()

exten => 10,1,Dial(SIP/livingroom,30,kKtT)
same => n,Hangup()

exten => 11,1,Dial(SIP/bedroom,30,kKtT)
same => n,Hangup()

Very simple. 2 SIP-devices. One in the livingroom and one in the bedroom. Two hints, to monitor the status of both devices and make BLF work. And if an external call comes in, it’s send to both SIP-devices.

But here is what’s going wrong. If extension 10 is called internally, Asterisk knows the extension is called. And therefore you can pick it up from another device. Most likely via the BLF-button. But when an external call comes in, Asterisk directs directly to the SIP-devices. And that means extension 10 isn’t called. Not as fas as Asterisk is concerned, anyway. So you can push that BLF-button all you want, it’s going to give a busy tone.

The solution is not to direct incoming calls directly to the SIP-devices themselves, but instead to the appropriate extension. This can be done with Local, instead of SIP.

[myhome]
exten => 10,hint,SIP/livingroom
exten => 11,hint,SIP/bedroom

exten => s,n,Dial(Local/10@myhome&Local/11@myhome,30,kKtT)
exten => s,n,Hangup()

exten => 10,1,Dial(SIP/livingroom,30,kKtT)
same => n,Hangup()

exten => 11,1,Dial(SIP/bedroom,30,kKtT)
same => n,Hangup()

Now Asterisk is going to call extension 10 and therefore knows about it. And now the call can be picked up from another location. The @contextname was mandatory in my case. Leaving it out didn’t work. Even when everything is in the same context.

This problem has been bugging me for months. I’ve been plowing through forums and everything. I did notice this was a common problem, because it’s asked a lot. But no sulotions. Now I finally managed to fix it!

I hope this solution will benefit someone.