OsmocomBB项目简介和实操

OsmocomBB是一款开源GSM基带软件实施项目,旨在替代专有GSM基带软件,使用户能在兼容手机上仅依赖自由软件进行电话通信。项目包括模拟和数字基带驱动、外围设备驱动、从第1层到第3层的GSM电话端协议栈。此外,介绍了Nuttx-bb实验性移植、libosmocore库、OsmocomBB的安装和使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

OsmocomBB是一个免费软件/开源GSM基带软件实施。它打算完全取代对专有GSM基带软件的需求。
Nuttx-bb是OsmocomBB Layer1到Nuttx RTOS的更具实验性,正在进行中的端口。
简而言之:通过在兼容手机上使用OsmocomBB,您将能够仅基于自由软件拨打和接听电话,发送和接收短信等。

github项目地址:https://github.com/osmocom

osmocom-bb GSM信号控制流程
此描述仅提及GSM信号进入软件的接收路径。所述发射部分被省略了,因为是bootloader / bootstrappig部分,尤其是各种控制路径从层1到RF硬件。
首先,在天线处接收RF信号,然后将其通过Rita混频器,该混频器会将
下变频直接转换为模拟I / Q基带。依次将其发送到Iota ABB 的基带ADC中。
结果信号将传递到HardwareCalypso DBB 的BSP(基带串行端口)。
在这里插入图片描述
在HardwareCalypso DBB 内部,数字基带样本从BSP传递到DSP内核,
然后在使用共享内存接口传递到ARM内核之前,对其进行处理,解调,解交织,解码等操作。在ARM内核上,OsmocomBB层1处理MAC块并将其通过L1CTL发送到UART。
在这里插入图片描述
在PC本身上,osmocon程序在串行端口上接收L1CTL消息,该程序对多路复用的Sercomm流进行解复用,并通过Unix域套接字将L1CTL传递到您可能正在运行的任何layer23程序中(例如mobile)。
在这里插入图片描述

安装

libosmocore

libosmocore是一个具有各种实用程序功能的库,最初是作为OpenBSC项目的一部分开发的,但具有更通用的性质,因此(至少)对我们在自由软件/开源移动领域开发的其他程序很有用通讯。
我们只需在此库中的各个Osmocom项目之间移动所有共享代码,即可避免代码重复。

libosmcore.git存储库构建了多个库:

  • libosmocore包含一些通用功能,例如选择循环抽象,消息缓冲区,计时器,链接列表
  • libosmovty包含与名为VTY的交互式命令行界面相关的例程
  • libosmogsm包含与GSM协议有关的定义和帮助程序代码
  • libosmoctrl包含Osmocom控制界面的共享实现
  • libosmogb包含带有其NS / BSSGP协议的Gb接口的实现
  • libosmocodec包含GSM语音编解码器的实现
  • libosmocoding包含GSM 05.03突发转码功能的实现
  • libosmosim包含用于连接SIM / UICC / USIM卡的基础架构

要编译libosmocore,将需要以下工具:

sudo apt-get install build-essential libtool libtalloc-dev libsctp-dev shtool autoconf automake git-core pkg-config make gcc gnutls-dev python-minimal

和以下(可选)库:

sudo apt-get install libpcsclite-dev

获取源码和安装

git clone git://git.osmocom.org/libosmocore.git
cd libosmocore/
autoreconf -i
./configure
make
sudo make install
sudo ldconfig -i
cd ..

osmocom-bb

OsmocomBB是一个免费软件/开源GSM基带软件实施。它打算完全取代对专有GSM基带软件的需求,例如:

  • GSM 模拟和数字基带驱动程序
  • (集成和外部)外围设备的驱动程序
  • 从第1层到第3层的GSM电话端协议栈

简而言之:通过在兼容电话上使用OsmocomBB,您将只能基于自由软件来拨打和接听电话,发送和接收SMS等。

安装

git clone git://git.osmocom.org/osmocom-bb.git
cd osmocom-bb
cd src
make -e CROSS_TOOL_PREFIX=arm-none-eabi-

烧录和环境

主机软件使用

主机软件是在主机PC上运行的软件,而不是在手机内部运行的软件。
位置(源和二进制):sr /host/layer23/*
第3层应用程序基于GSM第3层结合第2层(LAPDm)来实现各种功能。

mobile

mobile是迄今为止最复杂的OsmocomBB应用程序。
它实现了常规GSM电话的大多数行为,但是以许多方式扩展了研究人员感兴趣的功能。

  • 根据TS 03.22执行小区(重新)选择
  • MM过程,例如位置更新,身份验证,加密
  • 建立MT和MO语音通话
  • 发送和接收短信
  • 执行USSD或呼叫转移之类的补充服务
  • 将其挂接到PBX

前提条件
假定已经获得OsmocomBB源代码并已编译主机程序和固件
(使用交叉编译器)。
将调试消息打印到stdout
使用GSMTAP发送调试消息

cd ./src/host/layer23/src/mobile/mobile -i 127.0.0.1

内存映射

The memory is mapped as follows:

0x000000-0x00ffff: Flash page 0
0x010000-0x01ffff: Flash page 1
... more Flash pages ...
0x800000-0x83ffff: Ram
Our flash layout is:

0x000000-0x001fff: Compal loader
0x002000-0x00ffff: OSMOCOM menu
0x010000-........: OSMOCOM application and storage
Note: The Compal loader and the OSMOCOM menu will be located in the same flash page!

注意:应该启动L1上传命令后,按手机上的开始按钮:

sudo ./src/host/osmocon/osmocon -p /dev/ttyUSB0 -m c123xor -c ./src/target/firmware/board/compal_e88/layer1.highram.bin ./src/target/firmware/board/compal_e88/layer1.compalram.bin

在这里插入图片描述

要捕获发送和接收的数据包:
启动wireshark:

$ sudo wireshark -k -i lo -f'port 4729'
telnet localhost 4247
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Welcome to the OsmocomBB Control interface
OsmocomBB>

cell_log

cell_log应用程序扫描有效的可用载波频率,尝试与之同步并转储从BCCH收集的信息。它通常用于创建已使用的ARFCN和信息的列表,例如它们的接收级别,MNC,MCC和系统信息。

$ sudo ./src/host/layer23/src/misc/cell_log -O

执行结果如下所示:
在这里插入图片描述

ccch_scan

ccch_scan应用程序可以同步到运营商ARFCN,并记录功率测量和CCCH信息(寻呼请求和立即分配)。
该ccch_scan程序)是我们用于显示GSM协议层2和3(GSM TS 04.05,04.06,04.08)的工具

使用ccch_scan程序,可以:

  • 连接到/ tmp / osmocom_l2插座通过创建osmocon从交换数据L1A_L23_Interface。
  • 接收GSM Layer1帧。
    • 转储收到的GSM Layer1帧并打印一些分析。
    • 将Layer1帧作为GSMTAP数据包发送到Wireshark
    • 将Layer1帧转发到ccch_scan内部的Layer2 / LAPDm实现
    • 将它们从Layer2转发到ccch_scan中的Layer3代码中。
  • 接收来自Layer3的传出帧
    • 通过layer2处理它们
    • 将它们作为上行链路帧发送到GSMTAP
    • 将它们发送到电话上的Layer1
    • 该ccch_scan方案是与组合使用layer1bin固件。

用法

$ sudo ./ccch_scan -i 127.0.0.1 -a ARFCN

打印结果如下所示:
在这里插入图片描述
在另外一个终端打开wireshark

$ sudo apt-get install wireshark
$ sudo wireshark -k -i lo -f 'port 4729'

在这里插入图片描述

bcch_scan

bcch_scan基本上是cell_log的前身,并且记录在BCCH(系统信息)上观察到的信息。

cbch_sniff

cbch_sniff转储小区广播信道信息,例如小区的GPS位置。
在这里插入图片描述

virtphy

virtphy是基于UDP组播的GSMTAP的虚拟L1实现。您可以使用它来运行第2/3层程序,例如移动程序,而无需任何实际硬件或真实的PHY / L1。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sundaygeek

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值