[Asterisk-Users] Echo problem update - POSSIBLE SOLUTION

Joshua McClintock joshm at singlestep.com
Fri Jul 16 10:35:02 MST 2004


We're using the "Supermicro X5DPE-G2" in both of our asterisk boxes.  They
have 3 (I think) PCI-X (133mhz) 64 bit slots.  We're only using 2 of them
(slots) and their not sharing IRQs.  We have one pstn gateway that talks to
the pri and the channel bank.  The other machine is the pbx (and vm) where
all the sip phones register and we just do IAX trunking between them.  Both
are dual xeon 2.8ghz machines.  We have no echo with our sip to sip calls
and the meetme rooms seem ok as well (even when outside people dial in).  We
do have 1 wcfxo and 2 t1 cards in the pbx box, asterisk seems to latch onto
the wcfxo card and use it for timing (one little note, I've found that in
our setup, the playback ability dissappears if you load the t1 card modules
before the wcfxo one.  Once I started loading the wcfxo first, the sound
came back).  We're running CVS HEAD 6/24/04 on linux 2.4.26.

We haven't had users complain about echo in this environment.  But as I said
in a previous post, if you have users with cyborg ears or users that
intentionally listen for echo all the time, you can probally hear some.

----- Original Message ----- 
From: "W. Kevin Hunt" <Kevin at hbcorporate.com>
To: <asterisk-users at lists.digium.com>
Sent: Friday, July 16, 2004 9:43 AM
Subject: [Asterisk-Users] Echo problem update - POSSIBLE SOLUTION


After speaking with several people, and even participating in a forum of
several other people with echo issues, I thought I'd share what we've
done (well actually what our chief R&D engineer, Brett Bourn has
done...)

First let me say that normal cheapy PC hardware couldn't be made to
function with out echo.  We tried on both the single port Digium T1 card
and the 4 port Digium T1 card.  Even on a SuperMicro Dual PIII-933 w/
hardware scsi raid we had echo issues.  We moved everything to a Compaq
DL380 dual PIII-833MHz (notice a slower machine) w/ hardware scsi raid.
Same T1 cards, same compile method, and NO echo on the DL...  We did
manage to get the echo to almost un-noticable on the Supermicro, but it
was still there.  There is NO echo on the DL380  We are currently
testing the Compaq 6400R for compatability and will let the list know
how it goes.

When we install asterisk we DO modify the makefile for the zaptel
source to look like this... (you'll add 2 lines, the Mark2 and
Aggressive_suppressor)

KFLAGS+=-DSTANDALONE_ZAPATA
KFLAGS+=-DECHO_CAN_MARK2
KFLAGS+=-DAGGRESSIVE_SUPPRESSOR
CFLAGS+=-DSTANDALONE_ZAPATA

*** info. about our current setup ***

running -- Asterisk CVS-HEAD-07/15/04-01:47:37 currently running on
asterisk (pid = 1203)

/etc/zaptel.conf
#
# Zaptel Configuration File
#
# This file is parsed by the Zaptel Configurator, ztcfg # # # First come
the span definitions, in the format # span=<span num>,<timing>,<line
build out (LBO)>,<framing>,<coding>[,yellow]
#
# The timing parameter determines the selection of primary, secondary,
and # so on sync sources.  If this span should be considered a primary
sync # source, then give it a value of "1".  For a secondary, use "2",
and so on.
# To not use this as a sync source, just use "0"
#
# The line build-out (or LBO) is an integer, from the following table:
# 0: 0 db (CSU) / 0-133 feet (DSX-1)
# 1: 133-266 feet (DSX-1)
# 2: 266-399 feet (DSX-1)
# 3: 399-533 feet (DSX-1)
# 4: 533-655 feet (DSX-1)
# 5: -7.5db (CSU)
# 6: -15db (CSU)
# 7: -22.5db (CSU)
#
# The framing is one of "d4" or "esf" for T1 or "cas" or "ccs" for E1 #
# Note: "d4" could be referred to as "sf" or "superframe"
#
# The coding is one of "ami" or "b8zs" for T1 or "ami" or "hdb3" for E1
# # E1's may have the additional keyword "crc4" to enable CRC4 checking
# # If the keyword "yellow" follows, yellow alarm is transmitted when no
# channels are open.
#
#span=1,0,0,esf,b8zs
#span=2,1,0,esf,b8zs
#span=3,0,0,ccs,hdb3,crc4
#
# Next come the dynamic span definitions, in the form:
# dynamic=<driver>,<address>,<numchans>,<timing>
#
# Where <driver> is the name of the driver (e.g. eth), <address> is the
# driver specific address (like a MAC for eth), <numchans> is the number
# of channels, and <timing> is a timing priority, like for a normal
span.
# use "0" to not use this as a timing source, or prioritize them as #
primary, secondard, etc.  Note that you MUST have a REAL zaptel device #
if you are not using external timing.
#
# dynamic=eth,eth0/00:02:b3:35:43:9c,24,0
#
# Next come the definitions for using the channels.  The format is:
# <device>=<channel list>
#
# Valid devices are:
#
# "e&m"     : Channel(s) are signalled using E&M signalling (specific
#             implementation, such as Immediate, Wink, or Feature Group
D
#             are handled by the userspace library).
# "fxsls"   : Channel(s) are signalled using FXS Loopstart protocol.
# "fxsgs"   : Channel(s) are signalled using FXS Groundstart protocol.
# "fxsks"   : Channel(s) are signalled using FXS Koolstart protocol.
# "fxols"   : Channel(s) are signalled using FXO Loopstart protocol.
# "fxogs"   : Channel(s) are signalled using FXO Groundstart protocol.
# "fxoks"   : Channel(s) are signalled using FXO Koolstart protocol.
# "sf"      : Channel(s) are signalled using in-band single freq tone.
#               Syntax as follows:
#                channel# =>
sf:<rxfreq>,<rxbw>,<rxflag>,<txfreq>,<txlevel>,<txflag>
#               rxfreq is rx tone freq in hz, rxbw is rx notch (and
decode)
#               bandwith in hz (typically 10.0), rxflag is either
'normal' or
#               'inverted', txfreq is tx tone freq in hz, txlevel is tx
tone
#               level in dbm, txflag is either 'normal' or 'inverted'.
Set
#               rxfreq or txfreq to 0.0 if that tone is not desired.
# "unused"  : No signalling is performed, each channel in the list
remains idle
# "clear"   : Channel(s) are bundled into a single span.  No conversion
or
#             signalling is performed, and raw data is available on the
master.
# "indclear": Like "clear" except all channels are treated individually
and
#             are not bundled.  "bchan" is an alias for this.
# "rawhdlc" : The zaptel driver performs HDLC encoding and decoding on
the
#             bundle, and the resulting data is communicated via the
master
#             device.
# "fcshdlc" : The zapdel driver performs HDLC encoding and decoding on
the
#             bundle and also performs incoming and outgoing FCS
insertion
#             and verification.  "dchan" is an alias for this.
# "nethdlc" : The zaptel driver bundles the channels together into an
#             hdlc network device, which in turn can be configured with
#             sethdlc (available separately).
# "dacs"    : The zaptel driver cross connects the channels starting at
#             the channel number listed at the end, after a colon
# "dacsrbs" : The zaptel driver cross connects the channels starting at
#             the channel number listed at the end, after a colon and
#             also performs the DACSing of RBS bits
#
# The channel list is a comma-separated list of channels or ranges, for
# example:
#
#   1,3,5 (channels one, three, and five)
#   16-23, 29 (channels 16 through 23, as well as channel 29
#
# So, some complete examples are:
#   e&m=1-12
#   nethdlc=13-24
#   fxsls=25,26,27,28
#   fxols=29-32
#
#fxoks=1-24
#bchan=25-47
#dchan=48
#fxols=1-12
#fxols=13-24
#e&m=25-29
#nethdlc=30-33
#clear=44
#clear=45
#clear=46
#clear=47
#fcshdlc=48
#dacs=1-24:48
#dacsrbs=1-24:48
#
# Finally, you can preload some tone zones, to prevent them from getting
# overwritten by other users (if you allow non-root users to open
/dev/zap/* # interfaces anyway.  Also this means they won't have to be
loaded at runtime.
# The format is "loadzone=<zone>" where the zone is a two letter country
code.
#
# You may also specify a default zone with "defaultzone=<zone>" where
zone # is a two letter country code.
#


span=1,1,0,esf,b8zs
bchan=1-23
dchan=24

fxoks=97-100

loadzone = us
defaultzone=us


#loadzone = us
#loadzone = us-old
#loadzone=gr
#loadzone=it
#loadzone=fr
#loadzone=de
#loadzone=uk
#loadzone=fi
#loadzone=jp
#loadzone=sp
#loadzone=no
#defaultzone=us
[root at asterisk etc]# cd asterisk/

/etc/asterisk/zapata.conf

[root at asterisk asterisk]# cat zapata.conf [channels] group = 2
switchtype = ni1 signalling = pri_cpe rxgain=-2.0 txgain=-9.0
usecallerid=yes callerid=asreceived musiconhold=default context=default
echocancel=yes echotraining=yes echocancelwhenbridged=yes
jitterbuffers=5
channel => 1-23

group = 1
language=en
signalling=fxo_ks
musiconhold=default
echocancel=yes
echotraining=yes
echocancelwhenbridged=yes
jitterbuffers=5
context=default
channel => 97-100




W. Kevin Hunt

CCIE #11841
MCSE, Linux+ SME
www.huntbrothers.com

_______________________________________________
Asterisk-Users mailing list
Asterisk-Users at lists.digium.com
http://lists.digium.com/mailman/listinfo/asterisk-users
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users





More information about the asterisk-users mailing list