OsmocomBB项目简介和实操

简介

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)。
OsmocomBB项目简介和实操_第1张图片

安装

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

mobile

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

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

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

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

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

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

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

$ nc -u -l -p 4729> / dev / null&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和系统信息。

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固件。

用法

./ccch_scan -a 871 -i 127.0.0.1

to which the [[GSMTAP]] messages are to be sent.

This will connect to the [[osmocon]] application and will receive GSM Layer1 frames. 
The receiving is done in the src/main.c and the frames will be passed to src/l1ctl.c,
from there into src/lapdm.c and finally into src/layer3.c

The output of the ccch_scan application is currently looking like this:
<pre>
Found CCCH burst(s): TDMA: (0003/08/39) tc:3 49 06 1b 3b 80 62 f2 20 01 3a c8 07 0a 15 65 04 b9 00 00 80 00 02 1b  si: 0x1b
        SI3 on wrong TC
Found sync burst: SNR: 16384 TDMA: (0003/15/46) bsic: 49
Found sync burst: SNR: 16384 TDMA: (0003/25/05) bsic: 49
Found sync burst: SNR: 16384 TDMA: (0003/09/15) bsic: 49
Found sync burst: SNR: 16384 TDMA: (0003/19/25) bsic: 49
Found CCCH burst(s): TDMA: (0003/07/39) tc:4 31 06 1c 62 f2 20 01 3a 65 04 b9 00 00 80 00 53 2b 2b 2b 2b 2b 2b 2b  si: 0x1c
        SI4 on wrong TC
Found sync burst: SNR: 16384 TDMA: (0003/14/46) bsic: 49
Found sync burst: SNR: 16384 TDMA: (0003/24/05) bsic: 49
Found sync burst: SNR: 16384 TDMA: (0003/08/15) bsic: 49
Found sync burst: SNR: 16384 TDMA: (0003/18/25) bsic: 49
Found CCCH burst(s): TDMA: (0003/06/39) tc:5 01 06 00 b0 00 58 47 eb 4a 92 53 40 62 84 eb 2b 2b 2b 2b 2b 2b 2b 2b  si: 0x0
        SI13 on wrong TC

bcch_scan

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

cbch_sniff

cbch_sniff转储小区广播信道信息,例如小区的GPS位置。

virtphy

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

你可能感兴趣的:(2G移动网络专题,蜂窝/移动通信)