Introducción

Ampliando el anterior artículo, con la creación de una estación base virtual GSM, es posible desarrollar otra prueba de concepto utilizando el software OsmocomBB. Con un teléfono con procesador Calypso, tal como el Motorola C115, C123, C140, C155 o V171, es posible crear una estación base de GSM física, con una funcionalidad limitada, únicamente operaciones basadas en circuito como envío y recepción de mensajes de texto. A esta red podrán conectarse otros dispositivos físicos configurando la correspondiente tarjeta SIM.

En la rama steve-m/trx_rebased de OsmocomBB se desarrolla un firmware especial desarrollado para teléfonos móviles con procesador Calypso que permite hacer un uso de este como transceptor, junto a una aplicación llamada transceiver que controlará este firmware haciendo de puente entre el transceptor y OsmoBTS.

Advertencia️

El espectro radioeléctrico se encuentra regulado en España mediante la Ley 11/2022, de 28 de junio, General de Telecomunicaciones. En su artículo 85 se menciona que el espectro radioeléctrico es un bien de dominio público, cuya titularidad y administración corresponden al Estado. La organización del espectro radioeléctrico se regula mediante el CNAF (Cuadro Nacional de Atribución de Frecuencias), Orden ETD/1449/2021, de 16 de diciembre, por la que se aprueba el Cuadro Nacional de Atribución de Frecuencias.

En este CNAF, en su nota UN-41 se indica que las bandas de frecuencias 880-915 MHz y 925-960 MHz se reservan para sistemas terrenales capaces de prestar servicios de comunicaciones electrónicas. En el Real Decreto 123/2017, de 24 de febrero, por el que se aprueba el Reglamento sobre el uso del dominio público radioeléctrico en su disposición adicional primera del título IX capítulo II se indican las bandas de frecuencias con limitación de número de títulos habilitantes para el uso del dominio público radioeléctrico a otorgar, entre las que se encuentra la banda 880 a 915 y 925 a 960 MHz en su apartado c).

Esto indica la prohibición de emitir en esa banda sin disponer de la correspondiente concesión por parte del Ministerio para la Transformación Digital y de la Función Pública, que en la actualidad está atribuida a las principales compañías de telecomunicaciones. Por lo que este artículo se mantendrá en un marco teórico, sin desarrollar las modificaciones necesarias en el código ni el procedimiento de conexión del teléfono al ordenador para que se pueda realizar la emisión de una estación base GSM.

Instalación del software

OsmoMSC, OsmoBSC, OsmoSTP, OsmoHLR, OsmoMGW y OsmoBTS se pueden instalar directamente desde el repositorio de Debian o compilar e instalar desde el código fuente como se observó en el anterior artículo. En cambio OsmocomBB, al ser un software experimental, necesita ser compilado desde el código fuente. Las carpetas de los proyectos a compilar se ubicarán en el directorio ~/osmocom.

En este caso utilizaremos la rama principal de OsmocomBB por lo que compilaremos el proyecto siguiendo las instrucciones del artículo anterior. Para la compilación del firmware TRX para móviles Calypso y del transceptor tendremos que compilar la rama steve-m/trx_rebased del proyecto en la carpeta osmocom-bb-trx. Habilitaremos la opción --enable-transceiver para permitir la compilación de la aplicación transceiver.

mkdir ~/osmocom
cd ~/osmocom

Instalación de los componentes desde el repositorio

sudo apt install osmo-msc osmo-bsc osmo-stp osmo-hlr osmo-mgw osmo-bts

Instalación de OsmocomBB desde el código fuente

Dependencias para la compilación de

libosmocore (dependencia de osmocom-bb)

sudo apt install build-essential libtool libtalloc-dev libsctp-dev shtool autoconf automake git-core pkg-config make gcc gnutls-dev python3-minimal libusb-1.0-0-dev libmnl-dev liburing-dev libpcsclite-dev

libosmo-dsp (dependencia de osmocom-bb rama trx_rebased)

sudo apt install libfftw3-dev

osmocom-bb

sudo apt install libtool shtool automake autoconf git-core pkg-config make gcc gcc-arm-none-eabi

Compilación e instalación

osmocom-bb

libosmocore (dependencia)
git clone https://gitea.osmocom.org/osmocom/libosmocore.git
cd libosmocore/
autoreconf -i
./configure
make -j16
sudo make install
sudo ldconfig -i
cd ..
libosmo-gprs (dependencia)
git clone https://gitea.osmocom.org/osmocom/libosmo-gprs.git
cd libosmo-gprs/
autoreconf -i
./configure
make -j16
sudo make install
sudo ldconfig -i
cd ..
libosmo-dsp (dependencia rama trx_rebased)
git clone https://gitea.osmocom.org/sdr/libosmo-dsp.git
cd libosmo-dsp/
autoreconf -i
./configure
make -j16
sudo make install
sudo ldconfig -i
cd ..
osmocom-bb (rama trx_rebased)
git clone https://gitea.osmocom.org/phone-side/osmocom-bb.git -b steve-m/trx_rebased osmocom-bb-trx
cd osmocom-bb-trx
cd src
make HOST_CONFARGS=--enable-transceiver CROSS_TOOL_PREFIX=arm-none-eabi-
cd ../..

Archivos de configuración

Los archivos de configuración de las aplicaciones serán guardados en el directorio ~/osmocom/config. Los archivos de los programas OsmoMSC, OsmoBSC, OsmoSTP, OsmoHLR, OsmoMGW se mantendrán con el mismo contenido que el artículo anterior.

mkdir ~/osmocom/config

osmo-bts.cfg

Tomamos el archivo de configuración de ejemplo. Modificamos el valor band con el valor 900. Añadimos las líneas gsmtap-remote-host 127.0.0.1 y gsmtap-sapi enable-all debajo de la de band en el apartado de bts para poder monitorizar el tráfico de la red a través del puerto UDP 4729.

!
! OsmoBTS configuration example for CalypsoBTS
! https://osmocom.org/projects/baseband/wiki/CalypsoBTS
!!
!
log stderr
 logging color 1
 logging print category-hex 0
 logging print category 1
 logging timestamp 0
 logging print file basename last
 logging print level 1
 logging level rsl notice
 logging level oml notice
 logging level rll notice
 logging level rr notice
 logging level meas error
 logging level pag error
 logging level l1c error
 logging level l1p error
 logging level dsp error
 logging level abis error
!
line vty
 no login
!
phy 0
 instance 0
 osmotrx ip local 127.0.0.1
 osmotrx ip remote 127.0.0.1
 osmotrx legacy-setbsic
 osmotrx fn-advance 20
 osmotrx rts-advance 5
bts 0
 oml remote-ip 127.0.0.1
 ipa unit-id 6969 0
 band 900
 gsmtap-remote-host 127.0.0.1
 gsmtap-sapi enable-all
 trx 0
  phy 0 instance 0
  nominal-tx-power 23

Inicio de la estación base con tmux

El despliegue de las aplicaciones se va a realizar utilizando el multiplexador de terminales tmux, que creará una ventana llamada Osmocom con las aplicaciones y sus registros. También creará otra ventana llamada OsmoCTL con las interfaces vty para poder interactuar mediante consola con las aplicaciones. Para todas las aplicaciones especificamos el archivo de configuración con el argumento -c.

El programa osmocon ubicado en el directorio ~/osmocom/osmocom-bb/src/host/osmocon carga en en móvil Motorola C140 -c c140xor conectado por el puerto serial -p /dev/ttyUSB0 el firmware trx.highram.bin localizado en el directorio ~/osmocom/osmocom-bb-trx/src/target/firmware/board/compal_e86.

Luego es necesario que el móvil sincronice el reloj con una estación base existente con el programa transceiver localizado en el directorio osmocom-bb-trx/src/host/layer23/src/transceiver con ARFCN -a 1 antes de iniciar la estación base.

tmux new-session -d -s Osmocom

tmux new-window -a -t Osmocom -n HLR 'osmo-hlr -c ~/osmocom/config/osmo-hlr.cfg'
tmux new-window -a -t Osmocom -n STP 'osmo-stp -c ~/osmocom/config/osmo-stp.cfg'
tmux new-window -a -t Osmocom -n MGW 'osmo-mgw -c ~/osmocom/config/osmo-mgw.cfg'
tmux new-window -a -t Osmocom -n MSC 'osmo-msc -c ~/osmocom/config/osmo-msc.cfg'
tmux new-window -a -t Osmocom -n BSC 'osmo-bsc -c ~/osmocom/config/osmo-bsc.cfg'
tmux new-window -a -t Osmocom -n APP 'sudo ~/osmocom/osmocom-bb/src/host/osmocon/osmocon -p /dev/ttyUSB0 -m c140xor -c ~/osmocom/osmocom-bb-trx/src/target/firmware/board/compal_e86/trx.highram.bin'
tmux new-window -a -t Osmocom -n TRX 'sudo osmocom-bb-trx/src/host/layer23/src/transceiver/transceiver -a 1'
tmux new-window -a -t Osmocom -n BTS 'osmo-bts-trx -c ~/osmocom/config/osmo-bts-trx-calypso.cfg'

tmux new-session -d -s OsmoCTL

tmux new-window -a -t OsmoCTL -n HLR 'telnet 127.0.0.1 4258'
tmux new-window -a -t OsmoCTL -n STP 'telnet 127.0.0.1 4239'
tmux new-window -a -t OsmoCTL -n MGW 'telnet 127.0.0.1 4243'
tmux new-window -a -t OsmoCTL -n MSC 'telnet 127.0.0.1 4254'
tmux new-window -a -t OsmoCTL -n BSC 'telnet 127.0.0.1 4242'
tmux new-window -a -t OsmoCTL -n BTS 'telnet 127.0.0.1 4241'

tmux attach-session -t Osmocom
tmux attach-session -t OsmoCTL

Conclusión

En este artículo se ha observado el despliegue teórico de la estación base CalypsoBTS utilizando el software OsmocomBB y un teléfono móvil basado en el procesador Calypso.