LimeSDR实验教程 (3) GSM基站

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/shukebeta008/article/details/102682229

 亲测支持ubuntu 16.04(lattepanda alpha)和Raspbian 10(树莓派4),sdr可以支持limesdr-usb和limesdr mini

下面是树莓派的安装命令,如果是ubuntu,就把Raspbian_10换成xUbuntu_16.04即可。

安装命令:

sudo apt install git g++ cmake libsqlite3-dev libi2c-dev libusb-1.0-0-dev


wget http://download.opensuse.org/repositories/network:/osmocom:/latest/Raspbian_10//Release.key

sudo apt-key add Release.key
rm Release.key

echo "deb  http://download.opensuse.org/repositories/network:/osmocom:/latest/Raspbian_10/ ./" > /etc/apt/sources.list.d/osmocom-latest.list

sudo apt update


sudo apt install osmocom-nitb osmo-trx-lms osmo-bts-trx osmo-ggsn osmo-sgsn osmo-pcu osmo-sip-connector libsofia-sip-ua-glib-dev asterisk sqlite3 libsmpp1 telnet python3-pip

sudo pip3 install smpplib

sudo apt install limesuite limesuite-udev gr-limesdr liblimesuite-dev




sudo su

systemctl stop osmocom-nitb

systemctl stop osmo-nitb

systemctl stop osmo-trx-lms

systemctl stop osmo-bts-trx

systemctl stop osmo-ggsn
systemctl stop osmo-sgsn

systemctl stop osmo-pcu
systemctl stop osmo-sip-connector

systemctl stop asterisk

systemctl disable osmocom-nitb

systemctl disable osmo-nitb
systemctl disable osmo-trx-lms

systemctl disable osmo-bts-trx
systemctl disable osmo-ggsn

systemctl disable osmo-sgsn
systemctl disable osmo-pcu

systemctl disable osmo-sip-connector

systemctl disable asterisk



git clone https://github.com/DrLafa/osmo-nitb-scripts

使用方法:

sudo ./main.py

这样可以启动基站,支持通话,以及短信下发

如果要启用gprs则需要输入

sudo  ./main.py --gprs -i wlan0

如果要自动发短信给新接入的终端可以加上-u,如果要启用sip,可加上--sip。

另外,这个基站还有一个脚本是interact.py,它可以用来查询数据库里的用户,以及下发短信等,但是有点bug要改改。

首先要去掉第29行的monitor.update_monitor(db.subscribers),这句话没什么用,而且会导致循环出错,导致只能对一个用户执行操作。28行的user_interact.interact(args.config, extension)是在与用户交互,根据config.json里的设置,可以给用户发短信,运营商指令,或者打电话,如果只是要查询数据库里有哪些用户也建议删除掉。

改完了就可以输入sudo ./interact来运行了,如果要给指定用户发消息也可以用参数来指定,没的话默认是查询所有用户,并与所有用户交互。

在没有用这些脚本之前,我找了osmo和lime的官方教程,但是是有问题的,如果没有按照脚本里那样先关闭服务,也就是没做disable和stop,直接用命令行运行,会有端口占用的情况,因为apt安装后默认都启动了。另一个问题,使用这个脚本,有时候不正常退出程序,用户数据库不会清空,会有问题,要让它正常退出一下,再启动再行,这种情况在树莓派4上出现的比lattepanda多,可能是性能问题。

还有一点,根据osmo官方的网页,limesdr的时钟不够精确,对于gsm这种tdd系统,长时间运行会有不稳定的情况出现。 推荐给limesdr-usb加一个gpsdo。

这个基站目前我已经实现了手机互相打电话,基站下发短信,手机gprs联网等功能,手机互相发短信不行,可能配置上还有点问题。

这是基站的运行演示视频:

https://v.youku.com/v_show/id_XNDQwOTE3OTI0OA==.html?spm=a2h3j.8428770.3416059.1

以上方法是脚本调用系统服务执行的,如果要看调试信息,也可以用命令行执行,但是这样的话就要自己查询数据库才能知道用户的手机号码,我稍微做了点修改,并且运行成功了。

运行方式是,到osmo-nitb-scripts/configs/目录下,开3个终端窗口,分别输入:

osmo-nitb -c openbsc.cfg

sudo osmo-bts-trx -r 1 -c osmo-bts.cfg

sudo osmo-trx-lms -r 1 -c osmo-trx.cfg

这样基站就启动了,这时候可以把手机都连上去了。接下来可以返回osmo-nitbs-scripts目录,输入:

./interact.py -D ~/osmo-nitb-scripts-master/configs/hlr-sqlite3,来查询接入手机的手机号码,这个功能是我修改interact.py函数实现的,其实也很简单,只是在第28行处加了一行print ("numbers: ", extension)就行了。

下面是运行截图:

我发现一个问题,我视频里用的都是lte测试手机和lte测试sim卡,但是把iphone插着中国移动的卡就很难连上这个gsm基站,但是如果我把中移动的卡插到安卓手机上就可以,把lte测试卡插到iphone上也行。

下图是小米插着中移动卡取到的imsi号码(第三个)。

下图是iphone连我的基站的照片,网络选择里显示的就是我的基站,到这一步我已经把基站名字改了,在configs的openbsc.cfg里可以改。

猜你喜欢

转载自blog.csdn.net/shukebeta008/article/details/102682229