wdoekes / asterisk-chan-dongle

chan_dongle channel driver for Huawei UMTS cards, works with Asterisk 14+
Other
299 stars 105 forks source link

Outgoing is Ok, but when Ring and receive call, the asterisk stopped. #160

Open guoxiangke opened 2 years ago

guoxiangke commented 2 years ago

Hi, I use E156G, it works well in raspberry with raspbx. Now I use it on my N1+armbian system. I successfully installed Asterisk 13.14.1 on it and make the dongle works. But the asterisk stopped without no useful info. Thanks in advance.

Version info:

aml*CLI> dongle show devices
Disconnected from Asterisk server
Asterisk cleanly ending (0).
Executing last minute cleanups
root@aml:~# asterisk -r
Asterisk 13.14.1~dfsg-2+deb9u6, Copyright (C) 1999 - 2014, Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Connected to Asterisk 13.14.1~dfsg-2+deb9u6 currently running on aml (pid = 5714)
aml*CLI> module show like dongle
Module                         Description                              Use Count  Status      Support Level
chan_dongle.so                 Huawei 3G Dongle Channel Driver          0          Running          extended
1 modules loaded
aml*CLI> dongle show devices
ID           Group State      RSSI Mode Submode Provider Name  Model      Firmware          IMEI             IMSI             Number
dongle0      0     Free       24   3    3       CMCC           E156G      11.609.10.02.432  359***3  460***182  +85137***9

Error info from CLI when receive calling.

aml*CLI> 
    -- Executing [+85137***9@from-trunk-dongle:1] Set("Dongle/dongle0-0100000001", "CALLERID(name)=1563****") in new stack
    -- Executing [+85137***9@from-trunk-dongle:2] Goto("Dongle/dongle0-0100000001", "from-trunk,+85137***9,1") in new stack
    -- Goto (from-trunk,+85137***9,1)
    -- Executing [+85137***9@from-trunk:1] NoOp("Dongle/dongle0-0100000001", "Catch-All DID Match - Found +85137***9 - You probably want a DID for this.") in new stack
    -- Executing [+85137***9@from-trunk:2] Set("Dongle/dongle0-0100000001", "__FROM_DID=+85137***9") in new stack
    -- Executing [+85137***9@from-trunk:3] Goto("Dongle/dongle0-0100000001", "ext-did,s,1") in new stack
    -- Goto (ext-did,s,1)
    -- Executing [s@ext-did:1] Set("Dongle/dongle0-0100000001", "__DIRECTION=INBOUND") in new stack
    -- Executing [s@ext-did:2] Set("Dongle/dongle0-0100000001", "CHANNEL(tonezone)=us") in new stack
    -- Executing [s@ext-did:3] ExecIf("Dongle/dongle0-0100000001", "0?Set(__FROM_DID=s)") in new stack
    -- Executing [s@ext-did:4] Set("Dongle/dongle0-0100000001", "CDR(did)=+85137***9") in new stack
    -- Executing [s@ext-did:5] ExecIf("Dongle/dongle0-0100000001", "0 ?Set(CALLERID(name)=1563****)") in new stack
    -- Executing [s@ext-did:6] Set("Dongle/dongle0-0100000001", "__MOHCLASS=") in new stack
    -- Executing [s@ext-did:7] Set("Dongle/dongle0-0100000001", "__REVERSAL_REJECT=FALSE") in new stack
    -- Executing [s@ext-did:8] GotoIf("Dongle/dongle0-0100000001", "1?post-reverse-charge") in new stack
    -- Goto (ext-did,s,10)
    -- Executing [s@ext-did:10] NoOp("Dongle/dongle0-0100000001", "") in new stack
    -- Executing [s@ext-did:11] Set("Dongle/dongle0-0100000001", "__CALLINGNAMEPRES_SV=allowed_not_screened") in new stack
    -- Executing [s@ext-did:12] Set("Dongle/dongle0-0100000001", "__CALLINGNUMPRES_SV=allowed_not_screened") in new stack
    -- Executing [s@ext-did:13] Set("Dongle/dongle0-0100000001", "CALLERID(name-pres)=allowed_not_screened") in new stack
    -- Executing [s@ext-did:14] Set("Dongle/dongle0-0100000001", "CALLERID(num-pres)=allowed_not_screened") in new stack
    -- Executing [s@ext-did:15] NoOp("Dongle/dongle0-0100000001", "CallerID Entry Point") in new stack
    -- Executing [s@ext-did:16] Goto("Dongle/dongle0-0100000001", "from-did-direct,801,1") in new stack
    -- Goto (from-did-direct,801,1)
    -- Executing [801@from-did-direct:1] Set("Dongle/dongle0-0100000001", "__RINGTIMER=15") in new stack
    -- Executing [801@from-did-direct:2] ExecIf("Dongle/dongle0-0100000001", "0?Set(__CWIGNORE=)") in new stack
    -- Executing [801@from-did-direct:3] Macro("Dongle/dongle0-0100000001", "exten-vm,novm,801,0,0,0") in new stack
    -- Executing [s@macro-exten-vm:1] Macro("Dongle/dongle0-0100000001", "user-callerid,") in new stack
    -- Executing [s@macro-user-callerid:1] Set("Dongle/dongle0-0100000001", "TOUCH_MONITOR=1653602111.4") in new stack
    -- Executing [s@macro-user-callerid:2] Set("Dongle/dongle0-0100000001", "CHANCONTEXT=") in new stack
    -- Executing [s@macro-user-callerid:3] Set("Dongle/dongle0-0100000001", "CHANCONTEXT=") in new stack
    -- Executing [s@macro-user-callerid:4] Set("Dongle/dongle0-0100000001", "CHANEXTENCONTEXT=dongle0-0100000001") in new stack
    -- Executing [s@macro-user-callerid:5] Set("Dongle/dongle0-0100000001", "CHANEXTEN=dongle0-0100000001") in new stack
    -- Executing [s@macro-user-callerid:6] Set("Dongle/dongle0-0100000001", "CALLERID(number)=1563****") in new stack
    -- Executing [s@macro-user-callerid:7] Set("Dongle/dongle0-0100000001", "AMPUSER=1563****") in new stack
    -- Executing [s@macro-user-callerid:8] Set("Dongle/dongle0-0100000001", "HOTDESCKCHAN=dongle0-0100000001") in new stack
    -- Executing [s@macro-user-callerid:9] Set("Dongle/dongle0-0100000001", "HOTDESKEXTEN=dongle0") in new stack
    -- Executing [s@macro-user-callerid:10] Set("Dongle/dongle0-0100000001", "HOTDESKCALL=0") in new stack
    -- Executing [s@macro-user-callerid:11] ExecIf("Dongle/dongle0-0100000001", "0?Set(HOTDESKCALL=1)") in new stack
    -- Executing [s@macro-user-callerid:12] ExecIf("Dongle/dongle0-0100000001", "0?Set(CALLERID(name)=)") in new stack
    -- Executing [s@macro-user-callerid:13] GotoIf("Dongle/dongle0-0100000001", "0?report") in new stack
    -- Executing [s@macro-user-callerid:14] ExecIf("Dongle/dongle0-0100000001", "1?Set(REALCALLERIDNUM=1563****)") in new stack
    -- Executing [s@macro-user-callerid:15] Set("Dongle/dongle0-0100000001", "AMPUSER=") in new stack
    -- Executing [s@macro-user-callerid:16] GotoIf("Dongle/dongle0-0100000001", "0?limit") in new stack
    -- Executing [s@macro-user-callerid:17] Set("Dongle/dongle0-0100000001", "AMPUSERCIDNAME=") in new stack
    -- Executing [s@macro-user-callerid:18] ExecIf("Dongle/dongle0-0100000001", "0?Set(__CIDMASQUERADING=TRUE)") in new stack
    -- Executing [s@macro-user-callerid:19] GotoIf("Dongle/dongle0-0100000001", "1?report") in new stack
    -- Goto (macro-user-callerid,s,27)
    -- Executing [s@macro-user-callerid:27] NoOp("Dongle/dongle0-0100000001", "Macro Depth is 2") in new stack
    -- Executing [s@macro-user-callerid:28] GotoIf("Dongle/dongle0-0100000001", "1?report2:macroerror") in new stack
    -- Goto (macro-user-callerid,s,29)
    -- Executing [s@macro-user-callerid:29] GotoIf("Dongle/dongle0-0100000001", "0?continue") in new stack
    -- Executing [s@macro-user-callerid:30] Set("Dongle/dongle0-0100000001", "__TTL=64") in new stack
    -- Executing [s@macro-user-callerid:31] GotoIf("Dongle/dongle0-0100000001", "1?continue") in new stack
    -- Goto (macro-user-callerid,s,47)
    -- Executing [s@macro-user-callerid:47] Set("Dongle/dongle0-0100000001", "CALLERID(number)=1563****") in new stack
    -- Executing [s@macro-user-callerid:48] Set("Dongle/dongle0-0100000001", "CALLERID(name)=1563****") in new stack
    -- Executing [s@macro-user-callerid:49] GotoIf("Dongle/dongle0-0100000001", "0?cnum") in new stack
    -- Executing [s@macro-user-callerid:50] Set("Dongle/dongle0-0100000001", "CDR(cnam)=1563****") in new stack
    -- Executing [s@macro-user-callerid:51] Set("Dongle/dongle0-0100000001", "CDR(cnum)=1563****") in new stack
    -- Executing [s@macro-user-callerid:52] Set("Dongle/dongle0-0100000001", "CHANNEL(language)=en") in new stack
    -- Executing [s@macro-exten-vm:2] Set("Dongle/dongle0-0100000001", "RingGroupMethod=none") in new stack
    -- Executing [s@macro-exten-vm:3] Set("Dongle/dongle0-0100000001", "__EXTTOCALL=801") in new stack
    -- Executing [s@macro-exten-vm:4] Set("Dongle/dongle0-0100000001", "__PICKUPMARK=801") in new stack
    -- Executing [s@macro-exten-vm:5] Set("Dongle/dongle0-0100000001", "RT=") in new stack
    -- Executing [s@macro-exten-vm:6] Gosub("Dongle/dongle0-0100000001", "sub-record-check,s,1(exten,801,dontcare)") in new stack
    -- Executing [s@sub-record-check:1] GotoIf("Dongle/dongle0-0100000001", "0?initialized") in new stack
    -- Executing [s@sub-record-check:2] Set("Dongle/dongle0-0100000001", "__REC_STATUS=INITIALIZED") in new stack
    -- Executing [s@sub-record-check:3] Set("Dongle/dongle0-0100000001", "NOW=1653602111") in new stack
    -- Executing [s@sub-record-check:4] Set("Dongle/dongle0-0100000001", "__DAY=26") in new stack
    -- Executing [s@sub-record-check:5] Set("Dongle/dongle0-0100000001", "__MONTH=05") in new stack
    -- Executing [s@sub-record-check:6] Set("Dongle/dongle0-0100000001", "__YEAR=2022") in new stack
    -- Executing [s@sub-record-check:7] Set("Dongle/dongle0-0100000001", "__TIMESTR=20220526-215511") in new stack
    -- Executing [s@sub-record-check:8] Set("Dongle/dongle0-0100000001", "__FROMEXTEN=1563****") in new stack
    -- Executing [s@sub-record-check:9] Set("Dongle/dongle0-0100000001", "__MON_FMT=wav") in new stack
    -- Executing [s@sub-record-check:10] NoOp("Dongle/dongle0-0100000001", "Recordings initialized") in new stack
    -- Executing [s@sub-record-check:11] ExecIf("Dongle/dongle0-0100000001", "0?Set(ARG3=dontcare)") in new stack
    -- Executing [s@sub-record-check:12] Set("Dongle/dongle0-0100000001", "REC_POLICY_MODE_SAVE=") in new stack
    -- Executing [s@sub-record-check:13] ExecIf("Dongle/dongle0-0100000001", "0?Set(REC_STATUS=NO)") in new stack
    -- Executing [s@sub-record-check:14] GotoIf("Dongle/dongle0-0100000001", "5?checkaction") in new stack
    -- Goto (sub-record-check,s,17)
    -- Executing [s@sub-record-check:17] GotoIf("Dongle/dongle0-0100000001", "1?sub-record-check,exten,1") in new stack
    -- Goto (sub-record-check,exten,1)
    -- Executing [exten@sub-record-check:1] NoOp("Dongle/dongle0-0100000001", "Exten Recording Check between 1563**** and 801") in new stack
    -- Executing [exten@sub-record-check:2] Set("Dongle/dongle0-0100000001", "CALLTYPE=external") in new stack
    -- Executing [exten@sub-record-check:3] ExecIf("Dongle/dongle0-0100000001", "0?Set(CALLTYPE=)") in new stack
    -- Executing [exten@sub-record-check:4] Set("Dongle/dongle0-0100000001", "CALLEE=dontcare") in new stack
    -- Executing [exten@sub-record-check:5] ExecIf("Dongle/dongle0-0100000001", "0?Set(CALLEE=dontcare)") in new stack
    -- Executing [exten@sub-record-check:6] GotoIf("Dongle/dongle0-0100000001", "1?callee") in new stack
    -- Goto (sub-record-check,exten,11)
    -- Executing [exten@sub-record-check:11] Gosub("Dongle/dongle0-0100000001", "recordcheck,1(dontcare,external,801)") in new stack
    -- Executing [recordcheck@sub-record-check:1] NoOp("Dongle/dongle0-0100000001", "Starting recording check against dontcare") in new stack
    -- Executing [recordcheck@sub-record-check:2] Goto("Dongle/dongle0-0100000001", "dontcare") in new stack
    -- Goto (sub-record-check,recordcheck,3)
    -- Executing [recordcheck@sub-record-check:3] Return("Dongle/dongle0-0100000001", "") in new stack
    -- Executing [exten@sub-record-check:12] Return("Dongle/dongle0-0100000001", "") in new stack
    -- Executing [s@macro-exten-vm:7] GotoIf("Dongle/dongle0-0100000001", "1?macrodial") in new stack
    -- Goto (macro-exten-vm,s,13)
    -- Executing [s@macro-exten-vm:13] GosubIf("Dongle/dongle0-0100000001", "0?clrheader,1()") in new stack
    -- Executing [s@macro-exten-vm:14] Macro("Dongle/dongle0-0100000001", "dial-one,,HhTtr,801") in new stack
    -- Executing [s@macro-dial-one:1] Set("Dongle/dongle0-0100000001", "DEXTEN=801") in new stack
    -- Executing [s@macro-dial-one:2] ExecIf("Dongle/dongle0-0100000001", "0?Set(__EXTTOCALL=801)") in new stack
    -- Executing [s@macro-dial-one:3] Set("Dongle/dongle0-0100000001", "DIALSTATUS_CW=") in new stack
    -- Executing [s@macro-dial-one:4] GosubIf("Dongle/dongle0-0100000001", "0?screen,1()") in new stack
    -- Executing [s@macro-dial-one:5] GosubIf("Dongle/dongle0-0100000001", "0?cf,1()") in new stack
    -- Executing [s@macro-dial-one:6] GotoIf("Dongle/dongle0-0100000001", "1?skip1") in new stack
    -- Goto (macro-dial-one,s,9)
    -- Executing [s@macro-dial-one:9] GotoIf("Dongle/dongle0-0100000001", "0?nodial") in new stack
    -- Executing [s@macro-dial-one:10] GotoIf("Dongle/dongle0-0100000001", "0?continue") in new stack
    -- Executing [s@macro-dial-one:11] Set("Dongle/dongle0-0100000001", "EXTHASCW=ENABLED") in new stack
    -- Executing [s@macro-dial-one:12] GotoIf("Dongle/dongle0-0100000001", "0?next1:cwinusebusy") in new stack
    -- Goto (macro-dial-one,s,24)
    -- Executing [s@macro-dial-one:24] GotoIf("Dongle/dongle0-0100000001", "0?next3:continue") in new stack
    -- Goto (macro-dial-one,s,26)
    -- Executing [s@macro-dial-one:26] GotoIf("Dongle/dongle0-0100000001", "0?nodial") in new stack
    -- Executing [s@macro-dial-one:27] GosubIf("Dongle/dongle0-0100000001", "1?dstring,1():dlocal,1()") in new stack
    -- Executing [dstring@macro-dial-one:1] Set("Dongle/dongle0-0100000001", "DSTRING=") in new stack
    -- Executing [dstring@macro-dial-one:2] Set("Dongle/dongle0-0100000001", "DEVICES=801") in new stack
    -- Executing [dstring@macro-dial-one:3] ExecIf("Dongle/dongle0-0100000001", "0?Return()") in new stack
    -- Executing [dstring@macro-dial-one:4] ExecIf("Dongle/dongle0-0100000001", "0?Set(DEVICES=01)") in new stack
    -- Executing [dstring@macro-dial-one:5] Set("Dongle/dongle0-0100000001", "LOOPCNT=1") in new stack
    -- Executing [dstring@macro-dial-one:6] Set("Dongle/dongle0-0100000001", "ITER=1") in new stack
    -- Executing [dstring@macro-dial-one:7] Set("Dongle/dongle0-0100000001", "THISDIAL=SIP/801") in new stack
    -- Executing [dstring@macro-dial-one:8] GotoIf("Dongle/dongle0-0100000001", "1?docheck") in new stack
    -- Goto (macro-dial-one,dstring,14)
    -- Executing [dstring@macro-dial-one:14] GotoIf("Dongle/dongle0-0100000001", "0?skipset") in new stack
    -- Executing [dstring@macro-dial-one:15] Set("Dongle/dongle0-0100000001", "DSTRING=SIP/801&") in new stack
    -- Executing [dstring@macro-dial-one:16] Set("Dongle/dongle0-0100000001", "ITER=2") in new stack
    -- Executing [dstring@macro-dial-one:17] GotoIf("Dongle/dongle0-0100000001", "0?begin") in new stack
    -- Executing [dstring@macro-dial-one:18] ExecIf("Dongle/dongle0-0100000001", "0?Return()") in new stack
    -- Executing [dstring@macro-dial-one:19] Set("Dongle/dongle0-0100000001", "DSTRING=SIP/801") in new stack
    -- Executing [dstring@macro-dial-one:20] Return("Dongle/dongle0-0100000001", "") in new stack
    -- Executing [s@macro-dial-one:28] GotoIf("Dongle/dongle0-0100000001", "0?nodial") in new stack
    -- Executing [s@macro-dial-one:29] GotoIf("Dongle/dongle0-0100000001", "0?skiptrace") in new stack
    -- Executing [s@macro-dial-one:30] GosubIf("Dongle/dongle0-0100000001", "1?ctset,1():ctclear,1()") in new stack
    -- Executing [ctset@macro-dial-one:1] Set("Dongle/dongle0-0100000001", "DB(CALLTRACE/801)=1563****") in new stack
    -- Executing [ctset@macro-dial-one:2] Return("Dongle/dongle0-0100000001", "") in new stack
    -- Executing [s@macro-dial-one:31] Set("Dongle/dongle0-0100000001", "D_OPTIONS=HhTtr") in new stack
    -- Executing [s@macro-dial-one:32] GosubIf("Dongle/dongle0-0100000001", "0?func-set-sipheader,s,1(Alert-Info,)") in new stack
    -- Executing [s@macro-dial-one:33] NoOp("Dongle/dongle0-0100000001", "Blind Transfer: , Attended Transfer: , User: , Alert Info: ") in new stack
    -- Executing [s@macro-dial-one:34] ExecIf("Dongle/dongle0-0100000001", "0?Set(ALERT_INFO=)") in new stack
    -- Executing [s@macro-dial-one:35] ExecIf("Dongle/dongle0-0100000001", "0?Set(ALERT_INFO=)") in new stack
    -- Executing [s@macro-dial-one:36] ExecIf("Dongle/dongle0-0100000001", "0?Set(ALERT_INFO=)") in new stack
    -- Executing [s@macro-dial-one:37] ExecIf("Dongle/dongle0-0100000001", "0?Set(ALERT_INFO=Normal;volume=)") in new stack
    -- Executing [s@macro-dial-one:38] ExecIf("Dongle/dongle0-0100000001", "0?Set(ALERT_INFO=Normal;volume=)") in new stack
    -- Executing [s@macro-dial-one:39] GosubIf("Dongle/dongle0-0100000001", "0?func-set-sipheader,s,1(Alert-Info,)") in new stack
    -- Executing [s@macro-dial-one:40] ExecIf("Dongle/dongle0-0100000001", "0?Set(CHANNEL(musicclass)=)") in new stack
    -- Executing [s@macro-dial-one:41] GosubIf("Dongle/dongle0-0100000001", "0?qwait,1()") in new stack
    -- Executing [s@macro-dial-one:42] Set("Dongle/dongle0-0100000001", "__CWIGNORE=") in new stack
    -- Executing [s@macro-dial-one:43] Set("Dongle/dongle0-0100000001", "__KEEPCID=TRUE") in new stack
    -- Executing [s@macro-dial-one:44] GotoIf("Dongle/dongle0-0100000001", "0?usegoto,1") in new stack
    -- Executing [s@macro-dial-one:45] GotoIf("Dongle/dongle0-0100000001", "1?godial") in new stack
    -- Goto (macro-dial-one,s,50)
    -- Executing [s@macro-dial-one:50] Macro("Dongle/dongle0-0100000001", "dialout-one-predial-hook,") in new stack
    -- Executing [s@macro-dialout-one-predial-hook:1] MacroExit("Dongle/dongle0-0100000001", "") in new stack
    -- Executing [s@macro-dial-one:51] ExecIf("Dongle/dongle0-0100000001", "1?Set(D_OPTIONS=HhtrI)") in new stack
    -- Executing [s@macro-dial-one:52] ExecIf("Dongle/dongle0-0100000001", "0?Set(CWRING=r(callwaiting)):Set(CWRING=)") in new stack
    -- Executing [s@macro-dial-one:53] NoOp("Dongle/dongle0-0100000001", "") in new stack
    -- Executing [s@macro-dial-one:54] Dial("Dongle/dongle0-0100000001", "SIP/801,,HhtrIb(func-apply-sipheaders^s^1)") in new stack
  == Using SIP RTP TOS bits 184
  == Using SIP RTP CoS mark 5
    -- SIP/801-00000001 Internal Gosub(func-apply-sipheaders,s,1) start
    -- Executing [s@func-apply-sipheaders:1] NoOp("SIP/801-00000001", "Applying SIP Headers to channel SIP/801-00000001") in new stack
    -- Executing [s@func-apply-sipheaders:2] Set("SIP/801-00000001", "TECH=SIP") in new stack
aml*CLI> dongle show devices
Disconnected from Asterisk server
Asterisk cleanly ending (0).
Executing last minute cleanups
wdoekes commented 1 year ago

Looks like a segfault to me.

Did you check dmesg afterwards? It probably says asterisk has crashed.

You'll want to run asterisk from gdb and get backtrace/memory info from that when it crashes.

# gdb asterisk
gdb> run -c
asterisk> dongle show devices
gdb> bt
gdb> bt full
...