手搓一台基站让附近手机主动连接

📅 2026/6/28 4:42:43
手搓一台基站让附近手机主动连接
这是一份专为零基础小白设计的树莓派 2G 短信基站教程。全程使用开源OpenBTS框架硬件成本约 ¥50012 小时即可跑通。 一、硬件清单按淘宝/京东常见型号部件推荐型号作用备注树莓派Pi 3B 或 Pi 44G 内存版主控平台3B 功耗低、兼容性好Pi 4 性能强但需散热GSM 模块SIM800L 或 SIM900A射频收发SIM800L 驱动成熟OpenBTS 官方支持天线GSM 外置天线带 SMA 接口信号收发必配塑料壳天线覆盖仅 10~20 米电源双路电源或独立 3.7V 2A 充电宝供电SIM800L 峰值电流 2A必须独立供电SIM 卡移动/联通/电信 2G 卡短信功能开启身份认证提前充值余额无需流量辅材杜邦线若干、面包板可选接线红黑线各 4 根TX/RX 各 2 根电源避坑SIM800L 开机瞬间电流可达 2A若共用树莓派 5V 供电极易导致 Pi 重启。建议树莓派用原装 5V/2.5A 电源SIM800L 用独立 3.7V 锂电池/充电宝供电。 二、硬件接线重点交叉串口 RTS 接地textSIM800L 引脚 → 树莓派 GPIO VCC (3.7~4.2V) → 独立电源正极或 Pi 5V Pin 2建议独立 GND → Pi GND Pin 6共地 TXD → Pi RX Pin 10 (GPIO 15) RXD → Pi TX Pin 8 (GPIO 14) RTS → Pi GND Pin 39⚠️必须接地否则串口通信失败 接线后检查RXD↔TXD 交叉连接RTS 固定接地。模块上电后LED会规律闪烁约 1Hz 表示注册正常。 三、系统准备Raspberry Pi OS Lite烧录系统下载Raspberry Pi OS Lite (32-bit)用 BalenaEtcher 烧录至 SD 卡。启用串口bashsudo raspi-config # Interface Options → Serial Port → # Would you like a login shell to be accessible over serial? → No # Would you like the serial port hardware to be enabled? → Yes禁用蓝牙释放串口bashsudo systemctl disable bluetooth sudo reboot验证串口重启后登录执行ls -l /dev/ttyAMA0应看到设备文件。️ 四、一键安装 OpenBTSbash# 1. 更新系统 sudo apt update sudo apt upgrade -y # 2. 安装编译依赖 sudo apt install git build-essential libsqlite3-dev libmysqlclient-dev \ libusbx-dev libncurses-dev automake pkg-config libtool subversion \ asterisk asterisk-sqlite3 asterisk-mysql asterisk-voicemail \ mysql-server libssl-dev libreadline-dev libusb-1.0-0-dev \ libboost-dev libboost-system-dev libboost-thread-dev -y # 3. 克隆 OpenBTS git clone https://github.com/OpenBTS/openbts.git cd openbts # 4. 编译带多核加速约 5~15 分钟 make -j$(nproc) # 5. 安装 Asterisk 模块 sudo make install-asterisk sudo systemctl enable asterisk⚙️ 五、关键配置决定能否搜到信号编辑配置文件nano Config/config修改以下核心参数保留其他默认值ini# 1. 频点中国 900MHz GSM 常用 ARFCN channel 34 # 移动/联通通用若搜不到可试 35 或 36 # 2. 运营商 PLMN选其一 PLMN 46000 # 中国移动 # PLMN 460# 3. PLMN 选择手机搜索时显示的运营商名称 PLMN 46000 # 中国移动 # PLMN 46001 # 中国联通部分手机需改为46001 # PLMN 46003 # 中国电信需手机支持2G VoLTE回退 # 4. 短信功能开关 SMS 1 SMSRouter 1 # 5. 数据库路径用于存储HSS鉴权信息 database HSS sqlite3 /home/pi/openbts/db/HSS.db # 6. 手机空闲模式参数控制驻留时间防频繁切换 T3324 120 # 手机空闲定时器单位分钟建议≥60 T3324 0 # 关闭网络侧强制去注册保存退出CtrlO→Enter→CtrlX️ 六、初始化 HSS 鉴权库OpenBTS 首次运行会自动创建数据库目录。先手动生成 HSS 文件再插入测试用户bash# 1. 运行一次 OpenBTS自动创建配置与数据库 cd /home/pi/openbts ./startOpenBTS # 看到 Listening for SIP... 后 CtrlC 退出 # 2. 创建测试用户手机号与加密密钥 sqlite3 /home/pi/openbts/db/HSS.db INSERT INTO Users VALUES (13800138000, 49F1F0B1C56F1090A45D32873501B34A, 3132333435363738393031323334353637383930, 0); quit # 说明 # 49F1F0B1... 是 OpenBTS 官方提供的测试 Kc加密密钥 # 3132333... 是 MSISDN手机号转16进制 # 实际使用时可替换为你 SIM 卡对应的手机号 七、启动服务 手机测试1. 启动 OpenBTSbashcd /home/pi/openbts ./startOpenBTS✅正常现象终端输出Listening for SIP on 5060显示channel 34注册成功手机靠近天线时终端会打印IMSI4600xxxxxxxxx和IMEIxxxxxxxxxxxxxxx2. 手机端设置现代手机默认优先 4G/5G需手动切换打开设置 → 移动网络 → 网络类型选择GSM/EDGE或仅 2G关闭VoLTE部分手机依赖 4G 发 SMS手动搜索网络 → 会出现China Mobile或OpenBTS→ 点击连接3. 发送短信测试在 OpenBTS 运行终端中直接输入bashsms 13800138000 欢迎连接基站测试短信成功✅成功标志手机端收到短信终端打印SMS sent successfully 八、查看日志 捕获数据所有连接、IMSI、短信记录均保存在日志中bash# 实时跟踪日志另开一个 SSH 终端 tail -f ~/.asterisk.log # 或查看 OpenBTS 专属日志 cat /home/pi/openbts/.OpenBTS.log关键信息提取日志片段含义IMSI460013xxxxxxxx手机唯一标识460开头为国内IMEI86xxxxxxxxxxxx设备硬件IDSMS from 138...上行短信内容RRC Connection Release手机断开连接正常撤离 可写脚本自动解析日志并入库 MySQL/CSV实现批量捕获。️ 九、小白常见故障排查现象可能原因解决步骤搜不到网络ARFCN 错频 / RTS 未接地 / 供电不足1. 改channel 35或362. 确认 RTS 接 GND3. SIM800L 换独立 3.7V 电源手机连上闪断信号过强/过弱 / T3324 设置不当1. 拉远天线或加衰减器2. 修改T3324 1803. 避开真实基站同频覆盖区收不到短信HSS 用户不匹配 / 短信路由未启用1. 检查 HSS.db 中手机号与 SIM 卡一致2. 确认SMS 1已生效3. 用asterisk -rx core show sms验证路由4G/5G 手机不驻留手机强制要求 LTE 证书 / 46000 被屏蔽1. 手机设2G only2. 改PLMN 46001测试3. 靠近天线≤30米树莓派重启共用 5V 供电导致压降SIM800L 必须独立供电树莓派用原装 5V/2.5A 十、下一步进阶玩法按需选做目标实现方式难度自动捕获 IMEI/轨迹Python 解析日志 SQLite 存储⭐⭐** captive Portal登录页**基站 dnsmasq 简易 Web 服务器⭐⭐⭐4G 基站换 USRP 或 USB 4G 模块 OpenAirInterface (OAI)⭐⭐⭐⭐定时开关 远程管理systemd 服务 nginx 控制面板⭐⭐ 小白避坑总结RTS 接地是成败关键不接地则串口无法握手终端无日志。2G 手机越来越少建议准备一台旧安卓机如红米 Note 7/10 等手动关闭 4G/5G 最稳妥。短信走 SMSC 有延迟OpenBTS 本地处理 SMS延迟 2 秒。若需对接真实短信网关需配SMSC参数。功耗与散热树莓派跑 OpenBTS 约 1.5WSIM800L 峰值 2A/3.7V≈7.4W。建议加散热片连续运行建议用 10000mAh 以上充电宝。