Chinaunix首页 | 论坛 | 博客
  • 博客访问: 164849
  • 博文数量: 20
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 221
  • 用 户 组: 普通用户
  • 注册时间: 2015-01-14 18:03
个人简介

做好自己份内事

文章分类

全部博文(20)

文章存档

2019年(1)

2018年(2)

2017年(3)

2016年(3)

2015年(11)

我的朋友

分类: 其他UNIX

2015-12-02 15:01:00


作者:赵晓筱

日期:2015-11-25

联系邮箱:

本文仅供参考如何在openwrt编译环境中编译集成asterisk,及保证asteriskopenwrt系统中正常运行。首先路由器的硬件环境必须要足够。

前文介绍了openwrt编译,在编译出一个可用的openwrt路由系统之后。再从openwrt官网中下载一些ipk安装使用,发现安装asterisk安装之后怎么也没有办法正常运行(openwrt安装ipk的方法在此不再介绍)。

首先我还是很支持官网的一些资料,但是在次官网给的路由系统文件不支持官网本身的asterisk,编译的openwrt也不支持官网的asterisk。本人也很是费解。

官网的源地址为:

MT7620的稳定版本ipk路径:

错误的迹象为每次asterisk加载任何一个模块的时候表面卡死,及程序没有办法正确加载模块。阅读日志发现每次程序都是停在load模块时。

个人跟踪源码发现asterisk加载模块时使用到一个函数:dlopen。每次加载模块,程序运行到此之后就不会继续运行了。发现此函数依赖dl库,而在官网中没有找到对应的dl库的ipk,并且在自己编译的及官网中的路由bin系统中也没有dl库。

最终发现需要在编译openwrt时增加配置,官网提供的不支持集成asterisk。要想支持asterisk必须自己重新编译,在编译openwrt中裁剪内核的一步中增加:

[*] Advanced configuration options (for developers)  --->

      [*]   Toolchain Options  --->

             C Library implementation (Use musl)  --->

          (X) Use (e)glibc

       (e)glibc version (eglibc 2.19)  --->

          (X) glibc 2.21

首先选择openwrt编译使用的是glibc,此编辑库就可以用dl库了。其次选择的是glibc的版本了。自由选择。

Network  --->

   Telephony  --->

在配置下选择编译的asterisk版本即可。重新编译openwrt,烧录对应的路由器文件就可以了。

至于asterisk如何配置、使用本文就不再阐述了,不过个人使用的平台已经确认可以使用的。而且在文件系统中也发现了dl库。

集成asterisk可以通过修改配置文件注册两个sip分机,校验asterisk运行的正确性,可以通过命令:

asterisk –rvvv


asterisk后台输出信息,执行命令:

Module show

看看asterisk所有的模块有无加载成功,最主要的模块为红框标记的模块需要有。这个为配置sip话机必须的模块。当然加载模块多不要紧。

asterisk配置文件的路径在/etc/asterisk

修改配置文件sip.conf。在文件末尾增加:

点击(此处)折叠或打开

  1. [5003]
  2. secret=5003
  3. dtmfmode=rfc2833
  4. canreinvite=no
  5. context=internal
  6. host=dynamic
  7. trustrpid=yes
  8. sendrpid=no
  9. type=friend
  10. nat=yes
  11. port=5060
  12. qualify=yes
  13. qualifyfreq=60
  14. callgroup=1
  15. pickupgroup=1
  16. callerid=5003

  17. [5004]
  18. secret=5004
  19. dtmfmode=rfc2833
  20. canreinvite=no
  21. context=internal
  22. host=dynamic
  23. trustrpid=yes
  24. sendrpid=no
  25. type=friend
  26. nat=yes
  27. port=5060
  28. qualify=yes
  29. qualifyfreq=60
  30. callgroup=1
  31. pickupgroup=1
  32. callerid=5004

修改配置文件:extensions.conf 配置文件中[general]节点后增加


点击(此处)折叠或打开

  1. [internal]
  2. exten => _x.,1,Dial(SIP/${EXTEN})

然后最粗鲁的方法就是重启asterisk,或者直接重启路由器也行。

这样用sip客户端及注册了两个分机,就可以互相拨打了。

GOOD LUCK。

阅读(3880) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~