[Asterisk-Users] TDM400 FXO stops handling outgoing calls, but still accepts incoming?

William R Sowerbutts will at sowerbutts.com
Sun Nov 21 15:34:27 MST 2004


Hmmmm.

Is it possible that the line is detecting a polarity event, decided that the
line is ringing and started listening for a non-existant V23 data stream, and
then the line has not in fact rung?

This would mark the line as busy (and unable to handle an outgoing call) but 
when a call did in fact come in the line would then ring correctly.

I believe BT's automated testing equipment can produce these line conditions.

Will


On Sun, Nov 21, 2004 at 07:18:33PM +0000, William R Sowerbutts wrote:
>I have a bit of a weird problem that I'm having great trouble debugging.
>
>I have a TDM400P PCI card with two FXO and two FXS modules. Both FXO modules
>are connected to BT lines here in the UK. Both BT lines have V23 Caller-ID,
>which works fine with Asterisk. Both asterisk and zaptel are fresh from CVS.
>
>Both FXO modules (channels 3 and 4) are in "group 1" for outgoing calls.
>
>My calls are placed like this: Dial(Zap/g1/${EXTEN})
>
>My understanding is that the first free channel in the group should be used to
>place calls. Much of the time, this is the case. However, after some seemingly
>random time interval, channel 3 stops accepting outgoing calls, even if the
>line is idle -- and all calls go out on channel 4. If channel 4 is busy,
>outgoing calls are rejected (I hear a congestion tone, and my Cisco 7960 says
>"Reorder") even though channel 3 is idle.
>
>If I then call channel 3's number from another line (eg, my mobile), the
>incoming call is accepted entirely as normal. When the incoming call is
>completed, channel 3 will handle outgoing calls for a while. It invariably
>breaks itself, though.
>
>I've tested in two different PCs, same results.
>
>One point, not sure if it's related: In order to make remote disconnect
>supervision work with my BT line, I've had to modify the "wctdm" (previously
>"wcfxs") driver slightly; I had to raise BATT_THRESH to 8.  Without this
>modification, the FXO modules cannot detect the loss of battery used to
>indicate that the remote party has terminated the call. Ideally I'd prefer to
>not make this modification, but without it remote disconnect supervision
>doesn't work.
>
>I assume that some event is happening to tie up the channel. How can I get 
>Asterisk to dump a full log of all events on the zap channels for debugging 
>purposes?
>
>Any help would be greatly appreciated.
>
>Cheers,
>
>Will
>
>_________________________________________________________________________
>William R Sowerbutts                                  will at sowerbutts.com
>"Carpe post meridiem"                               http://sowerbutts.com
>         main(){char*s=">#=0> ^#X@#@^7=",c=0,m;for(;c<15;c++)for
>         (m=-1;m<7;putchar(m++/6&c%3/2?10:s[c]-31&1<<m?42:32));}  
>

>;
>; Zapata telephony interface
>;
>; Configuration file
>
>[trunkgroups]
>;
>; Trunk groups are used for NFAS or GR-303 connections.
>;
>; Group: Defines a trunk group.  
>;        group => <trunkgroup>,<dchannel>[,<backup1>...]
>;
>;        trunkgroup  is the numerical trunk group to create
>;        dchannel    is the zap channel which will have the 
>;                    d-channel for the trunk.
>;        backup1     is an optional list of backup d-channels.
>;
>;trunkgroup => 1,24,48
>;
>; Spanmap: Associates a span with a trunk group
>;        spanmap => <zapspan>,<trunkgroup>[,<logicalspan>]
>;
>;        zapspan     is the zap span number to associate
>;        trunkgroup  is the trunkgroup (specified above) for the mapping
>;        logicalspan is the logical span number within the trunk group to use.
>;                    if unspecified, no logical span number is used.
>;
>;spanmap => 1,1,1
>;spanmap => 2,1,2
>;spanmap => 3,1,3
>;spanmap => 4,1,4
>
>[channels]
>;
>; Default language
>;
>;language=en
>;
>; Default context
>;
>context=default
>;
>; Switchtype:  Only used for PRI.
>;
>; national:	  National ISDN 2 (default)
>; dms100:	  Nortel DMS100
>; 4ess:           AT&T 4ESS
>; 5ess:	          Lucent 5ESS
>; euroisdn:       EuroISDN
>; ni1:            Old National ISDN 1
>;
>switchtype=national
>;
>; Some switches (AT&T especially) require network specific facility IE
>; supported values are currently 'none', 'sdn', 'megacom', 'accunet'
>;
>;nsf=none
>;
>; PRI Dialplan:  Only RARELY used for PRI.
>;
>; unknown:        Unknown
>; private:        Private ISDN
>; local:          Local ISDN
>; national:	  National ISDN
>; international:  International ISDN
>;
>;pridialplan=national
>;
>; Overlap dialing mode (sending overlap digits)
>;
>;overlapdial=yes
>;
>; Signalling method (default is fxs).  Valid values:
>; em:      E & M
>; em_w:    E & M Wink
>; featd:   Feature Group D (The fake, Adtran style, DTMF)
>; featdmf: Feature Group D (The real thing, MF (domestic, US))
>; featb:   Feature Group B (MF (domestic, US))
>; fxs_ls:  FXS (Loop Start)
>; fxs_gs:  FXS (Ground Start)
>; fxs_ks:  FXS (Kewl Start)
>; fxo_ls:  FXO (Loop Start)
>; fxo_gs:  FXO (Ground Start)
>; fxo_ks:  FXO (Kewl Start)
>; pri_cpe: PRI signalling, CPE side
>; pri_net: PRI signalling, Network side
>; gr303fxoks_net: GR-303 Signalling, FXO Loopstart, Network side
>; gr303fxsks_cpe: GR-303 Signalling, FXS Loopstart, CPE side
>; sf:	      SF (Inband Tone) Signalling
>; sf_w:	      SF Wink
>; sf_featd:   SF Feature Group D (The fake, Adtran style, DTMF)
>; sf_featdmf: SF Feature Group D (The real thing, MF (domestic, US))
>; sf_featb:   SF Feature Group B (MF (domestic, US))
>; The following are used for Radio interfaces:
>; fxs_rx:  Receive audio/COR on an FXS kewlstart interface (FXO at the channel bank)
>; fxs_tx:  Transmit audio/PTT on an FXS loopstart interface (FXO at the channel bank)
>; fxo_rx:  Receive audio/COR on an FXO loopstart interface (FXS at the channel bank)
>; fxo_tx:  Transmit audio/PTT on an FXO groundstart interface (FXS at the channel bank)
>; em_rx:   Receive audio/COR on an E&M interface (1-way)
>; em_tx:   Transmit audio/PTT on an E&M interface (1-way)
>; em_txrx: Receive audio/COR AND Transmit audio/PTT on an E&M interface (2-way)
>; em_rxtx: same as em_txrx (for our dyslexic friends)
>; sf_rx:   Receive audio/COR on an SF interface (1-way)
>; sf_tx:   Transmit audio/PTT on an SF interface (1-way)
>; sf_txrx: Receive audio/COR AND Transmit audio/PTT on an SF interface (2-way)
>; sf_rxtx: same as sf_txrx (for our dyslexic friends)
>;
>signalling=fxo_ks
>;
>; A variety of timing parameters can be specified as well
>; Including:
>;    prewink:     Pre-wink time (default 50ms)
>;    preflash:    Pre-flash time (default 50ms)
>;    wink:        Wink time (default 150ms)
>;    flash:       Flash time (default 750ms)
>;    start:       Start time (default 1500ms)
>;    rxwink:      Receiver wink time (default 300ms)
>;    rxflash:     Receiver flashtime (default 1250ms)
>;    debounce:    Debounce timing (default 600ms)
>;
>rxwink=300		; Atlas seems to use long (250ms) winks
>;
>; Whether or not to do distinctive ring detection on FXO lines
>;
>;usedistinctiveringdetection=yes
>
>;
>; Whether or not to use caller ID
>;
>usecallerid=yes
>cidsignalling=v23
>cidstart=polarity
>;
>; Whether or not to hide outgoing caller ID (Override with *67 or *82)
>;
>hidecallerid=no
>;
>; Whether or not to enable call waiting on FXO lines
>;
>callwaiting=no
>;
>; Whether or not restrict outgoing caller ID (will be sent as ANI only, not available for the user)
>; Mostly use with FXS ports
>;
>;restrictcid=no
>;
>; Whether or not use the caller ID presentation for the outgoing call that the calling switch is sending
>;
>usecallingpres=yes
>;
>; Support Caller*ID on Call Waiting
>;
>callwaitingcallerid=no
>;
>; Support three-way calling
>;
>threewaycalling=no
>;
>; Support flash-hook call transfer (requires three way calling)
>;
>transfer=no
>;
>; Support call forward variable
>;
>cancallforward=yes
>;
>; Whether or not to support Call Return (*69)
>;
>callreturn=no
>;
>; Stutter dialtone support: If a mailbox is specified without a voicemail 
>; context, then when voicemail is received in a mailbox in the default 
>; voicemail context in voicemail.conf, taking the phone off hook will 
>; cause a stutter dialtone instead of a normal one. 
>;
>; If a mailbox is specified *with* a voicemail context, the same will 
>; result if voicemail recieved in mailbox in the specified voicemail 
>; context
>;
>; for default voicemail context, the example below is fine:
>;
>;mailbox=1234
>;
>; for any other voicemail context, the following will produce the 
>; stutter tone:
>;
>;mailbox=1234 at context 
>;
>; Enable echo cancellation 
>; Use either "yes", "no", or a power of two from 32 to 256 if you wish
>; to actually set the number of taps of cancellation.
>;
>; best so far: 64, 128 also seems ok?
>echocancel=64
>;
>; Generally, it is not necessary (and in fact undesirable) to echo cancel
>; when the circuit path is entirely TDM.  You may, however, reverse this
>; behavior by enabling the echo cancel during pure TDM bridging below.
>;
>echocancelwhenbridged=yes
>;
>; In some cases, the echo canceller doesn't train quickly enough and there
>; is echo at the beginning of the call.  Enabling echo training will cause
>; asterisk to briefly mute the channel, send an impulse, and use the impulse
>; response to pre-train the echo canceller so it can start out with a much
>; closer idea of the actual echo.  Value may be "yes", "no", or a number of
>; milliseconds to delay before training (default = 400)
>;
>echotraining=yes
>echotraining=800
>;
>; If you are having trouble with DTMF detection, you can relax the
>; DTMF detection parameters.  Relaxing them may make the DTMF detector
>; more likely to have "talkoff" where DTMF is detected when it
>; shouldn't be.
>;
>;relaxdtmf=yes
>;
>; You may also set the default receive and transmit gains (in dB)
>;
>rxgain=5.0
>txgain=6.5
>;
>; Logical groups can be assigned to allow outgoing rollover.  Groups
>; range from 0 to 31, and multiple groups can be specified.
>;
>group=1
>;
>; Ring groups (a.k.a. call groups) and pickup groups.  If a phone is ringing
>; and it is a member of a group which is one of your pickup groups, then
>; you can answer it by picking up and dialing *8#.  For simple offices, just
>; make these both the same
>;
>callgroup=1
>pickupgroup=1
>
>;
>; Specify whether the channel should be answered immediately or
>; if the simple switch should provide dialtone, read digits, etc.
>;
>immediate=no
>;
>; CallerID can be set to "asreceived" or a specific number
>; if you want to override it.  Note that "asreceived" only
>; applies to trunk interfaces.
>;
>;callerid=2564286000
>;
>; AMA flags affects the recording of Call Detail Records.  If specified
>; it may be 'default', 'omit', 'billing', or 'documentation'.
>;
>;amaflags=default
>;
>; Channels may be associated with an account code to ease
>; billing
>;
>;accountcode=lss0101
>;
>; ADSI (Analog Display Services Interface) can be enabled on a per-channel
>; basis if you have (or may have) ADSI compatible CPE equipment
>;
>;adsi=yes
>;
>; On trunk interfaces (FXS) and E&M interfaces (E&M, Wink, Feature Group D
>; etc, it can be useful to perform busy detection either in an effort to 
>; detect hangup or for detecting busies
>;
>busydetect=no
>;
>; If busydetect is enabled, is also possible to specify how many
>; busy tones to wait before hanging up. The default is 4, but
>; better results can be achieved if set to 6 or even 8. Mind that
>; higher the number, more time is needed to hangup a channel, but
>; lower is probability to get random hangups
>;
>busycount=6
>;
>; On trunk interfaces (FXS) it can be useful to attempt to follow the progress
>; of a call through RINGING, BUSY, and ANSWERING.   If turned on, call
>; progress attempts to determine answer, busy, and ringing on phone lines.
>; This feature is HIGHLY EXPERIMENTAL and can easily detect false answers,
>; so don't count on it being very accurate.  
>;
>; Few zones are supported at the time of this writing, but may
>; be selected with "progzone"
>;
>; This feature can also easily detect false hangups. The symptoms of this 
>; is being disconnected in the middle of a call for no reason.
>;
>callprogress=no
>progzone=uk
>;
>; For fax detection, uncomment one of the following lines.  The default is *OFF*
>;
>;faxdetect=both
>;faxdetect=incoming
>;faxdetect=outgoing
>;faxdetect=no
>;
>; Select which class of music to use for music on hold.  If not specified
>; then the default will be used.
>;
>;musiconhold=default
>;
>; PRI channels can have an idle extension and a minunused number.  So long
>; as at least "minunused" channels are idle, chan_zap will try to call
>; "idledial" on them, and then dump them into the PBX in the "idleext"
>; extension (which is of the form exten at context).  When channels are needed
>; the "idle" calls are disconnected (so long as there are at least "minidle"
>; calls still running, of course) to make more channels available.  The
>; primary use of this is to create a dynamic service, where idle channels
>; are bundled through multilink PPP, thus more efficiently utilizing
>; combined voice/data services than conventional fixed mappings/muxings.
>;
>;idledial=6999
>;idleext=6999 at dialout
>;minunused=2
>;minidle=1
>;
>; Configure jitter buffers in zapata (each one is 20ms, default is 4)
>;
>;jitterbuffers=4
>;
>; You can define your own custom ring cadences here.  You can define up to
>; 8 pairs.  If the silence is negative, it indicates where the callerid
>; spill is to be placed.  Also, if you define any custom cadences, the
>; default cadences will be turned off.
>;
>; Syntax is:  cadence=ring,silence[,ring,silence[...]]
>;
>; These are the default cadences:
>;
>;cadence=125,125,2000,-4000
>;cadence=250,250,500,1000,250,250,500,-4000
>;cadence=125,125,125,125,125,-4000
>;cadence=1000,500,2500,-5000
>;
>; Each channel consists of the channel number or range.  It
>; inherits the parameters that were specified above its declaration
>;
>; For GR-303, CRV's are created like channels except they must start
>; with the trunk group followed by a colon, e.g.: 
>;
>; crv => 1:1
>; crv => 2:1-2,5-8
>;
>;
>;callerid="Green Phone"<(256) 428-6121>
>;channel => 1
>;callerid="Black Phone"<(256) 428-6122>
>;channel => 2
>;callerid="CallerID Phone" <(256) 428-6123>
>;callerid="CallerID Phone" <(630) 372-1564>
>;callerid="CallerID Phone" <(256) 704-4666>
>;channel => 3
>;callerid="Pac Tel Phone" <(256) 428-6124>
>;channel => 4
>;callerid="Uniden Dead" <(256) 428-6125>
>;channel => 5
>;callerid="Cortelco 2500" <(256) 428-6126>
>;channel => 6
>;callerid="Main TA 750" <(256) 428-6127>
>;channel => 44
>;
>; For example, maybe we have some other channels
>; which start out in a different context and use
>; E & M signalling instead.
>;
>;context=remote
>;sigalling=em
>;channel => 15
>;channel => 16
>
>;signalling=em_w
>;
>; All those in group 0 I'll use for outgoing calls
>;
>; Strip most significant digit (9) before sending
>;
>;stripmsd=1
>;callerid=asreceived
>;group=0
>;signalling=fxs_ls
>;channel => 45
>
>;signalling=fxo_ls
>;group=1
>;callerid="Joe Schmoe" <(256) 428-6131>
>;channel => 25
>;callerid="Megan May" <(256) 428-6132>
>;channel => 26
>;callerid="Suzy Queue" <(256) 428-6233>
>;channel => 27
>;callerid="Larry Moe" <(256) 428-6234>
>;channel => 28
>;
>; Sample PRI (CPE) config:  Specify the switchtype, the signalling as
>; either pri_cpe or pri_net for CPE or Network termination, and generally
>; you will want to create a single "group" for all channels of the PRI.
>;
>; switchtype = national
>; signalling = pri_cpe
>; group = 2
>; channel => 1-23
>
>;
>;  Used for distintive ring support for x100p.
>;  You can see the dringX patterns is to set any one of the dringXcontext fields
>;  and they will be printed on the console when an inbound call comes in.
>;
>;dring1=95,0,0 
>;dring1context=internal1 
>;dring2=325,95,0 
>;dring2context=internal2 
>; If no pattern is matched here is where we go.
>;context=default
>;channel => 1 
>
>; PSTN line for Will
>group=1
>callgroup=1
>pickupgroup=1
>signalling=fxs_ks
>context=incoming-from-pstn-will
>callerid=Unknown call for Will's PSTN line <UNKNOWN>
>channel => 4
>
>; PSTN line for Celia
>group=1
>callgroup=1
>pickupgroup=1
>callerid=Unknown call for Celia's PSTN line <UNKNOWN>
>context=incoming-from-pstn-celia
>channel => 3
>
>; Internal DECT phones
>rxgain=-2.0
>txgain=-2.5
>signalling=fxo_ks
>context=internal
>group=2
>callgroup=1
>pickupgroup=1
>callerid=DECT Cordless Phone 1 <913>
>channel => 1
>
>rxgain=-2.0
>txgain=-2.5
>signalling=fxo_ks
>context=internal
>group=2
>callgroup=1
>pickupgroup=1
>callerid=DECT Cordless Phone 2 <914>
>channel => 2

>#
># 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
>#
># 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
>#
># 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/tor*
># 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.
>#
>#loadzone = us
>#loadzone=it
>#loadzone=fr
>#loadzone=de
>#loadzone=uk
>#loadzone=fi
>#loadzone=jp
>#loadzone=sp
>#loadzone=no
>
># Will's config:
>
># channel 1 (was) my X100P:
>#fxsks=1
>#loadzone=uk
>#defaultzone=uk
>
>loadzone=uk
>defaultzone=uk
>fxsks=3,4
>fxoks=1,2
>

>_______________________________________________
>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


_________________________________________________________________________
William R Sowerbutts                                  will at sowerbutts.com
"Carpe post meridiem"                               http://sowerbutts.com
         main(){char*s=">#=0> ^#X@#@^7=",c=0,m;for(;c<15;c++)for
         (m=-1;m<7;putchar(m++/6&c%3/2?10:s[c]-31&1<<m?42:32));}  




More information about the asterisk-users mailing list