用gnuradio+USRP实现OpenBTS,参考着大牛们的文章折腾了两天终于搭建成功,参考文章链接如下: //本文来自安云网 http://www.cnblogs.com/atomic-pulse/p/4177589.html //内容来自安云网 参考上文搭建时遇到了一些问题,对于遇到的问题及解决方法进行了记录。 //本文来自安云网 在安装OpenBTS5.0之前,要先安装GNURadio和UHD,只要运行安装文件包可执行脚本build-gnuradio,就可以自动安装,安装过程耗时较长,但是不需要过多的手动操作。 Step1:安装合适的系统 本人使用的是UbuntuDesktop or Server 32-bit 14.04 Step2:更新Git OpenBTS使用了Git的几个新的特性,为了确保客户端的兼容性,Git的版本必须在1.8.2以上。命令如下: $ sudo apt-get install software-properties-common python-software-properties $ sudo add-apt-repository ppa:git-core/ppa (press enter to continue) $ sudo apt-get update $ sudo apt-get install git Step3:下载 l工具: 首先确定Git的版本是不是大于1.8.2 $ git --version git version 2.9.1 下载最新的工具 $ git clone https://github.com/RangeNetworks/dev.git l组件: 首先在GitHub上建立自己的SSHkeys。首先登陆github,可以使用已经注册的github账号。 在执行下列命令之前,首先输入命令 sudo apt-get install ssh 安装了ssh之后,再进行下列步骤 产生SSHkeys的步骤: 1、首先检查已经存在的SSHkeys,输入命令 检查是否已经有了公钥,默认的公钥文件名: Øid_dsa.pub Øid_ecdsa.pub Øid_ed25519.pubid_rsa.pub 注:如果没有出现上述文件,则需要使用ssh-keygen-t rsa命令产生(执行 下述流程) 2、产生新的SSHkey 3、把自己的SSHkey加到GitHub中 可用下面指令把里面的内容复制到剪贴板,不过我用指令没有反应,而是找到文件把文件内容直接复制的,具体操作为打开id_rsa.pub,把里面的内容复制到剪贴板(该文件在.ssh文件夹中,直接在主文件夹中可能找不到,这时按住ctrl+h可以显示显示隐藏文件,即可找到.ssh,在.ssh下即可找到id_rsa.pub) 在网页输入github.com登陆自己的github账号,点击个人中心中的setting 选择SSHkeys,点击addSHH key 在titlefield添加名字 把复制的内容粘贴到“key”field,添加后如下图。 4、检测是否产生了SSHkeys 这时可能会有这样的提示: 输入yes,显示如下 说明SSH配置成功。 下面就可以下载所有的组件了,只需要简单的输入命令: $ cd dev $ ./clone.sh 就可以实现自动的安装。 Step4:选择一个branch或tag $ ./switchto.sh master Step5:编译 Build.sh脚本会自动安装所有编译所需要的东西 $ ./build.sh N210 此时会提示错误: 解决办法: 将主文件夹下dev文件夹下的build.sh文件中的installIfMissing libzmq5语句删掉。如下图: 另外,需将主文件夹中/dev/libcoredumper/build.sh中的下述语句删掉,因为该链接在国内无法访问。需要自己下载coredumper-1.2.1.tar.gz放置在/dev/libcoredumper下。 coredumper-1.2.1.tar.gz可从链接https://sourceforge.net/projects/goog-coredumper/files/latest/download下载。 此时,该命令即可正常运行。 编译的包会被放在一个新的目录中。这个目录在dev的BUILD中,找到最新的时间戳文件夹(如下图)。 注意:这一步需要在安装完GNURadio之后进行,否则会报找不到UHD包的错误。 Step6:安装 先cd到最新的时间戳文件里 $ sudo dpkg -i *.deb 安装了该目录下所有.deb 这里可能会遇到dependencies的问题,输入下面的命令可以解决: $ sudo apt-get -f install Step7:运行 下面可以运行OpenBTS $ sudo start sipauthserve $ sudo start smqueue $ sudo start openbts $ sudo start asterisk 如果上述组件都能被启动,分配到进程号,说明OpenBTS安装成功,这里需要注意一点,前两个进程可以在没有安装完GNURadio的情况下被启动,openbts和asterisk必须在安装完GNURadio的情况下才能被启动。是否能被启动的判断依据是是否分配了进程号,如果输入start命令显示的是unknownjob,则表示启动失败。 停止的命令: $ sudo stop sipauthserve $ sudo stop smqueue $ sudo stop openbts $ sudo stop asterisk Step8:用户数据库的注册 $ sudo sqlite3 /var/lib/asterisk/sqlite3dir/sqlite3.db sqlite> .tables DIALDATA_TABLE RRLP SIP_BUDDIES rates sqlite> select * from sip_buddies; sqlite> select * from dialdata_table; sqlite> .quit 以上,OpenBTS的安装结束。 下面进入运行的阶段。 OpenBTS运行 Step1:连接USRP,按照USRP的ip地址,给主机配置一个网络,命令行中中执行uhd_find_devices,若能够找到USRP,则继续执行下述步骤,否则,检查IP地址配置是否正确,网线是否正确连接,UHD和GNURadio驱动是否正常运行。 Step2:启动上面提到的四个进程: $ sudo start sipauthserve $ sudo start smqueue $ sudo start openbts $ sudo start asterisk Step3:四个进程都被分配了各自的进程号以后。启动OpenBTSCLI命令,操作如下: $ cd /OpenBTS $ ./OpenBTSCLI 下面是一些OpenBTS常用命令,此处不必执行。 OpenBTS> help (list all commands available) OpenBTS> audit (check if your configuration is correct) OpenBTS> config (list all parameters) OpenBTS> config XYZ (list all parameters that contain XYZ) OpenBTS> devconfig (change developer and factory parameters) OpenBTS> trxconfig (view the factory radio calibration) [so far only on Range Networks equipment] OpenBTS> chans (view the currently active channels) OpenBTS> tmsis (view all IMSIs that have interacted with the system) OpenBTS> trans (view all completed transactions like calls and sms) OpenBTS> quit Step4:启动OpenBTSCLI以后 config GSM.Radio.Band 900 config GSM.Radio.C0 1 config Control.LUR.OpenRegistration .* 上面配置BTS为GSM900,ARFCN1,对所有手机开放注册权限。注意:该配置使得手机没有注册限制。这样如果系统配置天线的情况下,附近的任何手机便可使用该网络,谨慎在居民点使用。 Step5:使用你的手机连接伪基站。 手机选择运营商(搜到的运营商名字是TestPLMN 1-1),连接该运营商,连接后会收到来自101的欢迎短信。 给101发送你想使用的手机号码,位数在7到10位之间均可。 这样配置以后手机就可以接入网络,并实施通话,发短信功能了。 ----------------------------------------------------------- MARK: http://blog.csdn.net/huazicomeon/article/details/51932534 http://www.cnblogs.com/atomic-pulse/p/4177589.html |