测试环境
Debian 11.6.0
Dahdi-3.2.0
Asterisk-20
Libpri-1.6.0
下载
从 OpenVox 官方网站上下载 DAHDI 源码包
https://www.openvox.cn/pub/drivers/dahdi-linux-complete/openvox_dahdi-linux-complete-current.tar.gz
从 Digium 网站上获取 Libpri:
https://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz
从 Digium 网站上获取 Asterisk:
https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20-current.tar.gz
通常在目录 /usr/src/ 下运行如下指令,下载并解压 DAHDI、Asterisk和 Libpri:
#wget https://www.openvox.cn/pub/drivers/dahdi-linux-complete/openvox_dahdi-linux-complete-current.tar.gz
#wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20-current.tar.gz
#wget https://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz
# tar -xvzf openvox_dahdi-linux-complete-current.tar.gz
# tar –xvzf asterisk-20-current.tar.gz
# tar –xvzf libpri-current.tar.gz
依赖包安装:
apt-get update
apt-get install build-essential
apt-get install git
apt-get install linux-headers-`uname -r`
安装dahdi
将路径转换到 dahdi-linux-complete-XX 源码包目录下 (XX 代表DAHDI 版本),运行如下指令安装 DAHDI:
# cd /usr/src/dahdi-linux-complete-XX
# make
# make install
# make config
安装libpri
将路径转换到 libpri 源码包所在目录下,运行如下指令安装 Libpri:
# cd libpri-XX
# make
# make install
编译遇到问题
解决办法,注释掉libss7-1.6.0/Makefile 文件中 -wall 行
安装asterisk
将路径转换到asterisk源码包目录下 (XX 代表asterisk 版本),运行如下指令安装asterisk:
# cd asterisk-20.xx
依赖包安装
#contrib/scripts/install_prereq install
# ./configure
# make
# make install
# make samples
配置
加载驱动
编译通过后,请根据对应板卡型号运行下述指令加载驱动:
# modprobe dahdi
# modprobe zaphfc(B100 in TE mode) //如果是NT 模式,则是modprobe zaphfc modes=1 force_11_up=0
# modprobe wcb4xxp (B200,B400,B800) // B800 如果有NT口,则参照下图解释根据对应的NT口设置te_nt_override 值然后执行modprobe wcb4xxp te_nt_override=需要值
# dahdi_genconf -vvv
# dahdi_cfg –vvvvvv
B100和B800 如果有NT口 ,根据下图编辑/etc/modprobe.d/dahdi.conf 使开机启动自动加载参数.
vi /etc/modprobe.d/dahdi.conf
正常情况下,执行指令 "dahdi_genconf"后,系统 会自动生成 /etc/dahdi/system.conf 和 etc/asterisk/dahdi-channels.conf两个文件。检查生成的配置文件是否符合您的需求,您也可以手动修改相关参数。值得注意的是,确认dahdi-channels.conf 包含在chan_dahdi.conf 中,若没有,请运行指令:
# echo "#include dahdi-channels.conf" >>/etc/asterisk/chan_dahdi.conf
添加对应板卡驱动到/etc/dahdi/modules 来实现开机自动加载板卡驱动
#cp /etc/dahdi/modules.sample /etc/dahdi/modules
#chmod 0777 /etc/dahdi/modules
#vi /etc/dahdi/modules
下面以B100板卡作为示例来配置
下面显示的是一部分基本通道配置文件 /etc/dahdi/system.conf:
# Span 1: ZTHFC1 "HFC-S PCI A ISDN card 0 [TE] " (MASTER)
span=1,1,0,ccs,ami
# termtype: te
bchan=1-2
hardhdlc=3
echocanceller=mg2,1-2
# Global data
loadzone = us
defaultzone = us
文件/etc/asterisk/dahdi-channels.conf的一部分如下图所示:
; Span 1: ZTHFC1 "HFC-S PCI A ISDN card 0 [TE] " (MASTER)
group=0,11
context=from-isdn
overlapdial=yes # must add this line
switchtype = euroisdn
signalling = bri_cpe_ptmp
channel => 1-2
context = default
group = 63
启动 Asterisk
# asterisk -vvvvvgc
如果 Asterisk 已运行,则运行"asterisk –r"代替。在 CLI 界面中, 请运行
"dahdi show channels" 和 "pri show spans":
编写拨号方案
请在 extensions.conf 文件中编写拨号方案。下图介绍了一个简单的呼入呼出方案:
#vi /etc/asterisk/extensions.conf
;当有通话从BRI板卡进来,sip/100 分机会响铃. 如果建立的分机是xxxx,则修改成sip/xxxx
[from-isdn]
exten => _X.,1,Dial(SIP/100,,r)
exten => _X.,n,Hangup()
;当分机设置context 为from-internel ,呼出会从E1板卡dahdi/1(1代表channel 1)出去, ${EXTEN}为被叫号码.
[from-internal]
exten => _X.,1,Dial(dahdi/1/${EXTEN},,r)
exten => _X.,n,Hangup()
设置拨号方案后请运行"asterisk –r", 并在 CLI 界面中执行指令 "dialplan reload",接下来就可以拨号了.