Implementación de una red celular GSM-
GPRS basado en OpenBTS con Ubuntu 14.04
1 1 1 1 1
Andrés Sánchez , Monserrath Velasco , Karen Yaruquí , Dayanna León , Manuel Quiñones
1
Departamento de Ciencias de la Computación y Electrónica, Universidad Técnica Particular de Loja, San
Cayetano Alto, Loja, Ecuador, 1101608.
Autores para correspondencia: adsanchez2@[Link], mevelasco2@[Link], klyaruqui@[Link],
dmleon5@[Link], mfquinonez@[Link]
Palabras clave: OpenBTS, USRP, GSM, GPRS. Keywords: OpenBTS, USRP, GSM, GPRS.
1. OBJETIVO PRINCIPAL
Analizar e implementar una red celular GSM usando OpenBTS y SDRs.
2. OBJETIVOS ESPECÍFICOS
Implementar una red celular GSM (Global System for Mobile Communications) de acceso libre
basado en OpenBTS utilizando hardware y software de libre distribución.
Analizar y configurar los canales disponibles en GSM mediante la utilización de la Kalibrator.
Configurar y establecer parámetros, mediante la interface de línea de comandos (CLI) la red de
telefonía móvil, brindando los servicios de llamadas telefónicas, mensajería y datos móviles.
Analizar los servicios brindados por la red de telefonía móvil usando OpenBTS.
Medir la anchura de canal de uplink y downlink, mediante la utilización de un analizador de espectros
a partir del ARFCN empleado en la implementación de OpenBTS.
3. HARDWARE Y SOFTWARE
Sistema Operativo (OS) Ubuntu 14.04.
USRP N210.
OpenBTS.
Asterisk.
Smqueue.
Sipauthserve.
Analizador de espectros.
4. RECOMENDACIONES
Crear el OS live con la imagen: OpenBTS_2.5G_LAB_UTPL.iso en la memoria USB o su vez en
Ubuntu 14.04. Arrancar el ordenador mediante USB, conectar el USRP y verificar su correcta
conexión, comandos uhd_find_devices o uhd_usrp_probe.
No se deberá actualizar el OS, comando: sudo apt-get upgrade. Se perderá la configuración de la red
GSM.
Verificar los directorios de los programas de conmutación y servidores antes de ejecutar las líneas de
comando adjuntas en el desarrollo de la práctica, dichos directorios se encuentran descritos en el
archivo Directorios de Ejecución en el Desktop de Ubuntu.
5. INTRODUCCIÓN
El proyecto OpenBTS es un esfuerzo para construir una aplicación de código abierto y comercial licenciada
de Unix que utiliza el hardware Universal Software Radio Peripheral (USRP) para presentar una interfaz
GSM de aire a la norma de teléfonos GSM utilizando el software de central telefónica Asterisk PBX para
conectar las llamadas. OpenBTS utiliza el hardware llamado USRP para recibir y transmitir la señal GSM,
esto se hace utilizando el framework de GNU Radio. Asterisk se utiliza para conectar las llamadas entre los
teléfonos GSM celulares en la red OpenBTS. Cualquier otro dispositivo que pueda conectarse a Asterisk
puede ser también utilizado [1].
Figure 1. Diagrama de componentes de OpenBTS [1].
6. PROCESO DE INSTALACIÓN
Se recomienda tener experiencia avanzada en el uso de Linux 14.04 y Asterisk a nivel de consola junto con
la capacidad de entender y resolver cualquier tipo de error de dependencia que pudiese aparecer durante el
proceso de instalación. Se sugiere tener un PC, o laptop basado en Intel Celeron o superiores, así como
AMD Sempron o superiores con 8 GB de RAM, disco duro con un mínimo de 200 GB y una conexión a
internet permanente.
6.1. Instalación de kalibrate
Primero se instalan las siguientes librerías:
$ sudo apt-get install libfftw3-dev libfftw3-doc
Es necesario obtener el archivo mediante:
$ git clone [Link]
También se requiere descargar el archivo bootstrap y ubicarlo en la carpeta kalibrate, para este fin
debemos repetir el proceso con otro fichero que contiene el archivo:
$ git clone [Link]
Luego nos dirigimos a la ubicación del archivo (kalibrate-rtl) y se busca el fichero 'boostrap', se lo
copia y se pega en la carpeta (kalibrate). Para continuar con la instalación se retorna a la terminal y
se digita:
$ cd kalibrate
$ ./bootstrap
$ ./configure
$ make
$ sudo make install
Con los siguientes comandos se visualizan las funciones del software Kalibrate:
$ kal –h
Figure 2. Visualización de las funciones de Kalibrate.
$ kal –s GSM850
Figure 3. Canal GSM850 mostrado en Kalibrate.
$ kal –s GSM900
Figure 4. Canal GSM900 mostrado en Kalibrate.
Actividad 1
Analizar el estado de todas las bandas GSM y los canales disponibles del servicio Móvil Avanzado con la
herramienta Kalibrate. Muestre capturas e ilustraciones.
6.2. Instalación de OpenBTS en Ubuntu
De preferencia instalar en una versión de Ubuntu 14.04 pura, o en el caso de realizarse en memoria
extraíble USB verificar que la guarde los cambios realizados.
Esperar que termine el procedimiento, si se presenta algún error verificar la conexión a internet y
ejecutar nuevamente.
Instalar paquetes necesarios, este procedimiento se demora mientras descarga e instala cada
paquete.
$ sudo apt-get install g++ erlang libreadline6-dev bind9 ntp autoconf libboost-
all-dev
Luego es necesario descargar una versión de UHD que funcione con la tarjeta N210, se recomienda
la versión 003.007.003.
$ wget [Link]
release/uhd_003.007.003-release_Ubuntu-14.04-x86_64.deb
$ sudo dpkg -i uhd_003.007.003-release_Ubuntu-14.04-x86_64.deb
Seguidamente ejecutar los siguientes comandos para verificar la tarjeta instalada con la versión UHD
correcta para lo cual es necesario el uso del USRP N210:
$ uhd_find_devices
$ uhd_usrp_probe
6.3. Obtención del código fuente
El sistema operativo listo para instalar, crear una carpeta en un lugar de fácil acceso llamada
OpenBTS, ya que allí se va a guardar todos los archivos requeridos para la compilación de los
paquetes de OpenBTS. Se recomienda crear la carpeta en /Documents. Abrir una terminal o seguir
usando la terminal ya abierta y crear la carpeta nueva
cd /home/ubuntu/Documents
mkdir OpenBTS
cd OpenBTS
Ya dentro de la carpeta, se va a obtener el código fuente de OpenBTS, ejecutar en la misma terminal:
git clone [Link]
cd dev
./[Link]
./[Link] master
Importante, hasta aquí se ha descargado todos los elementos necesarios para compilar, se debe
verificar que no haya ocurrido ningún error, si algo ocurrió favor identificar y buscar en el mailing
list la causa y solución.
En la misma terminal, y con la finalidad de garantizar funcionalidad entre todos los elementos,
ejecutar:
cd liba53
sudo make install
sudo ldconfig
cd ..
y proceder a compilar todo el proyecto, este procedimiento se tarda en base a las características
técnicas del equipo usado (hardware) y de la conexión a internet.
Se modifica con un editor de texto el archivo [Link] ya que hay una dependencia que no se cumple,
por ende, se debe reemplazar la línea 133 por la siguiente línea:
installIfMissing libzmq5 // original, se borra
installIfMissing libzmq3 // esta se incluye
Se dejan como comentario o se eliminan las siguientes líneas (135 a 139):
$ if [ "$MANUFACTURER" == "Ettus" ]; then
$ installIfMissing libuhd-dev
$ installIfMissing libuhd003
$ installIfMissing uhd-host
$ fi
Se guarda el archivo sin cambiar el nombre. En seguida se ejecuta la instrucción ./[Link] N210, la
cual genera todos los paquetes necesarios. N210 es la tarjeta que se está configurando, esta referencia
se cambia si es otro el modelo de tarjeta USRP que se requiere configurar.
A continuación, se instalan los paquetes *.deb generados en el paso anterior y que se encuentran
almacenados en la carpeta:
$ cd dev
$ ./[Link] N210
$ cd
De presentarse algún problema de dependencias entre paquetes, o error donde se aborte
inesperadamente el procedimiento, ejecutar la siguiente línea de comando:
sudo apt-get -f install
Incluir el repositorio que se menciona a continuación, debido a que algunas dependencias de este
repositorio son necesarias para la correcta configuración de SMQueue.
$ sudo apt-get install software-properties-common python-software-properties
$ sudo add-apt-repository ppa:chris-lea/zeromq
$ sudo apt-get update
6.4. Instalación de OpenBTS y servicios adicionales
Hasta este momento, ya se tienen todos los elementos necesarios para instalar OpenBTS en el
equipo. Ahora, se deben instalar los paquetes compilados en el numeral anterior, de la siguiente
manera:
En la misma terminal, buscar la carpeta BUILDS y dentro de ella ubicar la carpeta generada con
todos los paquetes a instalar, el nombre de la carpeta es la fecha y hora de compilación.
$ cd BUILDS
$ ls
y se ingresa a dicha carpeta indicando el nombre desde la terminal.
$ cd "nombre de carpeta"
En esta ubicación se encuentran los archivos .deb a instalar, se debe ejecutar desde la terminal:
$ sudo dpkg -i *.deb
Esperar y luego, si no aparecen errores, estará OpenBTS correctamente instalado.
6.5. Inicialización de los servicios
Recuerde reiniciar el sistema en este punto para que todas las configuraciones queden
correctamente agregadas. A continuación, ingresar nuevamente a la carpeta OpenBTS, entrar a la
carpeta openbts_systemd_scripts ejecutar el siguiente script:
$ cd /home/ubuntu/Documents/OpenBTS/openbts_systemd_scripts/
$ ./[Link]
Si algo no se ejecuta, desde la terminal ejecute las siguientes instrucciones.
$ sudo start openbts
$ sudo start smqueue
$ sudo start sipauthserve
$ sudo start asterisk
Para detener los servicios ya instalados (al usar kalibrate):
$ sudo stop openbts
$ sudo stop smqueue
$ sudo stop sipauthserve
$ sudo stop asterisk
6.6. Ejecutar OpenBTS
Ubicarse en la ruta:
cd /home/ubuntu/Documents/OpenBTS/dev/openbts/apps/
y ejecutar:
./OpenBTSCLI
6.7. Configuración básica OpenBTS
Para modificar la banda en la que trabaja GSM es necesario ejecutar la siguiente línea y seleccionar
la banda deseada.
config [Link] 850
Para modificar los valores de la ganancia asociados al equipo se digita el siguiente comando:
devconfig [Link] 10
Para visualizar el ruido debido a interferencias y verificar el nivel de potencia actual se digitan los
siguientes comandos respectivamente
noise
power
Dentro de la consola es necesario ejecutar el siguiente comando para permitir que todos los
teléfonos móviles se conecten con OpenBTS.
config [Link] .*
Se modifica el nombre actual de la red celular al ejecutar el siguiente comando:
config [Link] PRÁCTICA_OPENBTS
[Link] changed from "BTS" to "PRÁCTICA_OPENBTS"
Luego de verificar la lista de canales disponibles mediante la herramienta Kalibrate se procede a
configurar los canales mediante la asignación del ARFCN disponible. A continuación, un ejemplo:
$ [Link] 1
6.7.1. Registro de suscriptores a OpenBTS
Desde el dispositivo móvil buscar la red a la que se desea registrar, luego en OpenBTS digitar la
siguiente instrucción para conocer el número IMSI de la SIM card a registrar:
tmsis
Con este dato se procede a registrar el número de abonado deseado:
$ cd ~/dev/Nodemanager
$ ./[Link] sipauthserve subscribers create "nombre" IMSI”imsi” “número
celular”
Para revisar los números de abonado agregados a la base de datos se usa
$ ./[Link] sipauthserve subscribers read
6.7.2. Acceso a servicio de datos móviles
Para brindar acceso al servicio de datos en teléfonos móviles es necesario realizar la siguiente
configuración:
config GPRS
config [Link] 1
devconfig [Link] GPRS
rawconfig [Link] GPRS
Reiniciar el OpenBTS:
$ sudo stop openbts
$ sudo start openbts
Una vez que OpenBTS se haya reiniciado entrar a la consola y verificar que OpenBTS ha
configurado algunos canales para GPRS:
gprs list
El tráfico IP de los teléfonos se canaliza a través de OpenBTS y a una interfaz de red virtual llamada
sgsntun. Puede confirmar ahora que OpenBTS lo ha creado al usar el siguiente comando debido a
que en el primer paso se modificó el nombre de la interfaz con el comando rawconfig
[Link] GPRS.
$ ifconfig GPRS
La interfaz de red virtual también necesita rutas y reglas aplicadas para el firewall de iptables Linux.
Las reglas se encuentran en /etc/OpenBTS/[Link] y se pueden modificar si es necesario
para cambiar el nombre de la interfaz de la puerta de enlace. Por defecto, están escritos para eth0.
Aplica las reglas ahora de forma manual.
$ sudo iptables-restore < /etc/OpenBTS/[Link]
Si se desea que el sistema aplique estas reglas cada vez que la interfaz eth0 aparezca modifique
/etc/network/interfaces y agregue a continuación las líneas:
auto eth0
iface eth0 inet dhcp
pre-up iptables-restore < /etc/OpenBTS/[Link]
Una vez realizados estos pasos el teléfono móvil tendrá acceso al servicio de datos. Con el comando
gprs list en la línea de comandos de OpenBTS, se puede verificar los usuarios que tienen acceso
al servicio junto con un listado de parámetros como IMSI, dirección IP asignada, entre otros.
Actividad 2
En base al número establecido de ARFCN medir la anchura de banda de los canales de subida y bajada en
el analizador de espectros. Evidencie con capturas e ilustraciones de las mediciones.
Actividad 3
Muestre evidencia del servicio de mensajería, servicio de llamadas y de datos aplicando GPRS, usando
OpenBTS.
Actividad 4
¿Cuántas llamadas simultaneas permite el sistema OpenBTS? Argumente su respuesta y experimente.
7. BIBLIOGRAFÍA
[1] OpenBTS, (2014). Website. [Online]. Disponible en: [Link]
[2] Tene Castillo, Juan Pablo. (2013). Diseño e implementación de un Sistema de Conmutación de red
para un sistema GSM basado en OpenBTS y Asterisk. (Trabajo de Titulación de Ingeniero en
Electrónica y Telecomunicaciones). UTPL, Loja.
[3] Mendieta, G., Valarezo, D., (2017). Red de Telefonía Móvil 2.5G GSM-GPRS basado en OpenBTS.
(Guía de práctica de la Titulación de Ingeniero en Electrónica y Telecomunicaciones). UTPL, Loja.
[4] Elastixtech, (2018). Introduccion a Asterisk - Funcionamiento de Asterisk | ElastixTech - Aprende
Telefonia IP Asterisk - IssabelPBX-Elastix. Disponible en: [Link]
telefonia/introduccion-a-asterisk/
[5] Asterisk, (2016). Website. [Online]. Disponible en: [Link]
[6] Lackey, J., Tsou, T., (2016). Kalibrate - GSM frequency scanner and frequency offset calculator.
Website. [Online]. Disponible en: [Link]
[7] Luizener, (2017). Instalar OpenBTS en Ubuntu 16.04 GNURadio. Disponible en:
[Link]
GNURadio?fbclid=IwAR2cnAPVfOJuV1AzT64QrWKN_cpyVqZU5f6jo4rThmHMQoT90FYlN
R2PVao#6-inicializaci%C3%B3n-de-los-servicios