亲测支持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
sudo su
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里可以改。
后来我发现,iphone插着中移动卡也能连上我们的gsm基站,但是要把iphone先设置为3g模式,另外我把基站设置里发射attenuation减少了。
另外我的苹果电脑pip3命令找不到,但是pip里装过smpplib,后来我干脆把代码都改为python2的就行,main和interact开头环境设置要改掉,另外user_interact.py里encoding要删掉python2不支持。