测试环境
系统:Rocky Linux(Centos 8)
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:
http://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
安装
依赖包安装
在安装 DAHDI 前请先检查是否所有的依赖包都安装成功,如果依赖包没有安装,将导致后续的软件安装无法顺利进行
#dnf -y install epel-release
#dnf group -y install "Development Tools"
#dnf -y install git wget vim net-tools sqlite-devel psmisc bison ncurses ncurses-devel libtermcap-devel newt-devel libxml2-devel libtiff-devel gtk2-devel libtool libuuid-devel subversion initscripts kernel-devel kernel-devel-$(uname -r) crontabs cronie-anacron libedit libedit-devel zlib zlib-devel openssl openssl-devel gnutls-devel gcc gcc-c++
如果更新源中没有找到匹配的 kernel-devel,那么就需要下载匹配的RPM 包手动安装,或者执行如下指定升级到最新的稳定内核版本:
# dnf install kernel kernel-devel
安装完后重启系统应用新的内核,在新内核上继续后面的操作。
在上述依赖包的检测过程中,如果该依赖包已经安装,系统会提示已经安装,不会继续安装这个包,用户可以运行下一条指令安装其它包;
如果没有安装,则会自动安装直到系统提示安装成功。
Dahdi安装
将路径转换到 dahdi-linux-complete-XX 源码包目录下 (XX 代表DAHDI 版本),运行如下指令安装 DAHDI:
# cd /usr/src/dahdi-linux-complete-XX
# make
# make install
# make config
#systemctl enable dahdi
Libpri安装
将路径转换到 libpri 源码包所在目录下,运行如下指令安装 Libpri:
# cd libpri-XX
# make
# make install
编译遇到下面问题
解决办法,注释掉libpri-1.6.0/Makefile 文件中 -Wall 行
Asterisk安装
将路径转换到asterisk源码包目录下 (XX 代表asterisk 版本),运行如下指令安装asterisk:
# cd asterisk-20.xx
#contrib/scripts/install_prereq install
# ./configure --libdir=/usr/lib64 --with-jansson-bundled=yes
# make
# make install
# make samples
#systemctl enable asterisk
配置
加载驱动
编译通过后,请根据对应板卡型号运行下述指令加载驱动:
d130板卡对应驱动是opvxd115, d230,d430,d830,d1630 对应驱动是wct4xxp
# modprobe dahdi
# modprobe opvxd115(D130)
# modprobe wct4xxp (D230,D430,D830,D1630)
# dahdi_genconf -vvv
正常情况下,执行指令 "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 来实现开机自动加载板卡驱动
#vi /etc/dahdi/modules
下面以D130板卡作为示例来配置
下面显示的是一部分基本通道配置文件 /etc/dahdi/system.conf:
注释掉echocanceller 行
确定是否需要开启crc4校验
如果E1运营商没有开启crc4校验,就需要去掉crc4. 修改成
span=1,1,0,ccs,hdb3
在中国,运营商一般不开启crc4.
文件/etc/asterisk/dahdi-channels.conf 的一部分如图所示:
确认system.conf 和 dahdi-channels.conf 文件后执行如下命令:
# dahdi_cfg –vvvvvv
这条指令将从文件 system.conf 中读取并加载参数到硬件中。指令运行的一部分输出结果显示如下面所示。
启动 Asterisk
# asterisk -vvvvvgc
如果 Asterisk 已运行,则运行"asterisk –r"代替。在 CLI 界面中, 请运行:
如果通道显示全部正确,说明 DAHDI 已成功加载到 Asterisk 中,接下来请设置拨号方案。
编写拨号方案
请在 extensions.conf 文件中编写拨号方案。下图介绍了一个简单的呼入呼出方案:
# vi /etc/asterisk/extensions.conf
;当有通话从E1板卡进来,会播放cc-welcome 语音.
[from-pstn]
exten => _X.,1,Answer() ;answer the inbound call
exten => _X.,n,Playback(cc_welcome)
exten => _X.,n,Hangup()
;当分机设置context 为from-internel ,呼出会从E1板卡dahdi/g0出去, ${EXTEN}为被叫号码.
[from-internal]
exten => _X.,1,Dial(dahdi/g0/${EXTEN})
exten => _X.,n,Hangup()
设置拨号方案后请运行"asterisk –r", 并在 CLI 界面中执行指令 "dialplan reload",接下来就可以拨号了.