With DAHDI, this turns out not to be so bad. Once you add the physical hardware, There is just a few DAHDI related commands to run, and a small section of extensions.conf to change.

Note: Throughout I use the parameter -vvvvv to indicate as much as verboseness as possible. I use all 5 v’s from habit because of Asterisk’s console command (more of a make sure it’s as verbose as possible by adding many v’s).

First (after installing the hardware), run dahdi_scan as root to make sure it’s detected. Your output should look similar to mine:

mikerm@asterisk:~$sudo dahdi_scan -vvvvv [1] active=yes alarms=OK description=Wildcard TDM410P name=WCTDM/0 manufacturer=Digium devicetype=Wildcard TDM410P location=PCI Bus 00 Slot 12 basechan=1 totchans=4 irq=0 type=analog port=1,FXS port=2,FXS port=3,none port=4,FXO mikerm@asterisk:~$

Then, run dahdi_cfg as to configure DAHDI to accept the current hardware setup:

mikerm@asterisk:~$sudo dahdi_cfg -vvvvv DAHDI Tools Version - 2.10.0.1 DAHDI Version: 2.10.0.1 Echo Canceller(s): MG2 Configuration ====================== Channel map: Channel 01: FXO Kewlstart (Default) (Echo Canceler: mg2) (Slaves: 01) Channel 02: FXO Kewlstart (Default) (Echo Canceler: mg2) (Slaves: 02) Channel 04: FXS Kewlstart (Default) (Echo Canceler: mg2) (Slaves: 04) 3 channels to configure. Setting echocan for channel 1 to mg2 Setting echocan for channel 2 to mg2 Setting echocan for channel 4 to mg2 mikerm@asterisk:~$

Now, run dahdi_genconf as root to re-generate the other configuration files to set up signalling:

mikerm@asterisk:~$sudo dahdi_genconf -vvvvv Default parameters from /etc/dahdi/genconf_parameters Generating /etc/dahdi/assigned-spans.conf Generating /etc/dahdi/system.conf Generating /etc/asterisk/dahdi-channels.conf mikerm@asterisk:~$

If you have a Digium TDM400P/800P/2400P card, also see: fxotune

If this is the first time configuring DAHDI, make sure “#include /etc/asterisk/dahdi-channels.conf” is under the “channels” context in chan_dahdi.conf:

[channels]
#include /etc/asterisk/dahdi-channels.conf
----- snip -----

Now we get to play in extensions.conf. If you check out /etc/asterisk/dahdi-channels.conf, you should see an entry similar to this:

;;; line="4 WCTDM/0/3 FXSKS  (EC: MG2 - INACTIVE)"
signalling=fxs_ks
group=0
context=from-pstn
channel => 4
callerid=
group=
context=default


By default, we now have a context “from-pstn” that we need to either add, or modify in extensions.conf. Here is a part of mine as an example.

[from-pstn]
exten => s,1,NoOp(Incomming call from PSTN: ${CALLERID(all)}) exten => s,n,JabberSend(asterisk,${mikerm},Incomming call from: \${CALLERID(all)}

Note: Don’t assume that only having NoOp in a context will at least spit out a message if it’s called. It actually doesn’t do anything unless there is something else below it that works correctly.