Summary:ASTERISK-15236: chan_dahdi uses 1-2 for second port on one span
Reporter:Sean Darcy (seandarcy)Labels:
Date Opened:2009-11-29 19:31:42.000-0600Date Closed:2011-06-07 14:08:00
Versions:Frequency of
Description:I've set up group 0 for ports 1 and 2 for my only card TDM-400.

But if port 1 is busy, Dial g0 dials DAHDI/1-2, which as I understand it, is port 1 on span 2, which doesn't exist.


asterisk*CLI> dahdi show channels group 0
   Chan Extension  Context         Language   MOH Interpret Blocked    State
      1            internal                   default         In Service
      2            internal                   default         In Service

   -- Executing [s@incoming:3] Dial("SIP/sip-0000000d", "DAHDI/g0,60")
in new stack
    -- Called g0
    -- DAHDI/1-2 is ringing

If I go off-hook with line 2:

-- Starting simple switch on 'DAHDI/2-1'
    -- Hungup 'DAHDI/2-1'

calls on port 4 are DAHDI/4-1.


context=internal      ; Uses the [internal] context in extensions.conf
signalling=fxo_ks     ; fxo_ks not auto  Use FXO signalling for FXS
channel => 1          ; Telephone attached to port 1
channel => 2          ; Telephone attached to port 2

context=incoming-pstn-line  ; Incoming calls go to [incoming-pstn-line]
signalling=fxs_ks     ; fxs_ks not auto Use FXS signalling for FXO
channel => 4
Comments:By: Sean Darcy (seandarcy) 2009-12-13 10:50:09.000-0600


I realize this isn't crucial, but this bug means we can only get one incoming call at a time at our branches.

As someone who knows nothing about programming, I can safely say this shouldn't be hard to fix ;)

So can you give it a little love?


By: dant (dant) 2009-12-13 13:10:30.000-0600

Isn't that call waiting on channel 1?

By: Sean Darcy (seandarcy) 2009-12-16 17:25:47.000-0600

Not sure I understand. Do you mean DAHDI/1-2 is call waiting for DAHDI/1-1?

If so, what would be the DAHDI channel for the channel 1 on a second card?

Also, doesn't dial/g0 mean ring an available channel in group 0? Call waiting should only occur if there were no available channel.

By: dant (dant) 2009-12-16 18:25:05.000-0600

DAHDI/1-2 would be call waiting for DAHDI/1-1...

If you had two TDM400/410s, the first card would have DAHDI/1,2,3,4 and the second would have DAHDI/5,6,7,8... So, the first channel on the second card would be DAHDI/5... First call on each channel would be -1, if call waiting was enabled and a call came in or break was used to make another call, that channel would be -2...

/g0 does mean ring an available/non busy channel in group 0... With call waiting enabled the channel is not busy...

There was a hint to solution in dialplan to your problem in response to your emails to the asterisk-users mailing list in May where you had already identified DAHDI/1-2 was call waiting...

Does it work as you'd expect if you don't set callwaiting = yes?

Have you tried working around this issue by checking the channel status, i.e. using the DEVICE_STATE function?
exten => 100,1,GotoIf($[${DEVICE_STATE(DAHDI/1)} = INUSE]?lineonebusy)
exten => 100,n,Dial(DAHDI/1)
exten => 100,n,Hangup
exten => 100,n(lineonebusy),Dial(DAHDI/2)
exten => 100,n,Hangup

All that said, it would probably be good if you could skip INUSE DAHDI channels when using groups even if call waiting is enabled... perhaps it would be better to go for that as a new feature...

By: Sean Darcy (seandarcy) 2009-12-20 15:31:50.000-0600

I tried checking channel status as you suggested.

Worked like a charm.

Thanks for all the help.

So WFM. BTW, is there a way the OP can change a bug's status. I've missed it in the page, if it's there.

By: Richard Mudgett (rmudgett) 2011-03-01 11:44:57.000-0600

After reading the discussion, this looks like a misunderstanding of the channel name than a bug.