Sangoma语音编码转换卡常见问题回答
目录
- 1 为什么产品说明里面支持iLBC,但是为什么在translators列表不能显示
- 2 在使用编码卡的时候,为什么听不到语音?
- 3 为什么加载编码模块的时候asterisk会奔溃?
- 4 为什么asterisk工作一段时间后突然停止编码处理?
- 5 安装D100 PCI-E卡以后,系统显示报错NMI debug信息
- 6 为什么设置了语音编码卡,但是asterisk不能启动?
- 7 已经设置了sangoma编码模块,为什么有的编码在 CLI 命令 'core show translation'下显示 999999?
- 8 为什么执行 "sngtc_cfg --server" 配置编码卡时失败?
- 9 为什么Sangoma编码在命令行"core show translation" 中translation消耗相对高一些?
为什么产品说明里面支持iLBC,但是为什么在translators列表不能显示
asterisk存在一个bug,如果两个相同的编码同时注册的话,asterisk可能奔溃。 解决办法:
参考链接:asterisk 编码设置 然后在sangoma_codec.conf 文件添加:register=ilbc
在使用编码卡的时候,为什么听不到语音?
在asterisk CLI 命令下:
CLI> sangoma show rtp statistics
如果此命令输出是0 或者值接近0,说明网络正常。如果值大于0,说明网络有问题。
在FreeSwitch CLI 命令下:
CLI> sangoma_codec stats <session number>
如果 Rx 数据包没有递增,说明TX 数据包发送到了编码芯片,但是处理的数据包木返回到asterisk或者freeswitch。 可能IP地址出现了问题。解决办法,在sangoma_codec.conf 添加:
rtpip= <network interface chosen for transcoder>(例如:rtpip=10.1.1.1)
或者在Freeswitch 下面添加:
<param name="rtpip" value="10.1.1.1"/>
保存文件,重新加载模块。
为什么加载编码模块的时候asterisk会奔溃?
原因,astersik 有bug,具体参考:http://issues.asterisk.org/view.php?id=17092。 为了防止此问题发生,sangoma编码卡编译以后,添加其他参数去解决这个问题。解决办法:
确认codec_sangoma.so已经在/usr/lib/asterisk/modules/ 确认/etc/asterisk/modules.conf 添加 noload=>codec_g722.so (例如不加载g722)
保持文件,重新加载asterisk,将会看到其他的编码列表。
为什么asterisk工作一段时间后突然停止编码处理?
如果asterisk工作一段时间以后,突然不处理语音编码,可能是防火墙引起。默认的
sngtc 服务端默认监听网卡地址,如果sngtc 服务端需要特别指定一个端口监听,防火墙
必须允许sngtc 服务端和客户端(asterisk/FreeSwitch)通信。
sngtc 服务端的配置情况,执行命令:netstat -npl
如果客户满意修改默认的配置,sngtc_server 正在监听 0.0.0.0地址。如果显示是其他的IP地址,请
开启防火墙,允许此IP地址通过。
如果此问题一直发生,检查防火墙 : /sbin/iptables -L
清除防火墙数据:
/sbin/iptables --flush
然后再运行
/sbin/iptables -L
安装D100 PCI-E卡以后,系统显示报错NMI debug信息
安装D100 PCI-E编码卡以后,如果系统显示报错信息:
"Uhhuh. NMI received. Dazed and confused, but trying to continue"
原因可能是没有安装最新的tg3 broadcom 网卡驱动,请下载安装此网卡驱动
为什么设置了语音编码卡,但是asterisk不能启动?
正确设置编码卡以后,asterisk启动失败,查看/var/log/asterisk/messages 日志,有以下报错信息:
ERROR[8124] res_config_ldap.c: No directory URL or host found ERROR[8124] res_config_ldap.c: Cannot load LDAP RealTime driver. ERROR[8124] codec_sangoma.c: Refusing to load this module with non-dahdi timing, please disable all res_timing_*.so modules and leave res_timing_dahdi.so as the only timing source in modules.conf ERROR[8124] codec_sangoma.c: You can load this module with other timing sources by setting allownondahditiming=yes in sangoma_codec.conf general configuration section
有两种解决办法:
1)编辑/etc/asterisk/modules.conf 文件,不加载所有的 res_timing_*.so模块,除了res_timing_dahdi.so. 2)或者编辑/etc/asterisk/sangoma_codec.conf ,添加一行: allownondahditiming=yes
保存退出,然后重新启动asterisk服务。
已经设置了sangoma编码模块,为什么有的编码在 CLI 命令 'core show translation'下显示 999999?
打开文件/var/log/asterisk/messages,有以下日志错误:
ERROR[8269] codec_sangoma.c: Failed to create Sangoma transcoding session WARNING[8269] translate.c: Translator 'sngalawtog729' appears to be broken and will probably fail. ERROR[8269] codec_sangoma.c: Create Transcoding Session Error
以上问题,说明编码服务器端没有启动,启动服务器端:
sngtc_server_ctrl start
然后重新启动asterisk
为什么执行 "sngtc_cfg --server" 配置编码卡时失败?
当执行 sngtc_cfg --server 可能出现以下错误:
[SNGTC_INFO ] Configuring Sangoma Transcoding Server [SNGTC_INFO ] Configuring Sangoma Transcoding for Asterisk [SNGTC_INFO ][SNGTC_INFO ][SNGTC_INFO ] Detecting Transcoding Card & Modules ... [SNGTC_ERROR] sngtc_cfg: Failed to detect transcoding modules!
可能是以下几个原因导致:
1)执行 lspci 命令,没有发现 broadcom(PCIe卡) 或者 micrel(PCI卡). 按照链接执行安装: http://wiki.sangoma.com/sangoma-media-transcoding-single-install#Ethernet Setup 2)如果编码卡网卡接口没有启动,执行命令 ifconfig,如果没有发现此网卡,执行此命令 ifconfig -a 启动 网卡 ifconfig ethX up (X代表网卡接口,例如 eth0,eth1) 3) 如果编码卡的网卡没有得到IP地址,执行命令:ifconfig ethX (X代表编码卡的网卡IP地址) 4)指定一个IP地址,然后重新执行 sngtc_cfg --server 命令
为什么Sangoma编码在命令行"core show translation" 中translation消耗相对高一些?
如果和asterisk其他编码对比的话,Sangoma编码在命令行"core show translation" 中translation消耗相对高一些。
这是编码卡默认的设置机制决定的。如果Sangoma模块成功注册的情况下,Asterisk会强制使用sangoma编码卡模块。
特别重要的是,Sangoma编码模块只是支持编码需要转换的环境下,而不是作为一个分离的编码转换中间步骤。
为了在此状态下工作,Sangoma注册的优先级高于asterisk其他编码,如果系统不需要调用Sangoma编码转换的情况下,
Asterisk直接启动asterisk自带的编码模块。