Hi,
I am setting up openbsc with LCR and Asterisk to provide external connectivity for the GSM clients, and I encountered and interesting problem.
If the GSM phone initiates a voice call towards a SIP phone it works perfectly, the voice goes both ways, the quality is OK, everything is fine.
But when the SIP phones initiates a voice call towards the GSM phone, only the SIP phone can hear the voice of the GSM phone, and not the other way around (half sided call). The connection setup works both ways just fine.
The GSM and the SIP phone can also call the asterisk test numbers, and even can do echo test just fine. The two GSM phones can call each other too without any problem.
Does somebody has any idea what could go wrong?
Config:
E1 based Nokia BTS with DAHDI card and TCH/F FR codec. The SIP phone uses Alaw, LCR also set to use Alaw.
The LCR is bridged to Asterisk, interface.conf:
[GSM] gsm-bs tones yes earlyb no bridge ast
[ast] remote asterisk context from-lcr earlyb no tones yes bridge GSM
routing.conf is completely empty.
Astrisk SIP.conf:
[general] context=incoming disallow=all allow=alaw allow=ulaw allow=gsm transport=udp udpbindaddr=0.0.0.0 tcpenable=no tcpbindaddr=0.0.0.0 tlsenable=no tlsbindaddr=0.0.0.0
[5010] type=friend username=5010 secret=123456 dtmfmode=rfc2833 callerid="5010" <5010> host=dynamic canreinvite=no context=myphones
Asterisk extensions.conf
[general] static=yes writeprotect=no clearglobalvars=no
[globals] ; Global variables goes here
[incoming] ; Nothing should land here yet, but every context should end in ; a Hangup(), so we do that. exten => s,1,Hangup()
[myphones] ; When we dial something from the phones we just added in ; sip.conf, Asterisk will look for a matching extension here, ; in this context.
; SIP phone exten => 5010,1,Dial(SIP/5010) exten => 5010,n,Hangup()
; Another SIp phone ;exten => 1001,1,Dial(SIP/1001) ;exten => 1001,n,Hangup()
; GSM phone 1 exten => 12346,1,Dial(LCR/ast/${EXTEN:0},60) exten => 12346,n,Hangup()
; GSM phone 2 exten => 12345,1,Dial(LCR/ast/${EXTEN:0},60) exten => 12345,n,Hangup()
; Testing extension exten => 201,1,Answer() exten => 201,n,Playback(levan_polka.mp3) exten => 201,n,Hangup()
; Echo-test, it is good to test if we have sound in both directions. ; The call is answered exten => 202,1,Answer() ; Welcome message is played exten => 202,n,Playback(dir-welcome) ; Play information about the echo test exten => 202,n,Playback(demo-echotest) ; Do the echo test, end with the # key exten => 202,n,Echo() ; Plays information that the echo test is done exten => 202,n,Playback(demo-echodone) ; Goodbye message is played exten => 202,n,Playback(vm-goodbye) ; Hangup() ends the call, hangs up the line exten => 202,n,Hangup()
[from-lcr] include => myphones exten => _X.,1,Dial(LCR/ast/${EXTEN:0},60) exten => 5010,1,Dial(SIP/5010) exten => 5010,n,Hangup()
BR, Csaba
Sipos Csaba wrote:
I am setting up openbsc with LCR and Asterisk to provide external connectivity for the GSM clients, and I encountered and interesting problem.
I'd suggest to make LCR use SIP for communcation with Asterisk. See http://stuge.se/lcr.txt for a minimal example of LCR configuration.
Since you're using bridging you might also want to try rtp-bridge between GSM and SIP, which could allow GSM phones and SIP phones to negotiate codec directly, avoiding any transcoding. (But maybe it only works with Abis over IP and not over ISDN? I'm not sure.)
But when the SIP phones initiates a voice call towards the GSM phone, only the SIP phone can hear the voice of the GSM phone, and not the other way around (half sided call).
You can of course continue to debug the LCR-Asterisk module but I would suggest moving to SIP since I think working with SIP on both legs makes debugging a bit easier.
//Peter
Sipos Csaba wrote:
But when the SIP phones initiates a voice call towards the GSM phone, only the SIP phone can hear the voice of the GSM phone, and not the other way around (half sided call). The connection setup works both ways just fine.
hi sipos,
can you start LCR, do one call towards GSM phone and send the /usr/local/var/log/lcr/log file part of this call?
regards,
andreas