[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