FreeSWITCH-1.6以上+Sangoma 数字语音板卡安装方式

来自最权威最新完整开源SIP,语音通信,融合通信中文技术文档资料,提供详细的Asterisk Freepbx, FreeSBC, 免费会话边界控制器,网关,语音板卡,IPPBX,SBC配置资料-asterisk,freepbx,freesbc 用户手册 界面配置,呼叫路由,IVR, 网关对接,拨号规则,SIP 分机呼叫,pjsip, IVR, 录音, CDR, 队列呼叫,振铃组,CLI 命令中文资料手册
跳转至: 导航搜索

安装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/