Digium TDM2400P willl not dial out or receive calls

I’m trying to set up an Asterisk PBX to replace my Panasonic Hybrid 6x16 PBX currently in service.
I’m running Asterisk version 13.12.1
I have one 4-port FXO board X400M (slots 1-4) and five FXS boards S400M (slots 5-24) installed on the 24-port PCI card.
I have two copper POTS lines coming in, “house” and “FAX” with a third line via a Magic Jack for my garage (play room).
I got the extensions working with four ring groups. House, FAX, garage and door phone.

I thought I had it figured out. Using DAHDI Channel DIDs
Assigning the last four digits of the incoming lines as the DID.
I set up Inbound Routes to specific Ring Groups based on the DID.
I set up Trunks based on the DID and Outbound Routes.

Obviously I got something wrong.
Incoming calls act like there is nothing connected to the phone lines.
Outgoing calls just give me a busy signal.

The existing system has all analog phones and CAT3 wiring. Please don’t suggest SIP or VoIP.

If your answer is “RTFM” or “Search FreePBX or Wiki.FreePBX” I’ve already done that, that’s why I’m here. If you have a specific link to something that I missed, pease post it here.

Thank you.

logs of calls that don’t work always help without them, you will only get guesses.

At the command prompt on the PC: # asterisk -rvvvvvvvvvv > /media/usb/trunklog.txt

e[0mAsterisk 13.12.1, Copyright © 1999 - 2014, Digium, Inc. and others.
Created by Mark Spencer [email protected]
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.

e[0me[0mConnected to Asterisk 13.12.1 currently running on craeger-house (pid = 2525)
craeger-house*CLI>
e[0Ke[1;30m – e[0mStarting simple switch on ‘DAHDI/11-1’

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mHanging up on 'DAHDI/11-1’
e[1;30m – e[0mHungup ‘DAHDI/11-1’

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mStarting simple switch on ‘DAHDI/11-1’

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [12542101939@from-internal:1] e[1;36mMacroe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35muser-callerid,LIMIT,EXTERNAL,e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-user-callerid:1] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mTOUCH_MONITOR=1517877339.44e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-user-callerid:2] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mAMPUSER=201e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-user-callerid:3] e[1;36mGotoIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?reporte[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-user-callerid:4] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m1?Set(REALCALLERIDNUM=201)e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-user-callerid:5] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mAMPUSER=201e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-user-callerid:6] e[1;36mGotoIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?limite[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-user-callerid:7] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mAMPUSERCIDNAME=Office FAXe[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-user-callerid:8] e[1;36mGotoIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?reporte[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-user-callerid:9] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mAMPUSERCID=201e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-user-callerid:10] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m__DIAL_OPTIONS=Ttre[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-user-callerid:11] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mCALLERID(all)=“Office FAX” <201>e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-user-callerid:12] e[1;36mGotoIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?limite[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-user-callerid:13] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m1?Set(GROUP(concurrency_limit)=201)e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-user-callerid:14] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?Set(CHANNEL(language)=)e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-user-callerid:15] e[1;36mNoOpe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mMacro Depth is 1e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-user-callerid:16] e[1;36mGotoIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m1?report2:macroerrore[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mGoto (macro-user-callerid,s,18)

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-user-callerid:18] e[1;36mGotoIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m1?continuee[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mGoto (macro-user-callerid,s,36)

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-user-callerid:36] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mCALLERID(number)=201e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-user-callerid:37] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mCALLERID(name)=Office FAXe[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-user-callerid:38] e[1;36mGotoIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?cnume[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-user-callerid:39] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mCDR(cnam)=Office FAXe[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-user-callerid:40] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mCDR(cnum)=201e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-user-callerid:41] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mCHANNEL(language)=ene[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [12542101939@from-internal:2] e[1;36mGosube[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35msub-record-check,s,1(out,12542101939,dontcare)e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-record-check:1] e[1;36mGotoIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?initializede[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-record-check:2] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m__REC_STATUS=INITIALIZEDe[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-record-check:3] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mNOW=1517877351e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-record-check:4] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m__DAY=05e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-record-check:5] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m__MONTH=02e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-record-check:6] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m__YEAR=2018e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-record-check:7] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m__TIMESTR=20180205-183551e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-record-check:8] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m__FROMEXTEN=201e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-record-check:9] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m__MON_FMT=wave[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-record-check:10] e[1;36mNoOpe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mRecordings initializede[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-record-check:11] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?Set(ARG3=dontcare)e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-record-check:12] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mREC_POLICY_MODE_SAVE=e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-record-check:13] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?Set(REC_STATUS=NO)e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-record-check:14] e[1;36mGotoIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m3?checkactione[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mGoto (sub-record-check,s,17)

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-record-check:17] e[1;36mGotoIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m1?sub-record-check,out,1e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mGoto (sub-record-check,out,1)
e[1;30m – e[0mExecuting [out@sub-record-check:1] e[1;36mNoOpe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mOutbound Recording Check from 201 to 12542101939e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [out@sub-record-check:2] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mRECMODE=dontcaree[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [out@sub-record-check:3] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m1?Goto(routewins)e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mGoto (sub-record-check,out,7)

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [out@sub-record-check:7] e[1;36mGosube[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mrecordcheck,1(dontcare,out,12542101939)e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [recordcheck@sub-record-check:1] e[1;36mNoOpe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mStarting recording check against dontcaree[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [recordcheck@sub-record-check:2] e[1;36mGotoe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mdontcaree[0m”) in new stack
e[1;30m – e[0mGoto (sub-record-check,recordcheck,3)

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [recordcheck@sub-record-check:3] e[1;36mReturne[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35me[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [out@sub-record-check:8] e[1;36mReturne[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35me[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [12542101939@from-internal:3] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0 ?Set(CDR(accountcode)=)e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [12542101939@from-internal:4] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mMOHCLASS=defaulte[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [12542101939@from-internal:5] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?Set(TRUNKCIDOVERRIDE=3108372318)e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [12542101939@from-internal:6] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m_NODEST=e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [12542101939@from-internal:7] e[1;36mMacroe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mdialout-trunk,2,12542101939,offe[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-dialout-trunk:1] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mDIAL_TRUNK=2e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-dialout-trunk:2] e[1;36mGosubIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?sub-pincheck,s,1()e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-dialout-trunk:3] e[1;36mGotoIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?disabletrunk,1e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-dialout-trunk:4] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mDIAL_NUMBER=12542101939e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-dialout-trunk:5] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mDIAL_TRUNK_OPTIONS=Ttre[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-dialout-trunk:6] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mOUTBOUND_GROUP=OUT_2e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-dialout-trunk:7] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mDIAL_TRUNK_OPTIONS=Te[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-dialout-trunk:8] e[1;36mGotoIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?nomaxe[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-dialout-trunk:9] e[1;36mGotoIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?chanfulle[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-dialout-trunk:10] e[1;36mGotoIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?skipoutcide[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-dialout-trunk:11] e[1;36mMacroe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35moutbound-callerid,2e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-outbound-callerid:1] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?Set(CALLERPRES(name-pres)=)e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-outbound-callerid:2] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?Set(CALLERPRES(num-pres)=)e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-outbound-callerid:3] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?Set(REALCALLERIDNUM=201)e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-outbound-callerid:4] e[1;36mGotoIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m1?normcide[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mGoto (macro-outbound-callerid,s,7)

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-outbound-callerid:7] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mUSEROUTCID=3108372378e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-outbound-callerid:8] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mEMERGENCYCID=e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-outbound-callerid:9] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mTRUNKOUTCID=3108372318e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-outbound-callerid:10] e[1;36mGotoIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m1?trunkcide[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mGoto (macro-outbound-callerid,s,15)

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-outbound-callerid:15] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m1?Set(CALLERID(all)=3108372318)e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-outbound-callerid:16] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m1?Set(CALLERID(all)=3108372378)e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-outbound-callerid:17] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?Set(CALLERID(all)=)e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-outbound-callerid:18] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?Set(CALLERPRES(name-pres)=prohib_passed_screen)e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-outbound-callerid:19] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?Set(CALLERPRES(num-pres)=prohib_passed_screen)e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-outbound-callerid:20] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mCDR(outbound_cnum)=3108372378e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-outbound-callerid:21] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mCDR(outbound_cnam)=e[0m”) in new stack

e[Kcraeger-houseCLI>
e[0K[2018-02-05 18:35:51] e[1;31mWARNINGe[0m[2582]: e[1;37mfunc_cdr.ce[0m:e[1;37m383e[0m e[1;37mcdr_write_callbacke[0m: CDR requires a value (CDR(variable)=value)
)
e[Kcraeger-house
CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-dialout-trunk:12] e[1;36mGosubIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m1?sub-flp-2,s,1()e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-flp-2:1] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?Return()e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-flp-2:2] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?Return()e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-flp-2:3] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?Return()e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-flp-2:4] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?Return()e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-flp-2:5] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?Return()e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-flp-2:6] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?Return()e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-flp-2:7] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?Return()e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-flp-2:8] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?Return()e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-flp-2:9] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?Return()e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-flp-2:10] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?Return()e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-flp-2:11] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?Return()e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-flp-2:12] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?Return()e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-flp-2:13] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?Return()e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-flp-2:14] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?Return()e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-flp-2:15] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?Return()e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-flp-2:16] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?Set(TARGET_FLP_2=2542101939)e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-flp-2:17] e[1;36mGotoIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?matche[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-flp-2:18] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?Set(TARGET_FLP_2=2542101939)e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-flp-2:19] e[1;36mGotoIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?matche[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-flp-2:20] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?Set(TARGET_FLP_2=542101939)e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-flp-2:21] e[1;36mGotoIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?matche[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-flp-2:22] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?Return()e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@sub-flp-2:23] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m1?Return()e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-dialout-trunk:13] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mOUTNUM=12542101939e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-dialout-trunk:14] e[1;36mSete[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mcustom=DAHDI/1e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-dialout-trunk:15] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?Set(DIAL_TRUNK_OPTIONS=M(setmusic^default)T)e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-dialout-trunk:16] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?Set(DIAL_TRUNK_OPTIONS=TM(confirm))e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-dialout-trunk:17] e[1;36mMacroe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mdialout-trunk-predial-hook,e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-dialout-trunk-predial-hook:1] e[1;36mMacroExite[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35me[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-dialout-trunk:18] e[1;36mGotoIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?bypass,1e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-dialout-trunk:19] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m1?Set(CONNECTEDLINE(num,i)=12542101939)e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-dialout-trunk:20] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m1?Set(CONNECTEDLINE(name,i)=CID:3108372378)e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-dialout-trunk:21] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?Set(CONNECTEDLINE(name,i)=CID:(Hidden)3108372378)e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-dialout-trunk:22] e[1;36mGotoIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?customtrunke[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-dialout-trunk:23] e[1;36mDiale[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mDAHDI/1/12542101939,300,Te[0m”) in new stack

e[Kcraeger-house*CLI>
e[0K[2018-02-05 18:35:51] e[1;31mWARNINGe[0m[15053][C-00000022]: e[1;37mapp_dial.ce[0m:e[1;37m2524e[0m e[1;37mdial_exec_fulle[0m: Unable to create channel of type ‘DAHDI’ (cause 17 - User busy)
e[1;30m == e[0mEveryone is busy/congested at this time (1:1/0/0)

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-dialout-trunk:24] e[1;36mNoOpe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mDial failed for some reason with DIALSTATUS = BUSY and HANGUPCAUSE = 17e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-dialout-trunk:25] e[1;36mGotoIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?continue,1:s-BUSY,1e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mGoto (macro-dialout-trunk,s-BUSY,1)

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s-BUSY@macro-dialout-trunk:1] e[1;36mNoOpe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mDial failed due to trunk reporting BUSY - giving upe[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s-BUSY@macro-dialout-trunk:2] e[1;36mPlayTonese[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mbusye[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s-BUSY@macro-dialout-trunk:3] e[1;36mBusye[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m20e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m == e[0mSpawn extension (macro-dialout-trunk, s-BUSY, 3) exited non-zero on ‘DAHDI/11-1’ in macro ‘dialout-trunk’

e[Kcraeger-house*CLI>
e[0Ke[1;30m == e[0mSpawn extension (from-internal, 12542101939, 7) exited non-zero on ‘DAHDI/11-1’

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [h@from-internal:1] e[1;36mMacroe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35mhangupcalle[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-hangupcall:1] e[1;36mGotoIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m1?theende[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mGoto (macro-hangupcall,s,3)

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-hangupcall:3] e[1;36mExecIfe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35m0?Set(CDR(recordingfile)=)e[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mExecuting [s@macro-hangupcall:4] e[1;36mHangupe[0m(“e[1;35mDAHDI/11-1e[0m”, “e[1;35me[0m”) in new stack

e[Kcraeger-house*CLI>
e[0Ke[1;30m == e[0mSpawn extension (macro-hangupcall, s, 4) exited non-zero on ‘DAHDI/11-1’ in macro ‘hangupcall’

e[Kcraeger-house*CLI>
e[0Ke[1;30m == e[0mSpawn extension (from-internal, h, 1) exited non-zero on ‘DAHDI/11-1’

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mHanging up on ‘DAHDI/11-1’

e[Kcraeger-house*CLI>
e[0Ke[1;30m – e[0mHungup ‘DAHDI/11-1’

e[Kcraeger-house*CLI>
Disconnected from Asterisk server
Asterisk cleanly ending (0).
Executing last minute cleanups
e[0m

the same info without ansi escape sequences but with timestamps is already in /var/log/asterisk/full. we are not terminals :wink: and dont need the color.

Sorry, that’s what it did.

Yep it would do that but it is not easily readable, just try the log file method.

[2018-02-16 00:07:34] VERBOSE[16345][C-00000004] sig_analog.c: Starting simple switch on ‘DAHDI/12-1’
[2018-02-16 00:07:44] VERBOSE[16345][C-00000004] pbx.c: Executing [12542101939@from-internal:1] ResetCDR(“DAHDI/12-1”, “”) in new stack
[2018-02-16 00:07:44] VERBOSE[16345][C-00000004] pbx.c: Executing [12542101939@from-internal:2] NoCDR(“DAHDI/12-1”, “”) in new stack
[2018-02-16 00:07:44] VERBOSE[16345][C-00000004] pbx.c: Executing [12542101939@from-internal:3] Progress(“DAHDI/12-1”, “”) in new stack
[2018-02-16 00:07:44] VERBOSE[16345][C-00000004] pbx.c: Executing [12542101939@from-internal:4] Wait(“DAHDI/12-1”, “1”) in new stack
[2018-02-16 00:07:45] VERBOSE[16345][C-00000004] pbx.c: Executing [12542101939@from-internal:5] Playback(“DAHDI/12-1”, “silence/1&cannot-complete-as-dialed&check-number-dial-again,noanswer”) in new stack
[2018-02-16 00:07:45] VERBOSE[16345][C-00000004] file.c: <DAHDI/12-1> Playing ‘silence/1.ulaw’ (language ‘en’)
[2018-02-16 00:07:46] VERBOSE[16345][C-00000004] file.c: <DAHDI/12-1> Playing ‘cannot-complete-as-dialed.ulaw’ (language ‘en’)
[2018-02-16 00:07:49] VERBOSE[16345][C-00000004] file.c: <DAHDI/12-1> Playing ‘check-number-dial-again.ulaw’ (language ‘en’)
[2018-02-16 00:07:51] VERBOSE[16345][C-00000004] pbx.c: Executing [12542101939@from-internal:6] Wait(“DAHDI/12-1”, “1”) in new stack
[2018-02-16 00:07:52] VERBOSE[16345][C-00000004] pbx.c: Executing [12542101939@from-internal:7] Congestion(“DAHDI/12-1”, “20”) in new stack
[2018-02-16 00:07:54] VERBOSE[16345][C-00000004] pbx.c: Spawn extension (from-internal, 12542101939, 7) exited non-zero on ‘DAHDI/12-1’
[2018-02-16 00:07:54] VERBOSE[16345][C-00000004] pbx.c: Executing [h@from-internal:1] Macro(“DAHDI/12-1”, “hangupcall”) in new stack
[2018-02-16 00:07:54] VERBOSE[16345][C-00000004] pbx.c: Executing [s@macro-hangupcall:1] GotoIf(“DAHDI/12-1”, “1?theend”) in new stack
[2018-02-16 00:07:54] VERBOSE[16345][C-00000004] pbx_builtins.c: Goto (macro-hangupcall,s,3)
[2018-02-16 00:07:54] VERBOSE[16345][C-00000004] pbx.c: Executing [s@macro-hangupcall:3] ExecIf(“DAHDI/12-1”, “0?Set(CDR(recordingfile)=)”) in new stack
[2018-02-16 00:07:54] VERBOSE[16345][C-00000004] pbx.c: Executing [s@macro-hangupcall:4] Hangup(“DAHDI/12-1”, “”) in new stack
[2018-02-16 00:07:54] VERBOSE[16345][C-00000004] app_macro.c: Spawn extension (macro-hangupcall, s, 4) exited non-zero on ‘DAHDI/12-1’ in macro ‘hangupcall’
[2018-02-16 00:07:54] VERBOSE[16345][C-00000004] pbx.c: Spawn extension (from-internal, h, 1) exited non-zero on ‘DAHDI/12-1’
[2018-02-16 00:07:54] VERBOSE[16345][C-00000004] sig_analog.c: Hanging up on ‘DAHDI/12-1’
[2018-02-16 00:07:54] VERBOSE[16345][C-00000004] chan_dahdi.c: Hungup ‘DAHDI/12-1’

From this part of the log, it seems that you are trying to dial number 12542101939, but that number can’t be matched either to any internal extension nor outside number. As it is a rather long number, I assume you are trying to make an outbound call, not an internal call, so I would suggest you check your outbound rules.

Silly me, when using the Dial Plan Wizard, I forgot to add "11 digit"
1 234 567 8901 is 11 digits.
I went back and added that to the Outbound Routes and I can now dial out.

Still can’t dial in yet.
Using the Magic Jack as one of the CO lines, calling the PBX from my cell phone it goes direct to voice mail.
If I hook the magic jack to a standard desk phone instead of the PBX the call goes through as you would expect.

DAHDI doesn’t always recognize the DID associated with the line, so that could be getting in your way.

On your inbound route, did you set up an “Any/Any” route (no DID, no CID) to give the system a “default” ingress point? If not, that might be a good first step.

Once you start getting calls in, look at the logs and see what the actual DID you are receiving is, if you are getting one at all.

you should assign a virtual did to each analog dhadi channel, they can be the same, to allow you to build inbound routes by those virtual dids

1 Like

I haven’t gone away, I’m just trying a bunch of things before I post more questions.

Ok, I’m back sort of.
What’d I’d like is some hints on how to set things up.

In the initial FXO, FXS set up, one of the fields is group number.
I have there separate phone lines, House, FAX and Shop.
should I set the FXO channels to group 0,1 and 2 respectively?
Should I set the 4th to 3 "just in case I get a 4th line?"
Do I set up the FXS channel groups to 4, 5, 6 based on the ring group they’ll end up, i.e. House, FAX and shop. And put the door phone FXS channel to group to 7?

The three phone numbers end in 5355, 3334 and 1939 respectively.
In DHADI Configure DID should I assign 5355, 3334 and 1939 to channels 1, 2 and 3 respectively?
Those are the three FXO channels I’m using.

I have four ring groups set up. 100 for the house extensions 101, 102 etc. 200 for the FAX extension 201, 300 for the shop extensions 301, 302 etc. and 400 for the door phone 401 so it excludes the FAX machine and the two other extensions with answering machines.

Trunks, I assume I have three trunks, one for each copper line on an FXO port.
So for example, port/channel 1 All the extensions in ring group 100 have a caller ID that matches the actual phone number for the house. Using that as the caller ID I set that trunk “house” to be used with that caller ID (from the extensions) and the trunk maps to channel 1.

Inbound routes. Using the DID with CID set to ANY do I set the destination to a trunk or a ring group?

Outbound routes, Using the Extension CID to map to the proper route, example extension 101 to trunk “house.”

Is there something that I’ve overlooked or totally misunderstood?

I’m pretty well sure it’s all in

https://wiki.freepbx.org/display/FPG/DAHDI+Channel+DIDs+User+Guide

Did you read it yet?

Yes I did.
For example:
The POTS line number is 6475355 so I set the DID to 5355
I set it to channel 1 (The FXO port connected to 6475355)
I gave it the name House.
Channel one is set to group 0 “from-analog” and kwik-start.

You need an inbound route then for trunk 5355 to extension 5355, as the extension is not in the from-analog context

I would suggest the pseudo DID you give it is the same 10 (or 11) digits thsat it really has. to sae confusion between tge two endpoints.

There is no extension 5355. There are no 4-digit extensions.
There are a total of 17 extensions, numbered 101-112, 201, 301-302 and 401.

OK - the point wasn’t about your extension numbers. The point is that changing the DID to a 4-digit number is going to confuse you later. Set the inbound route to react to the 10-digit number and set the TDM2400P so that it passes the full phone number to the PBX. In other words, when you are referring to the DID, refer to the entire DID everywhere.

Of course, that’s just a suggestion from a couple of people that have done this a time or two.

Then I misread you, so what inbound routes do you have to receive calls and what outbound routes do you have to send calls?

Post logs of both an in and out failed call

In my defense, from Wikipedia:
“As calls are presented to the PBX, the dialed telephone number is signaled to the PBX with Dialed Number Identification Service (DNIS) using a prearranged, usually partial format, e.g., the last four digits.”

Secondly, the phone company does not supply a DID on analog lines. So DAHDI Configure DID is strictly an arbitrarily assigned number.

I can see some confusion if I assigned DID like 1000, 2000 and 3000. But I would think that 5355, 3334 and 1939 should be obvious as to which line is which.

However, that being said, I will change the DIDs to reflect the full 10 digit number assigned by the phone company to the incoming lines.