0. 前言
OpenBTS 代码已长时间无人维护,实际上按照下文内容部署之后,2G 伪基站稳定性极差,很难稳定驻网,短信送达成功率很低,GPRS 网络更是很难工作。
推荐使用 osmocom 的 GSM 套件,或者 YateBTS + bladeRF。
1. 环境准备
系统版本:Ubuntu 22.04 / Debian 12
软件依赖:
1 2 3 4 5 6 7 8 9 |
# 安装 UHD 支持软件,debian 12 系统使用 libuhd4.3.0 apt install uhd-host libuhd-dev libuhd4.1.0 # 检测 USRP 设备 uhd_find_devices uhd_usrp_probe # 安装编译依赖 apt install autoconf libtool libosip2-dev libortp-dev libusb-1.0-0-dev g++ sqlite3 libsqlite3-dev erlang libreadline6-dev libncurses5-dev git dpkg-dev debhelper libssl-dev cmake build-essential wget libzmq3-dev |
2. 构建项目
-
克隆代码
1git clone https://github.com/PentHertz/OpenBTS -
编译,安装
12345678910cd OpenBTS# 切换至稳定版本git checkout 5.1.0# 如果编译 libcoredumper 遇到 dpkg build 错误可忽略,或者按照如下方案修改 compat 版本# dh_clean: error: Compatibility levels before 7 are no longer supported (level 4 requested)# 可以在 libcoredumper/build.sh 文件 dpkg-buildpackage 代码行之前加入如下内容: echo 10 | sudo tee debian/compat./preinstall.sh# 开始构建./autogen.sh./configure --with-uhdmake -j$(nproc)sudo make installsudo ldconfig
3. 启动进程
-
启动短信消息队列和 SIP 认证相关服务,并置于后台运行
12sudo smqueue &sudo sipauthserve & -
启动 OpenBTS 主进程
12cd /OpenBTSsudo ./OpenBTS -
在 OpenBTS 主进程的交互式 shell 中可以进行正常功能配置,但是建议使用新的终端窗口,运行 OpenBTSCLI
1/OpenBTS/OpenBTSCLI
4. 基础配置
- 在 OpenBTSCLI 的交互式 shell 中执行以下命令进行配置
123456789101112# 降低接收增益,或者将手机远离 SDR 设备,否则会出现大量 Clipping detected on RACH input 错误rxgain 10# 接受所有 IMSI 的注册请求,请求设备 IMEI, 发送临时 TMSIconfig Control.LUR.OpenRegistration .*config Control.LUR.QueryIMEI 1config Control.LUR.SendTMSIs 1# 配置 GSM 运营商信息,MCC 460 为中国大陆地区,MNC 为运营商,移动 00/02/04/07/08, 联通 01/06/09/10, 电信 03/05/11/12config GSM.Identity.MCC 460config GSM.Identity.MNC 01config GSM.Identity.ShortName zeekr# 启用 GPRS 数据功能(需配合 iptables 进行 NAT 转发)config GPRS.Enable 1
配置并正常运行之后,可通过 syslog 查看相关日志。
在终端设备建立连接之后,可通过 tmsis 查看当前接入的设备信息,通过 sendsms 发送短信等。