December 14, 2010

Asterisk: chan_dahdi.c: No D-channels available! Using Primary channel as D-channel anyway!

If you are experiencing the following error in /var/log/asterisk/full:

WARNING[8207] chan_dahdi.c: No D-channels available! Using Primary channel 48 as D-channel anyway!
WARNING[8207] chan_dahdi.c: No D-channels available! Using Primary channel 48 as D-channel anyway!

Chances are that you are using a T1 or E1 PRI on a Digium card with two ports (e.g. wct4xxp+) but are only using one active PRI port in production.

This error occurs when Asterisk attempts to identify a D channel (signaling channel) on the second, non-active PRI. You can confirm this by running ‘dahdi_tool’ and checking wether your second port is in a RED condition (e.g. down).

To correct this issue edit:

$ nano -w /etc/asterisk/dahdi-channels.conf

And comment out the second PRI interface:

; Span 1: TE2/0/1 "T2XXP (PCI) Card 0 Span 1" (MASTER) B8ZS/ESF
group=0,11
context=from-pstn
switchtype = national
signalling = pri_cpe
channel => 1-23
context = default
group = 63

; Span 2: TE2/0/2 “T2XXP (PCI) Card 0 Span 2” B8ZS/ESF RED
;group=0,12
;context=from-pstn
;switchtype = national
;signalling = pri_cpe
;channel => 25-47
;context = default
;group = 63

Then edit:

$ nano -w /etc/dahdi/system.conf

And comment out the second PRI interface:

# Span 1: TE2/0/1 "T2XXP (PCI) Card 0 Span 1" (MASTER) B8ZS/ESF
span=1,1,0,esf,b8zs
# termtype: te
bchan=1-23
dchan=24
echocanceller=oslec,1-23

# Span 2: TE2/0/2 “T2XXP (PCI) Card 0 Span 2” B8ZS/ESF RED
#span=2,2,0,esf,b8zs
# termtype: te
#bchan=25-47
#dchan=48
#echocanceller=oslec,25-47

You then need to restart Dahdi:

$ asterisk -rx "dahdi restart"

You can then confirm that only your active PRI channels are present:

$ asterisk -rx "dahdi show channels"

Output should be something like this:

Chan Extension Context Language MOH Interpret Blocked State
pseudo default default In Service
1 from-pstn default In Service
2 from-pstn default In Service
3 from-pstn default In Service
4 from-pstn default In Service
5 from-pstn default In Service
6 from-pstn default In Service
7 from-pstn default In Service
8 from-pstn default In Service
9 from-pstn default In Service
10 from-pstn default In Service
11 from-pstn default In Service
12 from-pstn default In Service
13 from-pstn default In Service
14 from-pstn default In Service
15 from-pstn default In Service
16 from-pstn default In Service
17 from-pstn default In Service
18 from-pstn default In Service
19 from-pstn default In Service
20 from-pstn default In Service
21 from-pstn default In Service
22 from-pstn default In Service
23 from-pstn default In Service

Test your inbound, outbound dialing and monitor /var/log/asterisk/full to make sure the error is gone.