FreeSWITCH-1.6以上+Sangoma 数字语音板卡安装方式
安装FreeSWITCH-1.6 和Sangoma 数字语音卡必须经过以下几个步骤。模拟语音卡也支持此安装步骤,仅无需安装ISDN支持包。请用户在安装之前详细阅读。此中文文档内容更新速度可能滞后或一些链接失效,所以请用户首先查看Sangoma 官方文档来进行安装部署。在安装FreeSWITCH-1.6时,用户安装几个核心的软件包就可以支持Sangoma 语音卡:
1)Sangoma 语音卡的驱动(Wanpipe)。
2)Sangoma 的PRI 协议包(libsng_isdn),如果用户是模拟语音卡,无需安装此支持包。
3)FreeSWITCH包含FreeTDM应用模块来支持PSTN的呼叫。这里,用户要注意,从FreeSWITCH-1.6以后,Sangoma 更新了freetdm模块的安装方式,它可以支持两种安装方式:
1)通过Sangoma 官方的一个含有FreeSWITCH和freetdm的包来下载安装。
2)通过对FreeSWITCH打补丁的方式,添加一个FreeTDM模块。
具体的官方文档链接如下:
https://wiki.freepbx.org/display/PC/Telephony+Cards+for+FreeSWITCH
下面,我们按照具体的步骤一步步安装Sangoma 语音板卡和FreeSWITCH。
目录
下载Sangoma板卡wanpipe驱动支持包
Sangoma 官方建议在Linux平台安装Sangoma语音板卡。
Sangoma 板卡用户必须注意,请在安装编译驱动之前,必须确认成功安装驱动支持包;否则会出现编译失败或者报错。安装FreeSWITCH时,需要用户必须安装相应的支持包
请访问此链接,查看不同平台Redhat Distributions/Ubuntu/Debian 6 Distributions的安装包:
https://wiki.freepbx.org/display/PC/Telephony+Cards+for+FreeSWITCH, Sangoma 语音板卡驱动的支持包
FreeSWITCH 平台安装支持包,平台不同,安装方式可能有所不同,用户必须提前准备。
https://freeswitch.org/confluence/display/FREESWITCH/Installation+ARCHIVED
安装过程中,请务必留意几个方面的问题:
1)确认每个支持包安装成功。
2) 确认内核开发包和目前正在使用的内核版本完全一致。否则不能安装语音板卡驱动程序,建议用户最好安装光盘中的内核开发包,不要使用yum从网上安装。使用yum安装经常导致内核开发包版本和内核版本不一致的问题,切记。
3) Sangoma E1 板卡安装仅仅需要安装3个软件包:wanpipe 板卡驱动,libsng_isdn和FreeSWITCH软交换。
4) Sangoma 和FreeSWITCH集成,相关的配置文件包括:
4.1) Sangoma 板卡配置文件,在/etc/wanpipe 目录下,包含:
每个端口配置文件(每个端口配置文件以:wanpipeX.conf 命名),日志文件,启动顺序配置文件。
4.2)Freetdm.conf 文件,配置板卡数据,默认路径是:/usr/local/freeswitch/conf/freetdm.conf
4.3)FreeSWITCH 应用层配置文件默认路径:/usr/local/freeswtich/conf/autoload_configs/freetdm.conf.xml
安装Wanpipe/PRI协议栈/Freeswitch
Wanpipe驱动安装
执行命令 cd /usr/src,下载最新的wanpipe 版本
wget ftp://ftp.sangoma.com/linux/current_wanpipe/wanpipe-current.tgz tar xfz wanpipe-current.tgz // 减压tar 文件 cd wanpipe-<version>.tgz // 进入到这个文件夹 make freetdm // 编译freetdm make install // 安装编译的模块
执行命令 wanrouter hwprobe,检测sangoma 硬件信息(显示A101,如果是其他型号,显示相应产品信息)
------------------------------- | Wanpipe Hardware Probe Info | ------------------------------- 1 . AFT-A101-SH : SLOT=2 : BUS=4 : IRQ=217 : CPU=A : PORT=1 : HWEC=0 : V=41 Card Cnt: A101=1
libsng_isdn PRI安装
如果支持PRI, 用户必须下载Sangoma的ISDN支持包,分别支持32位,64位系统,最新版本可到官方下载。如果用户使用的是模拟语音卡则无需安装此软件包:
32-bit library: ftp://ftp.sangoma.com/linux/libsng_isdn/libsng_isdn-current.i686.tgz 64-bit library: ftp://ftp.sangoma.com/linux/libsng_isdn/libsng_isdn-current.x86_64.tgz tar xfz libsng_isdn-current.<arch>.tgz // 减压到 /usr/src 路径下 cd libsng_isdn-<version>.<arch> // 进入到 文件夹 make install // 执行编译安装命令
两种FreeSWITCH+freetdm模块的安装方式
通常情况下,编译FreeSWITCH可以通过git下载的方式或者tar文件源代码下载安装的方式编译FreeSWITCH和Sangoma freetdm 模块:
在安装FreeSWITCH之前,用户必须安装所要求的支持包,否则会导致安装失败。请参考官方文档或者其他资源来实现支持包的安装。
git clone git://git.freeswitch.org/freeswitch.git //如果通过git安装,请提前安装git工具 wget http://files.freeswitch.org/freeswitch-snapshot.tar.gz ./bootstrap.sh // 执行安装配置环境设置 #libs/freetdm/mod_freetdm // 打开freeswitch源代码路径下的modules.conf 文件,找到这一行,删除注释符#,保存文件,表示支持Sangoma freetdm 模块编译。 ./configure // 默认安装文件到 /usr/local/freeswitch make // 执行编译 make install // 安装文件
用户在安装FreeSWITCH-1.6加Sangoma语音卡时,Sangoma也提供了两种安装方式,用户可以比较简单和灵活地安装相关的FreeTDM模块。
1)下载Sangoma官方提供的FreeSWITCH+freetdm的软件包,通过此支持包安装FreeSWITCH和FreeTDM。
从Sangoma官方服务器下载Freeswtich + Sangoma FreeTDM tar 文件,注意,如果此链接失效,请及时联系我们技术支持或者查看官方最新的发布版本: ftp://ftp.sangoma.com/linux/freeswitch/public_fs_merge_v1.6.tgz 对tar文件解压 tar -xvf public_fs_merge_v1.6.tgz 在解压文件路径下可以进行FreeSWITCH和freetdm的编译。用户可以参考解压文件中的命令执行编译-"sangoma-public-fs-compile.txt" 。
2) 安装FreeSWITCH源代码以后,下载freetdm补丁,对FreeSWITCH添加freetdm模块的方式来安装FreeSWITCH和FreeTDM模块。
使用Sangoma的FreeTDM 模块,把freetdm模块手动添加到Freeswitch代码中,用户通过补丁的方式添加模块代码,然后进行FreeSWITCH的编译或者重新编译。 这里,需要用户手动拷贝源代码到freeswitch的支持包路径下。 1. Download our FreeTDM source code. Copy and paste below line into your Linux command line to start download. -> git clone -b public_v1.6-merge https://git.freepbx.org/scm/core/freetdm.git 2. Copy the freetdm code to Freeswitch directory. a) mv <freeswitch_source_code_dir>/libs/freetdm /tmp/freetdm.bkup.junk // 执行备份,如果无需备份,可忽略此步骤。 b) cp -r <downloaded_freetdm_dir> <freeswitch_source_code_dir>/libs/freetdm // 把下载的文件拷贝到freeswitch 源代码相应路径下。 3. 使用此脚本对其代码进行补丁处理,这样,FreeSWITCH就会支持了FreeTDM模块: 脚本内容如下: #!/bin/bash # This script is to apply sangoma specific patch depending upon if the # same is already present on public freeswitch or not is_patch_present=`git log | grep "320d5f2015976fed9ca282dfeeb2bd3e977e6f76" | wc -l` if [ "$is_patch_present" != "0" ]; then echo "Public freeswitch already has the patch merged. Thus, creating only sangoma-public-fs-compile.txt" patch -p 1 < libs/freetdm/public_freeswitch/README.patch else patch -p 1 < libs/freetdm/public_freeswitch/sangoma-FS-1.6.patch fi 具体链接可访问:https://git.freepbx.org/projects/CORE/repos/freetdm/browse/public_freeswitch/sangoma-FS-1.6-apply_patch.sh?at=public_v1.6-merge 脚本成功执行后,可自动生成sangoma-public-fs-compile.txt文件。然后执行文件中的命令进行编译。 注意:在编译过程中,FreeSWITCH会自动编译freetdm模块,如果没有编译freetdm模块的话,可能需要用户编辑module.conf 文件,添加freetdm模块,找到此行,编辑修改(#../../libs/freetdm/mod_freetdm,修改为../../libs/freetdm/mod_freetdm),然后保存配置, 重新执行./configure,make, make install。
配置设置文件
在确保完成了Sangoma 驱动安装,ISDN支持包和成功编译FreeSWITCH+freetdm模块的流程后,用户可以执行sangoma板卡配置基本来自动配置所有相关参数。
但是在配置过程中,用户一定要注意选择正确的配置选项,以保证语音卡能够正常工作。我们已经列出了中国用户的示例,请按照示例执行。
如果配置错误的话,用户也可以重新执行脚本覆盖以前的配置。
配置Wanpipe and mod_freetdm
执行工具 wancfg_fs,脚本命令将自动检测设置sangoma语音板卡和pri协议配置文件,存储路径都是默认路径。
- cd /usr/sbin/, 执行安装脚本: ./wancfg_fs
- /etc/wanpipe/wanpipe#.conf // 系统生产相应的每个端口的配置文件wanpipe1-wanpipe#,这是物理接口配置文件,每个端口对应一个配置文件。
- /usr/local/freeswitch/conf/freetdm.conf // FreeTDM 配置文件,配置PRI的D通道和B通道设置,这是信令接口的配置文件
- FreeSwtich mod_freetdm 模块配置文件,这是FreeSWITCH的freetdm 具体应用接口的通道配置文件
/usr/local/freeswtich/conf/autoload_configs/freetdm.conf.xml
'''执行脚本安装过程中,中国用户需要选择的选项''',请小心操作: Select media type->E1 // 支持中国E1 Select linecode-> HDB3 // E1接口支持两种线路编解码格式:AMI格式和HDB3格式。默认HDB3 Select framing-> NCRC4 // 是否需要支持CRC4 校验,如果不支持选择此项。大多数中国客户使用NCRC4 Select Clock-> Normal Select Signalling type-> PRI CPE // '''运营商端上NET 网络侧,本地必须选择CPE 用户侧''' Select switchtype -> EuroISDN Select Configure port for full use->yes Select Dialplan context-> PSTN // 注意,到这一步,一个端口就算配置完成了,脚本会重复配置 第2 口,3口,如果是16E1的话,执行到16口,直到配置完所有的板卡端口。 Configuration complete-> Yes Dahdi and Wanpepe configuration complete-> 选择 2 would you like to continue->Yes would you like wanrouter to start on system boot-> yes
配置FreeSWITCH和mod_freetdm接口模块
为了使得FreeTDM正确加载,修改/usr/local/freeswitch/conf/autoload_configs/ 目录下的modules.conf.xml文件
修改下面一行
<!-- <load module="mod_freetdm"/> -->
修改后:
<load module="mod_freetdm"/>
检查Sangoma 物理接入状态,检查ftdm信令状态
加载了freetdm模块后,我们需要确保pri 信令层的状态是正常状态,然后才能测试呼入呼出。
1)检查物理状态,可以通过Sangoma 驱动底层工具查看物理状态,线路,远端告警信息:
http://freepbx.org.cn/wiki/index.php?title=Sangoma_wanpipemon_T1/E1_line_alarms_%E7%BA%BF%E8%B7%AF%E5%91%8A%E8%AD%A6%E6%8E%92%E6%9F%A5%E5%B7%A5%E5%85%B7
2) 或者通过FreeSWITCH CLI命令,执行以下命令查看端口状态和信令:
2.1 ftdm sangoma_isdn l1_stats wp1, 返回结果显示:connected, disconnected。connected表示物理连接正常。
2.2 ftdm sangoma_isdn show_spans, 如果物理连接正常,信令正常,显示UP,active。,表示信令正常
呼入呼出拨号规则举例
在确认了物理连接正常,信令正常以后,用户可以配置FreeSWITCH的配置文件来实现呼入呼出的拨打测试。
对freetdm支持的语法拨号规则的示例:
通过指定的端口呼出: "freetdm/<span_name>/a/<destination_number>" 通过指定的呼出组呼出: "freetdm/<group_name>/a/<destination_number>"
测试之前,请使用Xlite在freeswitch注册一个分机1001,默认密码1234. 注意修改配置文件,需要重新加载模块
呼出举例:通过分机拨打9186653XXXX呼出到186653XXXX. 在freeswitch 的配置文件dialplan/default.xml添加
<extension name="outgoing"> <condition field="destination_number" expression="^9(.+)$"> // 拨9前缀呼出。 <action application="bridge" data="freetdm/wp1/a/$1"/> </condition> </extension>
呼入举例:E1呼入以后转到分机1001.在/dialplan/public/00_inbound_did.xml中修改成如下:
<include> <extension name="public_did"> <condition field="destination_number" expression="^(.+)$"> <action application="set" data="domain_name=$${domain}"/> <action application="transfer" data="1001 XML default"/> // E1 呼入以后转到分机1001 </condition> </extension> </include>
PRI 命令检测
Layer 1 驱动层信息
使用方法: l1_stats <span name> 举例: ftdm sangoma_isdn l1_stats wp1
Protocol Status检测
如何检测PRI 端口状态: 使用: show_spans 举例: ftdm sangoma_isdn show_spans // 显示UP/Down Active/Inactive <pre> Protocol trace信息 <pre> 如何打开 Q921 trace: 使用: trace q921 <span name> 举例: ftdm sangoma_isdn trace q921 wp1
如何打开 Q931 trace: 使用: trace q931 <span name> 举例: ftdm sangoma_isdn trace q931 wp1
如何关闭所有traces信息: 使用: trace disable <span name> 举例: ftdm sangoma_isdn trace disable wp1
无回令音或者不能透传彩令
解决办法,在呼出之前加answer 应用。
FreeSwitch ftdm 命令集
To see a list of your configured spans, at the CLI type * ftdm list // 显示端口列表 To see detailed information about a specific span * ftdm dump <span_id> To see detailed information about a specific channel on span * ftdm dump <span_id> <chan_id> To start a span (this terminates FS with sangoma_isdn when you stopped the span before) * ftdm start <span_id> // 启动一个端口 To stop a span * ftdm stop <span_id> // 停止一个端口 To get a pcap trace (I guess it doesn't work currently) * ftdm q931_pcap <span_id> on|off [pcapfilename without suffix] (this command shouldn't be defined in mod_freetdm, but in ftmod_isdn I guess) To enable/disable DTMF detection on whole span or certain channel * ftdm dtmf on|off <span_id> [<chan_id>] // 开启DTMF检测,支持Sangoma 带回声硬件DTMF检测 To enable a trace on whole span or certain channels * ftdm trace <path where to save files per channel> <span_id> [<chan_id>] To disable a trace on whole span or certain channels * ftdm notrace <span_id> [<chan_id>] To adjust gains on whole span or certain channels * ftdm gains <rxgain> <txgain> <span_id> [<chan_id>] // 调整 端口曾益 rx 代表接收 tx 代表呼出 * ftdm sangoma_isdn trace <q921|q931> <span_name> Call this for both q921 and q931 to have both decoded To disable decoding of q921 and q931 messages on a span * ftdm sangoma_isdn trace disable <span_name> To get layer 1 statistics from span (derived from wanpipe I guess) * ftdm sangoma_isdn l1_stats <span_name> To get a short status report of each span * ftdm sangoma_isdn show_spans
启动Sangoma语音板卡和启动FreeSWITCH命令
如果用户需要启动sangoma语音板卡或者停止FreeSWITCH的运行,用户可以使用以下命令来执行。更多命令查看官方网站。这里,需要提醒用户的是:
启动顺序:先启动Sangoma语音板卡,然后再启动FreeSWITCH。
卸载顺序:先停止FreeSWITCH,然后再停止Sangoma板卡驱动。因为FreeSWITCH已经调用了freetdm接口和驱动的信令接口,所以必须先停止FS。
以下是经常使用的命令:
1)启动,停止,重新启动Sangoma语音板卡命令分别是:wanrouter start/stop/restart。如果用户需要查看log日志,可以访问/var/log/messages 文件
2) 启动FreeSWITCH 后台模式:/usr/local/freeswitch/bin/freeswitch -nc
3)通过ps查看FreeSWITCH运行状态:ps fax |grep freeswitch
4)进入FreeSWITCH CLI 模式:/usr/local/freeswitch/bin/fs_cli, debug freeswitch
5)停止FreeSWITCH:/usr/local/freeswitch/bin/freeswitch -stop
常见问题排查
1) Sangoma E1 语音板卡最大支持1E1-16E1 PRI免费,SS7是付费模块,本文档不支持SS7安装配置。
2)启动顺序:先启动Sangoma语音板卡,然后再启动FreeSWITCH。
3)卸载顺序:先停止FreeSWITCH,然后再停止Sangoma板卡驱动。
3)如何排查Sangoma物理连接,此链接包括了每个参数的具体含义
http://wiki.voip88.com/index.php/Sangoma_wanpipemon_T1/E1_line_alarms_%E7%BA%BF%E8%B7%AF%E5%91%8A%E8%AD%A6%E6%8E%92%E6%9F%A5%E5%B7%A5%E5%85%B7
4)为了快速解决客户问题,Sangoma 一般要求客户提供系统相关日志文件。Sangoma 支持系统打包工具,如何获得整体打包的log日志:
http://wiki.voip88.com/index.php/Sangoma_%E7%B3%BB%E7%BB%9F%E6%8E%92%E6%9F%A5%E6%97%A5%E5%BF%97%E6%89%93%E5%8C%85%E5%B7%A5%E5%85%B7
注:此日志工具仅支持Linux平台。
5)确认已经连接了运营商线路,物理连接检查Disconnected,参考:
http://wiki.sangoma.com/troubleshooter-boards-pri-Wanpipe-Driver-status-shows-Disconnected
6) 线缆线序,E1板卡使用标准的RJ48接口,线序图例,查看:
http://wiki.sangoma.com/Pinouts
7) Sangoma 板卡本身不附送120欧姆-75欧姆转接头,我们发货时会附送此转接头。
8) 如何使用FreeSWITCH的ESL,参考:
http://wiki.sangoma.com/FreeSWITCH-ESL
9) Freetdm.conf 配置举例:
http://wiki.sangoma.com/wanpipe-freeswitch-config-freetdm-isdn
10) Sangoma FreeSWITCH 修改排查文件:
http://wiki.sangoma.com/Freeswitch-Troubleshooting-Information-a101-2-4-8
11) 如果执行make时,出现 error: libxml/parser.h: No such file or directory,用户需要安装libxml2-dev 支持包,通过yum 安装或源代码编译。
12)如果系统在初始化检测时,发现找到 yasm 时,可以通过源代码安装yasm,下载链接:http://www.tortall.net/projects/yasm/releases/