[Asterisk-Users] Echo problem update - POSSIBLE SOLUTION

W. Kevin Hunt Kevin at hbcorporate.com
Fri Jul 16 09:43:28 MST 2004


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
 



More information about the asterisk-users mailing list