Skip to main content

Harware Detection Module

Posted by ywali on Thu, 08/07/2008

Hi,
I hope Thirdlane can add a hardware (Digium cared) detection in the GUI like Elastix http://www.elastix.org.
That will help users like me to save time going through the zaptel and zapta files.

--
Yousif Wali


Submitted by eeman on Thu, 08/07/2008 Permalink

if you are using analog zaptel cards, there is already a utility in the zaptel source

kernel/xpp/utils/genzaptelconf.

If you first 'service zaptel start' it will attempt to load all the zaptel modules, then running genzaptelconf will build the zaptel.conf file for you.

with T1 cards there are so many different options to consider, using a menu to do them doesn't save you any time over just using an editor.

if its not the zaptel.conf you are needing assistance with, but rather identifying the hardware in your machine, once the modules are loaded a 'cat /proc/zap/#' will indicate the information in that span, as will 'dmesg' immediately after loading the modules.

Submitted by ywali on Fri, 08/08/2008 Permalink

Thank Erik for your reply,

Actually I'm trying to configure a TE110P as an E1 card.

In Elastix the card was detected easily and all channels were ready to be used. this what was in

aptel.conf

--------------------------------------------------------------------------------------

# Span 1: WCT1/0 "Digium Wildcard TE110P T1/E1 Card 0" (MASTER)

span=1,1,0,ccs,hdb3,crc4

# termtype: te

bchan=1-15,17-31

dchan=16

# Global data

loadzone = us

defaultzone = us

--------------------------------------------------------------------------------------

and in zapata.conf

----------------------------------------------------------------------------------------

[trunkgroups]

[channels]

context=from-pstn

signalling=fxs_ks

rxwink=300 ; Atlas seems to use long (250ms) winks

usecallerid=yes

hidecallerid=no

callwaiting=yes

usecallingpres=yes

callwaitingcallerid=yes

threewaycalling=yes

transfer=yes

canpark=yes

cancallforward=yes

callreturn=yes

echocancel=yes

echocancelwhenbridged=no

faxdetect=incoming

echotraining=800

rxgain=0.0

txgain=0.0

callgroup=1

pickupgroup=1

;Uncomment these lines if you have problems with the disconection of your analog lines

;busydetect=yes

;busycount=3

immediate=no

#include zapata_additional.conf

#include zapata-channels.conf

-----------------------------------------------------------------------------------------------------

Then I installed Thirdlane on the same PC and replaced zapta.conf of Elastix onto Thirdlane zapta.conf but im still not able to the card on zttool!!

I don't know if there is a step by step procedure so I can make this card work on Thirdlane and use Channel to DID Mapping and everything goes easy.

--

Yousif Wali

Submitted by eeman on Fri, 08/08/2008 Permalink

ok well it looks like you know too much already to be duped into a config wizard, so your going to have to make these 2 files by hand :)

your zaptel.conf appears to be a drop-in read-to-go file so put that in your /etc/ directory and stop/start zaptel. You can 'ztcfg -vv' to verify that all the channels are loading the way you want. BTW is this for a channel bank? Otherwise, Why the FXS signalling instead of a more feature rich one?

your zapata.conf file is missing some information (elastix appears to have split it among 2 other files).

If these channels are comming from a telephone company (ie from the PSTN and not a bunch of analog handsets) your context for zapata.conf is 'from-outside'. You are also missing a channel declaration to specify those channels. Have a look at your /etc/asterisk/zaptel-channels.conf file that your elastix generated. Otherwise, if you dont have access to it, try this on for size to add to the bottom of your existing config

group=1

context=from-outside

signalling=fxs_ks

callerid=asreceived

usecallerid=yes

channel => 1-15

channel => 17-31

Submitted by eeman on Fri, 08/08/2008 Permalink

I just read your zaptel.conf and dont think it matches with your zapata.conf. Are you sure elastix actually got it to work?

For starters your tonezone is set to US but we dont use E1's in the US.

Additionally bchan and dchan declarations are psuedo's for PRI type signalling not FXS_KS. I could help you more if you tell me what type of circuit this really is and what its connected to.

Submitted by ywali on Fri, 08/08/2008 Permalink

Hi Erik,

Finally my TE110P card is detected!!! What I did is I reinstalled Zaptel with the newer version (zaptel-1.4.11) of what already came with Thirdlane (zaptel-1.4.9.2) ISO Image.

Then I run kernel/xpp/utils/genzaptelconf. and my card was detected and zaptel.conf now ready to go as below:

zaptel.conf

-------------------------------------------------------------------------

# Span 1: WCT1/0 "Digium Wildcard TE110P T1/E1 Card 0" (MASTER)

span=1,1,1,ccs,hdb3

# termtype: te

bchan=1-15,17-31

dchan=16

# Global data

loadzone = us

defaultzone = us

-------------------------------------------------------------------------

I have a RED alarm on the card when I do zttool. I don't know yet what's the problem because I didn't connect the E1 line yet. I have to take the PC to my office because the E1 is there.

Erik, what do I need to do in the zapata.conf or it will be configured as I do on thirdlane GUI Channel to DID Mapping?? and what do you think is necessary for me to ask my service provider about the E1 parameters??

I'll be posting step by step installation and configuration ones I'm done just for the forum records.

regard,

--

Yousif Wali

Submitted by eeman on Fri, 08/08/2008 Permalink

red alarm on a T1 means loss of signal. If you arent connected you'll get a red alarm. What sort of T1 connection is your provider giving you? PRI ISDN?

Submitted by eeman on Sat, 08/09/2008 Permalink

ok if you are doing PRI you dont use channel to did mapping. Your d-channel will signal what DNIS the call is destined for. Ask your provider how many digits they are outpulsing for DNIS? 4? 10? 12? This will tell you how to write your inbound patterns. Now is this the TE110P or the TE111P/TE112P if its the latter is the hardware echo cancellation module attached?

what country are you in because I really doubt your zones should be =us :)

I am thinking your zapata.conf is going to look something like:

[channels]

language=en

context=from-outside

switchtype=euroisdn

prilocaldialplan=unknown

signalling=pri_cpe

usecallerid=yes

callerid=asreceived

hidecallerid=no

callwaiting=no

usecallingpres=yes

callwaitingcallerid=yes

echocancel=512

echocancelwhenbridged=no

echotraining=no

rxgain=0.0

txgain=0.0

group = 1

channel => 1-15

channel => 17-31

if issues arrise there are other tweaks that can be switched on/off like jitter buffer, relax dtmf, echo training, gain, etc.

Submitted by ywali on Sun, 08/10/2008 Permalink

Finally I can receive calls from ZAP on the E1 line after I configure

zaptel.conf

---------------------------------------------------------------------

# Span 1: WCT1/0 "Digium Wildcard TE110P T1/E1 Card 0" (MASTER)

span=1,1,1,ccs,hdb3

# termtype: te

bchan=1-15,17-31

dchan=16

# Global data

loadzone = uk

defaultzone = uk

----------------------------------------------------------------------

zapatel.conf

---------------------------------------------------------------------

[channels]

language=en

context=from-outside

switchtype=euroisdn

prilocaldialplan=unknown

signalling=pri_cpe

usecallerid=yes

callerid=asreceived

hidecallerid=no

callwaiting=no

usecallingpres=yes

callwaitingcallerid=yes

echocancel=no

echocancelwhenbridged=no

echotraining=no

rxgain=0.0

txgain=0.0

group = 1

channel => 1-15

channel => 17-31

------------------------------------------------------------------------

I created a Channel to DID Mapping using Thirdlane GUI. Zap channel # 1 to DID 17511999 the main number of the E1. BTW its 10 channels E1 with 50 phone numbers.

Then in the extension 101 I added the DID 17511999.

and now I can receive calls but the two error messages below is continuously showing:

[Sep 17 00:28:56] NOTICE[5548]: chan_zap.c:8486 pri_dchannel: PRI got event: HDLC Abort (6) on Primary D-channel of span 1

[Sep 17 00:29:00] NOTICE[5548]: chan_zap.c:8486 pri_dchannel: PRI got event: HDLC Bad FCS (8) on Primary D-channel of span 1

Then I created a ZAP trunk and created an outgoing route _XXXXXXXX using the ZAP trunk to call out.

I know there is something missing in this ZAP trunk and the outgoing route.

when I call out 39991961 my mobile with the above configuration I get the long process below:

-----------------------------------------------------------------------------------------

-- Executing [39991961@from-inside:1] Macro("SIP/101-09451a80", "tl-set-variables2|from-inside-redir") in new stack

-- Executing [s@macro-tl-set-variables2:1] Set("SIP/101-09451a80", "__tenant=") in new stack

-- Executing [s@macro-tl-set-variables2:2] Set("SIP/101-09451a80", "CDR(userfield)=") in new stack

-- Executing [s@macro-tl-set-variables2:3] Set("SIP/101-09451a80", "__MOH=default") in new stack

-- Executing [s@macro-tl-set-variables2:4] GotoIf("SIP/101-09451a80", "1 ?setmoh") in new stack

-- Goto (macro-tl-set-variables2,s,6)

-- Executing [s@macro-tl-set-variables2:6] SetMusicOnHold("SIP/101-09451a80", "default") in new stack

-- Executing [s@macro-tl-set-variables2:7] Goto("SIP/101-09451a80", "from-inside-redir|39991961|1") in new stack

-- Goto (from-inside-redir,39991961,1)

== Channel 'SIP/101-09451a80' jumping out of macro 'tl-set-variables2'

-- Executing [39991961@from-inside-redir:1] Macro("SIP/101-09451a80", "tl-dialout-1-trunk|20|ZAP/out|||") in new stack

-- Executing [s@macro-tl-dialout-1-trunk:1] GotoIf("SIP/101-09451a80", "0?dial") in new stack

-- Executing [s@macro-tl-dialout-1-trunk:2] Set("SIP/101-09451a80", "__DIALED_NUMBER=39991961") in new stack

-- Executing [s@macro-tl-dialout-1-trunk:3] Macro("SIP/101-09451a80", "tl-dialout-base|20|ZAP/out|||") in new stack

-- Executing [s@macro-tl-dialout-base:1] Set("SIP/101-09451a80", "status=") in new stack

-- Executing [s@macro-tl-dialout-base:2] GotoIf("SIP/101-09451a80", "1?enabled") in new stack

-- Goto (macro-tl-dialout-base,s,5)

-- Executing [s@macro-tl-dialout-base:5] Set("SIP/101-09451a80", "i=2") in new stack

-- Executing [s@macro-tl-dialout-base:6] Macro("SIP/101-09451a80", "tl-set-myvariables") in new stack

-- Executing [s@macro-tl-set-myvariables:1] Set("SIP/101-09451a80", "MY_CHAN=101-09451a80") in new stack

-- Executing [s@macro-tl-set-myvariables:2] NoOp("SIP/101-09451a80", "XXXXCHANNEL=SIP/101-09451a80") in new stack

-- Executing [s@macro-tl-set-myvariables:3] Set("SIP/101-09451a80", "zap=0") in new stack

-- Executing [s@macro-tl-set-myvariables:4] GotoIf("SIP/101-09451a80", "1?usechannel") in new stack

-- Goto (macro-tl-set-myvariables,s,9)

-- Executing [s@macro-tl-set-myvariables:9] Set("SIP/101-09451a80", "local=0") in new stack

-- Executing [s@macro-tl-set-myvariables:10] GotoIf("SIP/101-09451a80", "1?useit") in new stack

-- Goto (macro-tl-set-myvariables,s,12)

-- Executing [s@macro-tl-set-myvariables:12] Set("SIP/101-09451a80", "__MYEXTENSION=101") in new stack

-- Executing [s@macro-tl-set-myvariables:13] Set("SIP/101-09451a80", "__MYID=101") in new stack

-- Executing [s@macro-tl-dialout-base:7] SetAMAFlags("SIP/101-09451a80", "billing") in new stack

-- Executing [s@macro-tl-dialout-base:8] Set("SIP/101-09451a80", "RECORD=") in new stack

-- Executing [s@macro-tl-dialout-base:9] GotoIf("SIP/101-09451a80", "1?done_checkrecord") in new stack

-- Goto (macro-tl-dialout-base,s,18)

-- Executing [s@macro-tl-dialout-base:18] NoOp("SIP/101-09451a80", "RECORD=") in new stack

-- Executing [s@macro-tl-dialout-base:19] NoOp("SIP/101-09451a80", "TOUCH_MONITOR=") in new stack

-- Executing [s@macro-tl-dialout-base:20] NoOp("SIP/101-09451a80", "RECORD_OPTIONS=") in new stack

-- Executing [s@macro-tl-dialout-base:21] NoOp("SIP/101-09451a80", "RECORDING_FORMAT=wav") in new stack

-- Executing [s@macro-tl-dialout-base:22] Set("SIP/101-09451a80", "CALLERID(name)=") in new stack

-- Executing [s@macro-tl-dialout-base:23] GotoIf("SIP/101-09451a80", "1?calleridallowed") in new stack

-- Goto (macro-tl-dialout-base,s,31)

-- Executing [s@macro-tl-dialout-base:31] NoOp("SIP/101-09451a80", "CLIMYID=") in new stack

-- Executing [s@macro-tl-dialout-base:32] NoOp("SIP/101-09451a80", "IMYID=") in new stack

-- Executing [s@macro-tl-dialout-base:33] Set("SIP/101-09451a80", "CLI=") in new stack

-- Executing [s@macro-tl-dialout-base:34] GotoIf("SIP/101-09451a80", "0?chkcallfwd") in new stack

-- Executing [s@macro-tl-dialout-base:35] Set("SIP/101-09451a80", "CLI=17511999") in new stack

-- Executing [s@macro-tl-dialout-base:36] GotoIf("SIP/101-09451a80", "1?chkcallfwd") in new stack

-- Goto (macro-tl-dialout-base,s,39)

-- Executing [s@macro-tl-dialout-base:39] NoOp("SIP/101-09451a80", "MYID=101") in new stack

-- Executing [s@macro-tl-dialout-base:40] NoOp("SIP/101-09451a80", "INCOMINGCLI=") in new stack

-- Executing [s@macro-tl-dialout-base:41] NoOp("SIP/101-09451a80", "CALLFWD=") in new stack

-- Executing [s@macro-tl-dialout-base:42] GotoIf("SIP/101-09451a80", "1?setcalleridasabove") in new stack

-- Goto (macro-tl-dialout-base,s,48)

-- Executing [s@macro-tl-dialout-base:48] GotoIf("SIP/101-09451a80", "0?nocallerid") in new stack

-- Executing [s@macro-tl-dialout-base:49] Set("SIP/101-09451a80", "CALLERID(num)=17511999") in new stack

-- Executing [s@macro-tl-dialout-base:50] Set("SIP/101-09451a80", "temp=") in new stack

-- Executing [s@macro-tl-dialout-base:51] GotoIf("SIP/101-09451a80", "1?onetrunk|1") in new stack

-- Goto (macro-tl-dialout-base,onetrunk,1)

-- Executing [onetrunk@macro-tl-dialout-base:1] Set("SIP/101-09451a80", "FULLNAME=ZAP/out") in new stack

-- Executing [onetrunk@macro-tl-dialout-base:2] Set("SIP/101-09451a80", "TRUNK=out") in new stack

-- Executing [onetrunk@macro-tl-dialout-base:3] GotoIf("SIP/101-09451a80", "0?failed|1") in new stack

-- Executing [onetrunk@macro-tl-dialout-base:4] Set("SIP/101-09451a80", "TRUNK_STATUS=1") in new stack

-- Executing [onetrunk@macro-tl-dialout-base:5] GotoIf("SIP/101-09451a80", "0?next|1") in new stack

-- Executing [onetrunk@macro-tl-dialout-base:6] Set("SIP/101-09451a80", "ROUTE_PREPEND=") in new stack

-- Executing [onetrunk@macro-tl-dialout-base:7] Set("SIP/101-09451a80", "ROUTE_STRIP=") in new stack

-- Executing [onetrunk@macro-tl-dialout-base:8] Set("SIP/101-09451a80", "ROUTE_OPTIONS=") in new stack

-- Executing [onetrunk@macro-tl-dialout-base:9] Set("SIP/101-09451a80", "NUMBER_TO_DIAL=39991961") in new stack

-- Executing [onetrunk@macro-tl-dialout-base:10] Set("SIP/101-09451a80", "TRUNK_DIALSTRING=") in new stack

-- Executing [onetrunk@macro-tl-dialout-base:11] Set("SIP/101-09451a80", "TRUNK_NAME=out") in new stack

-- Executing [onetrunk@macro-tl-dialout-base:12] Set("SIP/101-09451a80", "TRUNK_PROTOCOL=ZAP") in new stack

-- Executing [onetrunk@macro-tl-dialout-base:13] Set("SIP/101-09451a80", "TRUNK_STRIP=0") in new stack

-- Executing [onetrunk@macro-tl-dialout-base:14] Set("SIP/101-09451a80", "TRUNK_PREPEND=") in new stack

-- Executing [onetrunk@macro-tl-dialout-base:15] Set("SIP/101-09451a80", "CALLERID(num)=17511999") in new stack

-- Executing [onetrunk@macro-tl-dialout-base:16] GotoIf("SIP/101-09451a80", "0?dial-CUSTOM|1") in new stack

-- Executing [onetrunk@macro-tl-dialout-base:17] Goto("SIP/101-09451a80", "dial-ZAP|1") in new stack

-- Goto (macro-tl-dialout-base,dial-ZAP,1)

-- Executing [dial-ZAP@macro-tl-dialout-base:1] GotoIf("SIP/101-09451a80", "1?NoOpt") in new stack

-- Goto (macro-tl-dialout-base,dial-ZAP,4)

-- Executing [dial-ZAP@macro-tl-dialout-base:4] GotoIf("SIP/101-09451a80", "0?noarg") in new stack

-- Executing [dial-ZAP@macro-tl-dialout-base:5] Dial("SIP/101-09451a80", "ZAP/out/39991961|20") in new stack

[Aug 10 16:54:59] WARNING[6120]: chan_zap.c:7841 zt_request: Unable to determine channel for data out/39991961

[Aug 10 16:54:59] WARNING[6120]: app_dial.c:1196 dial_exec_full: Unable to create channel of type 'ZAP' (cause 0 - Unknown)

== Everyone is busy/congested at this time (1:0/0/1)

-- Executing [dial-ZAP@macro-tl-dialout-base:6] Goto("SIP/101-09451a80", "dial-CHANUNAVAIL|1") in new stack

-- Goto (macro-tl-dialout-base,dial-CHANUNAVAIL,1)

-- Executing [dial-CHANUNAVAIL@macro-tl-dialout-base:1] Goto("SIP/101-09451a80", "next|1") in new stack

-- Goto (macro-tl-dialout-base,next,1)

-- Executing [next@macro-tl-dialout-base:1] Set("SIP/101-09451a80", "i=6") in new stack

-- Executing [next@macro-tl-dialout-base:2] Goto("SIP/101-09451a80", "onetrunk|1") in new stack

-- Goto (macro-tl-dialout-base,onetrunk,1)

-- Executing [onetrunk@macro-tl-dialout-base:1] Set("SIP/101-09451a80", "FULLNAME=") in new stack

-- Executing [onetrunk@macro-tl-dialout-base:2] Set("SIP/101-09451a80", "TRUNK=") in new stack

-- Executing [onetrunk@macro-tl-dialout-base:3] GotoIf("SIP/101-09451a80", "1?failed|1") in new stack

-- Goto (macro-tl-dialout-base,failed,1)

-- Executing [failed@macro-tl-dialout-base:1] PlayTones("SIP/101-09451a80", "congestion") in new stack

-- Executing [failed@macro-tl-dialout-base:2] Congestion("SIP/101-09451a80", "10") in new stack

== Spawn extension (macro-tl-dialout-base, failed, 2) exited non-zero on 'SIP/101-09451a80' in macro 'tl-dialout-base'

== Spawn extension (macro-tl-dialout-base, failed, 2) exited non-zero on 'SIP/101-09451a80' in macro 'tl-dialout-1-trunk'

== Spawn extension (macro-tl-dialout-base, failed, 2) exited non-zero on 'SIP/101-09451a80'

---------------------------------------------------------------------------------------------

Erick can you email me on y.wali@waliit.com so I can send you screen shots if required.

Thank you for your help.

--

Yousif Wali

Submitted by eeman on Sun, 08/10/2008 Permalink

BTW its 10 channels E1 with 50 phone numbers.

if you aren't using the entire T1 then your config is wrong; its set up for the whole thing.

also if this is PRI service get rid of channel to did mapping, nothing is coming in without a DNIS.

find out exactly which channels are provisioned as a B channel right now and which channel is your D channel, its supposed to be 16 as an E1 but this is the first partial T1 ive seen for euroISDN.

it also looks like your zap trunk is wrong. You need to create a zap trunk called 'G1' and use it for your outbound route.

email is eeman at bluegrass.net

Submitted by ywali on Mon, 08/11/2008 Permalink

OK, B-channels are 1-10 and D-channel is 16, The channels from 11-15 are not defined by the provider as they told me and channel 0 is for signaling.

I removed the channel to DID mapping and I created an Inbound Route using the pattern coming in from the line and forwarding it to the extension.

I created the ZAP trunk 'G1' and i'll use it for the outbound route.

I changed the files as below:

Zaptel.conf

--------------------------------------------------------------------------

# Span 1: WCT1/0 "Digium Wildcard TE110P T1/E1 Card 0" (MASTER)

span=1,1,1,ccs,hdb3

# termtype: te

bchan=1-10

dchan=16

# Global data

loadzone = uk

defaultzone = uk

-----------------------------------------------------------------------------

Zapata.conf

-----------------------------------------------------------------------------

[channels]

language=en

context=from-outside

switchtype=euroisdn

prilocaldialplan=unknown

signalling=pri_cpe

usecallerid=yes

callerid=asreceived

hidecallerid=no

callwaiting=no

usecallingpres=yes

callwaitingcallerid=yes

echocancel=no

echocancelwhenbridged=no

echotraining=no

rxgain=0.0

txgain=0.0

group = 1

channel => 1-10

------------------------------------------------------------------------------------

I'll connect the ISDN line later and do the testing and see how it goes.

--

Yousif Wali

Submitted by ywali on Mon, 08/11/2008 Permalink

It worked, I can call in and out but still getting these two errors:

[Sep 17 00:28:56] NOTICE[5548]: chan_zap.c:8486 pri_dchannel: PRI got event: HDLC Abort (6) on Primary D-channel of span 1

[Sep 17 00:29:00] NOTICE[5548]: chan_zap.c:8486 pri_dchannel: PRI got event: HDLC Bad FCS (8) on Primary D-channel of span 1

I think I have to change something in zaptel.conf span parameters.

--

Yousif Wali

Submitted by eeman on Tue, 08/12/2008 Permalink

this could be anything from frame-slips to hardware to running a frame buffer on your asterisk box. The TE110P is a rather old card and subject to interrupt issues. A lot of this cleaned up when they released the TE120 and newer TE121/122's. However, your server hardware needs to support APIC and other interrupt featuring so that devices dont share interrupts.

cat /proc/interrupts

If I recall, APIC is only present in the SMP kernels.

the dual span and quad span cards support hardware hdlc which can ease this somewhat

Submitted by ywali on Tue, 08/26/2008 Permalink

Dear Erik,

I'm really sorry for the delay.

I just want to thank you for all your efforts and help.

I got so busy and ones I have some time I'll do a step by step configuration and posted online.

Thanks again,

--

Yousif Wali