Asterisk to Asterisk over TDMoE

First off, sorry for the long post but I wanted to make sure all the information is available.

I am currently working on a call recording solution that will, in the end, be utilizing a device like a Redfone foneBRIDGE. In an attempt to simulate the end result I am attempting to configure the follwoing:

POTS - |wctdm, *box(1), Analog Phone(x2)| - TDMoE - |*box(2)| - TDMoE - |*box(3)| - SIP Phone

I believe I have the spans connected and somewhat configured (I hope):

** Currently only trying to get *box(2) to pick up an *box(1) call **

*box(1,2,3)
i386 CentOS 5.3
Asterisk 1.6.1.0
DAHDI Version: 2.2.0-rc4
DAHDI Tools Version - 2.2.0-rc2
libpri-1.4.9

Configuration *box(1)

/etc/dahdi/system.conf

Span 1: WCTDM/4 “Wildcard TDM400P REV E/F Board 5” (MASTER)

fxoks=1
echocanceller=mg2,1
fxoks=2
echocanceller=mg2,2
fxsks=3
echocanceller=mg2,3
fxsks=4
echocanceller=mg2,4

TDMoE dynamic span to astrkrec.provell.net

dynamic=eth,eth0/00:50:8B:D9:78:7C/0,24,0
bchan=5-27
dchan=28
echocanceller=mg2,5-27

Global data

loadzone = us
defaultzone = us

/etc/asterisk/chan_dahdi.conf

[trunkgroups]
; define any trunk groups

[channels]
; hardware channels
; default
usecallerid=yes
hidecallerid=no
callwaiting=no
threewaycalling=yes
transfer=yes
adsi=yes
echocancel=yes
echotraining=yes

; Span 1: WCTDM/4 “Wildcard TDM400P REV E/F Board 5” (MASTER)
;;; line="1 WCTDM/4/0 FXOKS (EC: MG2)"
signalling=fxo_ks
callerid=“Channel 1” <1001>
mailbox=1001
group=5
context=phones
channel => 1
callerid=
mailbox=
group=
context=default

;;; line="2 WCTDM/4/1 FXOKS (EC: MG2)"
signalling=fxo_ks
callerid=“Channel 2” <1002>
mailbox=1002
group=5
context=phones
channel => 2
callerid=
mailbox=
group=
context=default

;;; line="3 WCTDM/4/2 FXSKS (EC: MG2)"
signalling=fxs_ks
callerid=asreceived
group=0
context=incoming
channel => 3
callerid=
group=
context=default

;;; line=“4 WCTDM/4/3 FXSKS (EC: MG2)”
;signalling=fxs_ks
;callerid=asreceived
;group=0
;context=from-pstn
;channel => 4
;callerid=
;group=
;context=default

;; TDMoE to PBX
context=from-pstn
switchtype=national
signalling = pri_net
pridialplan=unknown
priindication=outofband
overlapdial=no
resetinterval=86400
group = 2,28
channel => 5-27

/etc/asterisk/extensions.conf

[globals]
FANSTEL1=DAHDI/1
FANSTEL2=DAHDI/2
OUTBOUNDTRUNK=DAHDI/3
TDMTRUNK=DAHDI/g2

[general]
static=yes
writeprotect=no
autofallthrough=yes

[incoming]
exten => s,1,Answer()
exten => s,n,WaitExten(1)
exten => s,n,Playback(hello)
exten => s,n,Playback(you-have-reached-a-test-number)
exten => s,n,Playback(thank-you-for-calling)
exten => s,n,WaitExten(1)
exten => s,n,Hangup()

[employees]
include => outbound-local
include => outbound-long-distance
include => from-pstn

exten => 1001,1,Macro(normal,1001,${FANSTEL1})
exten => 1002,1,Macro(normal,1002,${FANSTEL2})

[phones]
include => employees

[macro-normal]
exten => s,1,Dial(${ARG2},25)
exten => s,2,Voicemail(${ARG1},u)
exten => s,102,Voicemail(${ARG1},b)

[from-pstn]
exten => _555XXXX,1,Answer()
exten => _555XXXX,n,Playback(hello)
exten => _555XXXX,n,Playback(pls-wait-connect-call)
exten => _555XXXX,n,Dial(${TDMTRUNK}/${EXTEN},15,tTr)
exten => _555XXXX,n,Playback(abandon-all-hope)
exten => _555XXXX,n,Playback(goodbye)
exten => _555XXXX,n,Hangup()

[outbound-local]
ignorepat => 9
exten => _9NXXXXXX,1,Dial(${OUTBOUNDTRUNK}/9${EXTEN:1})
exten => _9NXXXXXX,n,Congestion()
exten => _9NXXXXXX,n,Hangup()
exten => _9NXXNXXXXXX,1,Dial(${OUTBOUNDTRUNK}/9${EXTEN:1})
exten => _9NXXNXXXXXX,n,Congestion()
exten => _9NXXNXXXXXX,n,Hangup()

;exten => 911,1,Dial(${OUTBOUNDTRUNK}/911)
;exten => 9911,1,Dial(${OUTBOUNDTRUNK}/911) ; So that folks who dial “9" first will also get through

[outbound-long-distance]
ignorepat => 9
exten => _91NXXNXXXXXX,1,Dial(${OUTBOUNDTRUNK}/9${EXTEN:1})
exten => _91NXXNXXXXXX,n,Playtones(congestion)
exten => _91NXXNXXXXXX,n,Hangup()

[b]Configuration *box(2)

/etc/dahdi/system.conf[/b]

TDMoE dynamic span from voice.provell.net

dynamic=eth,eth0/00:13:D3:FE:F1:40/0,24,1

TDMoE dynamic span from astrk01.provell.net

dynamic=eth,eth1/00:50:8B:AF:4B:B5/1,24,0
#e&m=1-48
bchan=1-23
dchan=24
bchan=25-47
dchan=48
echocanceller=mg2,1-23
echocanceller=mg2,25-47

Global data

loadzone = us
defaultzone = us

/etc/asterisk/chan_dahdi.conf

[trunkgroups]
; define any trunk groups

[channels]
; hardware channels
; default
usecallerid=yes
hidecallerid=no
callwaiting=no
threewaycalling=yes
transfer=yes
echocancel=yes
echotraining=yes

;; TDMoE to PBX
context=from-pstn
switchtype=national
signalling = pri_cpe
pridialplan=unknown
priindication=outofband
overlapdial=no
resetinterval=86400
group = 1,24
channel => 1-23

;; TDMoE to PBX
;context=default
;switchtype=national
;signalling = pri_net
;group = 2
;channel => 25-47

/etc/asterisk/extensions.conf

[globals]

[general]
static=yes
writeprotect=no
autofallthrough=yes

[from-pstn]
exten => 4000,n,Answer()
exten => 4000,n,WaitExten(1)
exten => 4000,n,Playback(hello)
exten => 4000,n(holiday),Playback(you-have-reached-a-test-number)
;exten => 4000,n,Playback(pls-wait-connect-call)
;exten => 4000,n,Dial(${$TOASTRK01}${exten}:1,15,tTr)
;exten => 4000,n(open-hours),Playback(carried-away-by-monkeys)
exten => 4000,n,Playback(goodbye)
exten => 4000,n,Hangup()

/etc/sbin/dahdi_cfg and dahdi_tool show the spans as configured and that they are OK for Alarm Status.

When I call from the analog line to the recording box I get:

*box(1) cli>
Verbosity is at least 3
– Starting simple switch on ‘DAHDI/1-1’

[May 15 15:00:20] NOTICE[15923]: chan_dahdi.c:11013 pri_dchannel: PRI got event: HDLC Abort (6) on Primary D-channel of span 2
– Executing [5554000@phones:1] Answer(“DAHDI/1-1”, “”) in new stack
– Executing [5554000@phones:2] Playback(“DAHDI/1-1”, “hello”) in new stack
– <DAHDI/1-1> Playing ‘hello.ulaw’ (language ‘en’)
– Executing [5554000@phones:3] Playback(“DAHDI/1-1”, “pls-wait-connect-call”) in new stack
– <DAHDI/1-1> Playing ‘pls-wait-connect-call.ulaw’ (language ‘en’)
[May 15 15:00:21] NOTICE[15923]: chan_dahdi.c:11013 pri_dchannel: PRI got event: HDLC Bad FCS (8) on Primary D-channel of span 2
[May 15 15:00:21] NOTICE[15923]: chan_dahdi.c:11013 pri_dchannel: PRI got event: HDLC Abort (6) on Primary D-channel of span 2
== Primary D-Channel on span 2 down
[May 15 15:00:22] WARNING[15923]: chan_dahdi.c:3360 pri_find_dchan: No D-channels available! Using Primary channel 28 as D-channel anyway!
== Primary D-Channel on span 2 up
[May 15 15:00:22] ERROR[15923]: chan_dahdi.c:10721 dahdi_pri_error: !! Got a UA, but i’m in state 7
– Executing [5554000@phones:4] Dial(“DAHDI/1-1”, “DAHDI/g2/5554000,15,tTr”) in new stack
– Requested transfer capability: 0x00 - SPEECH
– Called g2/5554000
== Primary D-Channel on span 2 down
[May 15 15:00:28] WARNING[15923]: chan_dahdi.c:3360 pri_find_dchan: No D-channels available! Using Primary channel 28 as D-channel anyway!
– Hungup ‘DAHDI/10-1’
== Everyone is busy/congested at this time (1:0/0/1)
– Executing [5554000@phones:5] Playback(“DAHDI/1-1”, “abandon-all-hope”) in new stack
– <DAHDI/1-1> Playing ‘abandon-all-hope.ulaw’ (language ‘en’)
[May 15 15:00:30] NOTICE[15923]: chan_dahdi.c:11013 pri_dchannel: PRI got event: HDLC Bad FCS (8) on Primary D-channel of span 2
[May 15 15:00:30] NOTICE[15923]: chan_dahdi.c:11013 pri_dchannel: PRI got event: HDLC Bad FCS (8) on Primary D-channel of span 2
== Primary D-Channel on span 2 up
– Executing [5554000@phones:6] Playback(“DAHDI/1-1”, “goodbye”) in new stack
– <DAHDI/1-1> Playing ‘goodbye.ulaw’ (language ‘en’)
– Executing [5554000@phones:7] Hangup(“DAHDI/1-1”, “”) in new stack
== Spawn extension (phones, 5554000, 7) exited non-zero on ‘DAHDI/1-1’
– Hungup ‘DAHDI/1-1’
[May 15 15:00:41] NOTICE[15923]: chan_dahdi.c:11013 pri_dchannel: PRI got event: HDLC Bad FCS (8) on Primary D-channel of span 2

[May 15 15:00:44] NOTICE[15923]: chan_dahdi.c:11013 pri_dchannel: PRI got event: HDLC Abort (6) on Primary D-channel of span 2
== Primary D-Channel on span 2 down
[May 15 15:00:45] WARNING[15923]: chan_dahdi.c:3360 pri_find_dchan: No D-channels available! Using Primary channel 28 as D-channel anyway!
== Primary D-Channel on span 2 up
[May 15 15:00:45] ERROR[15923]: chan_dahdi.c:10721 dahdi_pri_error: !! Got a UA, but i’m in state 7

*box(2) cli>

Verbosity is at least 3

[May 15 13:55:45] NOTICE[20029]: chan_dahdi.c:11013 pri_dchannel: PRI got event: HDLC Bad FCS (8) on Primary D-channel of span 2
== Primary D-Channel on span 2 down
[May 15 13:55:46] WARNING[20029]: chan_dahdi.c:3360 pri_find_dchan: No D-channels available! Using Primary channel 24 as D-channel anyway!
== Primary D-Channel on span 2 up
[May 15 13:55:57] NOTICE[20029]: chan_dahdi.c:11013 pri_dchannel: PRI got event: HDLC Bad FCS (8) on Primary D-channel of span 2
[May 15 13:55:58] NOTICE[20029]: chan_dahdi.c:11013 pri_dchannel: PRI got event: HDLC Bad FCS (8) on Primary D-channel of span 2

== Primary D-Channel on span 2 down
[May 15 13:56:01] WARNING[20029]: chan_dahdi.c:3360 pri_find_dchan: No D-channels available! Using Primary channel 24 as D-channel anyway!
== Primary D-Channel on span 2 up
[May 15 13:56:12] NOTICE[20029]: chan_dahdi.c:11013 pri_dchannel: PRI got event: HDLC Bad FCS (8) on Primary D-channel of span 2

[May 15 13:56:38] NOTICE[20029]: chan_dahdi.c:11013 pri_dchannel: PRI got event: HDLC Abort (6) on Primary D-channel of span 2
== Primary D-Channel on span 2 down
[May 15 13:56:39] WARNING[20029]: chan_dahdi.c:3360 pri_find_dchan: No D-channels available! Using Primary channel 24 as D-channel anyway!
== Primary D-Channel on span 2 up
[May 15 13:56:39] ERROR[20029]: chan_dahdi.c:10721 dahdi_pri_error: !! Got a UA, but i’m in state 7

Before everyone starts asking why not use IAX (I have seen this on almost every post concerning TDMoE), it is because of the foneBRIDGE and the final setup. This is how the foneBRIDGE talks to Asterisk so I figured I should probably figure that out.

If you need anymore information, post what you are looking for and I will attempt to get it posted.

Thanks in advance.

This might not be the answer you are looking for. But why not buy a card with 2 e1 connections (digium, sangoma etc.) and connect them with a cross isdn cable. You have to set them in different modes and this way you can run your asterisk machine with a dialplan for each E1 and doing all the real life tests you need on one machine. A card will cost you some money but help and support will be much more easier to get on a standard 2 port E1 card then on TDM over Internet.

Well, I made headway today.

I changed the signaling and it is working now.

Changes:

*box(1)

/etc/dahdi/system.conf

Span 1: WCTDM/4 “Wildcard TDM400P REV E/F Board 5” (MASTER)

fxoks=1
echocanceller=mg2,1
fxoks=2
echocanceller=mg2,2
fxsks=3
echocanceller=mg2,3
fxsks=4
echocanceller=mg2,4

TDMoE dynamic span to astrkrec.provell.net

dynamic=eth,eth0/00:50:8B:D9:78:7C/0,24,0
e&m=5-28
echocanceller=mg2,5-28

Global data

loadzone = us
defaultzone = us

/etc/asterisk/chan_dahdi.conf

;; TDMoE to PBX context=from-pstn switchtype=national ;signalling = pri_net pridialplan=unknown priindication=outofband overlapdial=no resetinterval=86400 ;group = 2,28 ;channel => 5-27 signalling=em group = 2 channel=>5-28

*box(2)

/etc/dahdi/system.conf

TDMoE dynamic span from voice.provell.net

dynamic=eth,eth0/00:13:D3:FE:F1:40/0,24,1

TDMoE dynamic span from astrk01.provell.net

dynamic=eth,eth1/00:50:8B:AF:4B:B5/1,24,0
e&m=1-48
echocanceller=mg2,1-23
echocanceller=mg2,25-47

Global data

loadzone = us
defaultzone = us

/etc/asterisk/chan_dahdi.conf

[trunkgroups]
; define any trunk groups

[channels]
; hardware channels
; default
usecallerid=yes
hidecallerid=no
callwaiting=no
threewaycalling=yes
transfer=yes
echocancel=yes
echotraining=yes

;; TDMoE to PBX
context=from-pri
switchtype=national
#signalling = pri_cpe
pridialplan=unknown
priindication=outofband
overlapdial=no
resetinterval=86400
#group = 1,24
#channel => 1-23
signalling=em
group = 1
channel=>1-24

;; TDMoE to PBX
context=from-pri
switchtype=national
#signalling = pri_cpe
pridialplan=unknown
priindication=outofband
overlapdial=no
resetinterval=86400
signalling=em
group = 2
channel=>25-48

I have all three systems communicating over the TDMoE connections. I am able to place calls from an analog phone on the first system, bridge through the recording system, and dial the SIP phone on the last system. I am getting a customized file name based on a MySQL table, run it through a conversion script for mp3 playability. Everything is working except the voice quality is subpar… something I am continuing to work out.

TDMoE is not a lightweight protocol and will be highly influenced by slow links. If you are doing TDMoE over the internet I would suspect that is the major cause of your voice quality issues.

I am not using the Internet at all.

Currently I have it setup with *box(1) and *box(2) connected on the local LAN and I have a crossover cable connecting *box(2) and *box(3) and a separate interface on *box(3) for the SIP connection.

I am in the process now of VLANing the different segments so they are compartmentalized from everything else.