OpenWRT 通过 3G Modem 加 asterisk 将 GSM 通话转为 SIP

本贴最后更新于 1576 天前,其中的信息可能已经沧海桑田

本文主要实现 OpenWRT 系统通过 Huawei 3G Modem 加 asterisk 套件将 GSM 通话转为 SIP 通话

安装 openwrt 下的 asterisk16 套件

opkg update
opkg install asterisk16-app-system asterisk16-chan-dongle asterisk16-pjsip asterisk16-codec-ulaw asterisk16-codec-alaw asterisk16-res-rtp-asterisk asterisk16-bridge-simple

调整 PJSIP 作为默认服务,并且新增几个 PJSIP 账户,用以测试内线通

/etc/asterisk/pjsip.conf

[transport-udp]                                                        
type=transport   
protocol=udp    ;udp,tcp,tls,ws,wss                                        
bind=0.0.0.0

[6003]                                                                          
type=endpoint                                                                 
transport=transport-udp                                                      
context=from-internal                                 
disallow=all                                
allow=ulaw                                                              
auth=6003-auth                                                                
aors=6003                                                                    
                                                                               
[6003-auth]                                                                             
type=auth                                                                       
auth_type=userpass                                                      
password=6003                                                                     
username=6003                                                                 
                                                                            
[6003]                                                                        
type=aor                                                                       
max_contacts=1



[6004]                                                                 
type=endpoint                                                                 
transport=transport-udp                                                        
context=from-internal                                                              
disallow=all                                                                    
allow=ulaw                                                              
auth=6004-auth                                                                     
aors=6004                                                                     
                                                                            
[6004-auth]                                                                   
type=auth                                                                      
auth_type=userpass                                                              
password=6004                                                                   
username=6004                                                                  
                                                                               
[6004]                                                                      
type=aor                                                                              
max_contacts=1 

新增分机拨打模板,

/etc/asterisk/extension.conf

[from-internal]                                                               
exten => _Z.,1,Dial(PJSIP/${EXTEN},60,Trg)                                        
same => n,Hangup() 

用 asterisk 查看分机状态,拨打过程中 pjsip show endpoints 中显示的状态会从 Not in use 转换为 In use

asterisk -rvvvv
OpenWrt*CLI> pjsip show contacts

  Contact:  <Aor/ContactUri..............................> <Hash....> <Status> <RTT(ms)..>
==========================================================================================

  Contact:  6001/sip:6001@192.168.234.127:53117;transport= 378e2db08b NonQual         nan
  Contact:  6001/sip:6001@192.168.234.127:53117;transport= 378e2db08b NonQual         nan
  Contact:  6003/sip:6003@192.168.234.158:49989;transport= 2ec100f865 NonQual         nan
  Contact:  6003/sip:6003@192.168.234.158:49989;transport= 2ec100f865 NonQual         nan
  Contact:  6004/sip:6004@192.168.104.11:5060              586381001a NonQual         nan
  Contact:  6004/sip:6004@192.168.104.11:5060              586381001a NonQual         nan

Objects found: 6

    -- PJSIP/6001-00000005 is ringing
    -- PJSIP/6001-00000005 is ringing
       > 0x2262b00 -- Strict RTP learning after remote address set to: 192.168.234.127:52518
    -- PJSIP/6001-00000005 answered PJSIP/6004-00000004
       > 0x2270c60 -- Strict RTP learning after remote address set to: 192.168.104.11:11866
    -- Channel PJSIP/6001-00000005 joined 'simple_bridge' basic-bridge <ee120657-8627-4868-b677-cb0d896a2b5a>
    -- Channel PJSIP/6004-00000004 joined 'simple_bridge' basic-bridge <ee120657-8627-4868-b677-cb0d896a2b5a>
       > 0x2262b00 -- Strict RTP switching to RTP target address 192.168.234.127:52518 as source
       > 0x2270c60 -- Strict RTP switching to RTP target address 192.168.104.11:11866 as source
OpenWrt*CLI> pjsip show endpoints

 Endpoint:  <Endpoint/CID.....................................>  <State.....>  <Channels.>
    I/OAuth:  <AuthId/UserName...........................................................>
        Aor:  <Aor............................................>  <MaxContact>
      Contact:  <Aor/ContactUri..........................> <Hash....> <Status> <RTT(ms)..>
  Transport:  <TransportId........>  <Type>  <cos>  <tos>  <BindAddress..................>
   Identify:  <Identify/Endpoint.........................................................>
        Match:  <criteria.........................>
    Channel:  <ChannelId......................................>  <State.....>  <Time.....>
        Exten: <DialedExten...........>  CLCID: <ConnectedLineCID.......>
==========================================================================================

 Endpoint:  6001                                                 In use        1 of inf
     InAuth:  6001-auth/6001
        Aor:  6001                                               1
      Contact:  6001/sip:6001@192.168.234.127:53117;transp 378e2db08b NonQual         nan
  Transport:  transport-udp             udp      0      0  0.0.0.0:5060
    Channel: PJSIP/6001-00000005/AppDial                         Up            00:00:04   
        Exten:                           CLCID: "6004" <6004>

 Endpoint:  6002                                                 Unavailable   0 of inf
     InAuth:  6002-auth/6002
        Aor:  6002                                               1
  Transport:  transport-udp             udp      0      0  0.0.0.0:5060

 Endpoint:  6003                                                 Not in use    0 of inf
     InAuth:  6003-auth/6003
        Aor:  6003                                               1
      Contact:  6003/sip:6003@192.168.234.158:49989;transp 2ec100f865 NonQual         nan
  Transport:  transport-udp             udp      0      0  0.0.0.0:5060

 Endpoint:  6004                                                 In use        1 of inf
     InAuth:  6004-auth/6004
        Aor:  6004                                               1
      Contact:  6004/sip:6004@192.168.104.11:5060          586381001a NonQual         nan
  Transport:  transport-udp             udp      0      0  0.0.0.0:5060
    Channel: PJSIP/6004-00000004/Dial                            Up            00:00:04   
        Exten: 6001                      CLCID: "" <6001>


Objects found: 4

       > 0x2270c60 -- Strict RTP learning complete - Locking on source address 192.168.104.11:11866
       > 0x2262b00 -- Strict RTP learning complete - Locking on source address 192.168.234.127:52518


有条件的情况下建议可以考虑使用 IAX 分机替代 SIP 分机,这样只需要 NAT 打通一个 UDP 端口就能通话,而不用像 SIP 那样要考虑 ALG,ICE,STUN 等方案

下面是新增一个 IAX 分机的用例

opkg update
opkg install asterisk16-chan-iax2

/etc/asterisk/iax.conf

[general]
bindport=4569
bindaddr=0.0.0.0
iaxcompat=yes
nochecksums=yes
disallow=all
allow=ulaw

[6010]
type=friend
username=6010
secret=6010
context=from-internal
host=dynamic
callerid=6010<6010>

/etc/asterisk/extensions.conf

[from-internal]
exten => 6010,1,Dial(IAX2/6010,60,Trg)

由于 3G modem 还没到货,所以目前先更新到这里,等到货后继续配置。

12 月 27 号收货,继续更,用到的型号是 Huawei K3765.

K3765 3G modem 1

K3765 3G modem 2
K3765 3G modem

在 openwrt 下配置 dongle 设备,请结合实际数据配置

/etc/asterisk/dongle.conf

[general]
interval=20
[defaults]
context=dongle-in
group=0
exten=+862022221234
[dongle0]
imei=123451234512345

通过 asterisk 控制台查一下设备状态,

asterisk -rvvvv
RiWifi*CLI> dongle show devices
ID           Group State      RSSI Mode Submode Provider Name  Model      Firmware          IMEI             IMSI             Number        
dongle0      0     Free       16   3    3       FFFFFFFFFFFFFF K3765      11.126.03.04.521  123451234512345  123451234512345  Unknown 

接下来新增呼出、呼入的分机配置

/etc/asterisk/extensions.conf

[from-internal]
exten => _1.,1,Dial(Dongle/g0/${EXTEN:1}) ;呼出设置,结合实际,我这边是加了"1"这个前缀,例如我的 SIP 分机要拨打 10011,那么拨号就是 110011
[dongle-in]
exten => +862022221234,1,Dial(IAX2/6010,60,Trg) ;呼入设置,我这边就是配置成所有呼叫直接转到 IAX-6010 分机,复杂点的可以做 IVR,号码本,不过只有一路的电话就不需要搞这么复杂了。

最后,拨号测试

呼入测试

呼入测试 1

呼入测试 2

呼出测试

呼出测试 1

呼出测试 2

refer: https://www.ppuu.org/2019/12/openwrt-asterisk-dongle-gsm-to-sip/

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • JSON

    JSON (JavaScript Object Notation)是一种轻量级的数据交换格式。易于人类阅读和编写。同时也易于机器解析和生成。

    51 引用 • 190 回帖
  • Jenkins

    Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。

    51 引用 • 37 回帖 • 1 关注
  • 前端

    前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。

    247 引用 • 1347 回帖
  • 爬虫

    网络爬虫(Spider、Crawler),是一种按照一定的规则,自动地抓取万维网信息的程序。

    106 引用 • 275 回帖
  • 自由行
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    83 引用 • 165 回帖 • 43 关注
  • 互联网

    互联网(Internet),又称网际网络,或音译因特网、英特网。互联网始于 1969 年美国的阿帕网,是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一巨大国际网络。

    96 引用 • 330 回帖 • 1 关注
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    129 引用 • 793 回帖
  • 游戏

    沉迷游戏伤身,强撸灰飞烟灭。

    169 引用 • 799 回帖
  • Node.js

    Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。

    138 引用 • 268 回帖 • 197 关注
  • SMTP

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。

    4 引用 • 18 回帖 • 587 关注
  • 房星科技

    房星网,我们不和没有钱的程序员谈理想,我们要让程序员又有理想又有钱。我们有雄厚的房地产行业线下资源,遍布昆明全城的 100 家门店、四千地产经纪人是我们坚实的后盾。

    6 引用 • 141 回帖 • 559 关注
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    1 引用 • 11 回帖 • 2 关注
  • iOS

    iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。

    84 引用 • 139 回帖
  • 倾城之链
    23 引用 • 66 回帖 • 100 关注
  • 知乎

    知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。

    10 引用 • 66 回帖
  • frp

    frp 是一个可用于内网穿透的高性能的反向代理应用,支持 TCP、UDP、 HTTP 和 HTTPS 协议。

    15 引用 • 7 回帖 • 11 关注
  • 智能合约

    智能合约(Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于 1994 年由 Nick Szabo 首次提出。

    1 引用 • 11 回帖 • 7 关注
  • 安装

    你若安好,便是晴天。

    128 引用 • 1184 回帖
  • 区块链

    区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。

    91 引用 • 751 回帖 • 1 关注
  • AngularJS

    AngularJS 诞生于 2009 年,由 Misko Hevery 等人创建,后为 Google 所收购。是一款优秀的前端 JS 框架,已经被用于 Google 的多款产品当中。AngularJS 有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等。2.0 版本后已经改名为 Angular。

    12 引用 • 50 回帖 • 424 关注
  • OpenShift

    红帽提供的 PaaS 云,支持多种编程语言,为开发人员提供了更为灵活的框架、存储选择。

    14 引用 • 20 回帖 • 602 关注
  • 服务

    提供一个服务绝不仅仅是简单的把硬件和软件累加在一起,它包括了服务的可靠性、服务的标准化、以及对服务的监控、维护、技术支持等。

    41 引用 • 24 回帖 • 4 关注
  • FFmpeg

    FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

    22 引用 • 31 回帖 • 1 关注
  • 尊园地产

    昆明尊园房地产经纪有限公司,即:Kunming Zunyuan Property Agency Company Limited(简称“尊园地产”)于 2007 年 6 月开始筹备,2007 年 8 月 18 日正式成立,注册资本 200 万元,公司性质为股份经纪有限公司,主营业务为:代租、代售、代办产权过户、办理银行按揭、担保、抵押、评估等。

    1 引用 • 22 回帖 • 685 关注
  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 39 关注
  • 黑曜石

    黑曜石是一款强大的知识库工具,支持本地 Markdown 文件编辑,支持双向链接和关系图。

    A second brain, for you, forever.

    10 引用 • 85 回帖 • 1 关注