Raspberry Pi上搭建和配置RasPBX实现VoIP GSM网关
2014年10月2日LTNS 访问次数 382发表评论阅读评论
Raspberry Pi (RPI) 是一款信用卡尺寸大小的、基于 ARM架构的迷你电脑,由英国树莓派基金会组织开发,这里贴二张 B型(售价35美
元)的网上图片
基金会的初衷是以低价硬件和自由软件推动在中小学的基础计算机学科教育,但是自2012年推出以来,却很快得到了全球 Maker们的青睐,基于 RPI开发了各种各样的,如WEB服务器、NAS服务器、多媒体中心、路由器、GPS跟踪器、智能家居控制、GSM基站服务器、咖啡机控制器,等等的应用。
网上介绍过一个开源的 VoIP PBX软件 RasPBX,基于 Raspbian 整合了 Asterisk 和相应的GUI管理界面FreePBX,可以把 RPI变成一个小型的网络电话交换机,配合 chan_dongle(华为3G U棒的驱动)可实现 GSM VoIP应用,这两天抽空尝试了一下,在此作个记录。
准备条件:
1. B型 RPI一块,主要参数如下
CPU: ARM1176JZF-S核心(ARM11系列)700MHz
RAM: 512MB (早期的256MB版本也可以安装 RasPBX) USB: usb 2.0 数量2个(支持USB hub扩展) 网络接口: 10/100 以太网接口(RJ45接口) 板载存储: SD / MMC / SDIO卡插槽 详见 维基页面
2. Micro-USB接口的电源(RPI随机不带电源),我用5V 1A规格的,网上也有人建议电流至少1.5A;
3. 至少4GB容量的SD卡一张,用作 RPI的存储介质;
4. 兼容 SIP协议的 IP电话机,可用安装了 SIP SoftPhone软件(如 Zoiper、CSipSimple等)的智能手机替代;
5. 3G U棒,兼容的型号请参考 RasPBX官网,我用的是华为 E173u-1,按这里的 wiki页面 的说法该型号U棒的芯片是高通的 MSM6290。
aa另外,某宝上卖的 3G U棒一般都是已解锁的,如下图所示,如未解锁可用 DC-unlocker 这款软件,具体用法和注意事项(解锁有风险)
请自行网上搜索。
网络连接示意图如下
烧录 RasPBX启动盘
下载 raspbx镜像文件,目前最新版本 raspbx-31-07-2014.zip(已集成了 Asterisk 11.11.0 和 FreePBX 2.11.0.38),通过烧录工具(如 Win32 Disk Imager)将解压得到的 .img文件写入 SD卡,完成后将 SD卡插入 RPI,用网线连接到路由器,最后插上电源启动。
(图片中 RPI的透明塑料外壳是另购的)
升级 RasPBX系统
这里先要指出一下,因为 RasPBX官网 已被WALL,所以得先想办法比如让路由器能翻WALL上网(具体请自行网上搜索),才能进行后面的操作。
用 Putty 登录 RPI(默认用户名和密码分别是 root 和 raspberry),升级系统并安装 chan_dongle
apt-get update raspbx-upgrade install-dongle
apt-get install ussd-webpage #如有需要可安装发送USSD的web页面 #安装完成后关机 shutdown -h now
注:运行 install-dongle的过程中,会遇到如下几个提问:
Please enter the phone number of your SIM card (defaults to +1234567890 if left blank): 输入U棒里的 sim卡手机号码,直接回车则默认为 +1234567890
Send incoming SMS to email address (leave empty to disable SMS forwarding): 设置邮箱,以便将U棒收到的短信内容转发过去,直接回车可取消该功能
Forward incoming SMS to mobile phone number (via dongle0) (leave empty to disable): 设置一个手机号码,以便将U棒收到的短信通过 dongle0 转发至该号码,直接回车可取消该功能
Would you like to install a webpage for sending SMS with chan_dongle? (http://raspbx/sms/) [y/N] 是否安装发送短信的web页面,可回答 y 并按提示设置一个登录密码。
在 U棒里塞入 sim卡,插入 RPI,然后通电启动,顺利的话可在 Asterisk CLI界面(CLI命令用法可参考 这里)读取到相应的参数,下面的示例是从 E173+我的移动2G卡 读取的
root@raspbx:~# asterisk -r #或者 asterisk -rvvvv 进入调试模式
Asterisk 11.6.0, Copyright (C) 1999 - 2013 Digium, Inc. and others. Created by Mark Spencer
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details. This is free software, with components licensed under the GNU General Public License version 2 and other licenses; you are welcome to redistribute it under certain conditions. Type 'core show license' for details.
========================================================================= Connected to Asterisk 11.6.0 currently running on raspbx (pid = 3370)
raspbx*CLI> dongle show device state dongle0 -------------- Status ------------- Device : dongle0 State : Free
Audio : /dev/ttyUSB1 Data : /dev/ttyUSB2 Voice : Yes SMS : Yes Manufacturer : huawei Model : E173
Firmware : 11.126.16.04.00 IMEI : 8*************8 IMSI : 4*************9
GSM Registration Status : Registered, home network RSSI : 19, -75 dBm Mode : GSM/GPRS Submode : EDGE
Provider Name : 139******** Location area code : 188A Cell ID : 6BE1
Subscriber Number : +86139******** SMS Service Center : +8613800210500 Use UCS-2 encoding : Yes USSD use 7 bit encoding : Yes USSD use UCS-2 decoding : No Tasks in queue : 0 Commands in queue : 0 Call Waiting : Disabled Current device state : start Desired device state : start When change state : now Calls/Channels : 0 Active : 0 Held : 0 Dialing : 0 Alerting : 0 Incoming : 0 Waiting : 0 Releasing : 0 Initializing : 0
raspbx*CLI> exit
Asterisk cleanly ending (0). Executing last minute cleanups
FreePBX的设置
接下来在浏览器访问 http://raspbx 或 http://RPI的ip地址,点击左侧的“FreePBX Administration”图标(默认用户名和密码都
是 admin),进入 FreePBX管理页面