Administração de Sistemas Linux
Por: carlo5henrique • 15/5/2016 • Artigo • 3.242 Palavras (13 Páginas) • 328 Visualizações
A rede GSM e o projeto OpenBTS
Obs.: Esse artigo tem fins educacionais. O uso do mesmo para outras atividades é de inteira responsabilidade de quem o fizer.
A rede GSM é um sistema complexo composto por vários componentes. A última milha desse sistema é chamada de BTS (Base Transceiver Station). A BTS é responsável por transmitir e receber sinais de RF (Rádio Frequência) para o usuário de terminais GSM (telefone celular, PDA, modem etc). As BTSs são controladas por uma BSC (Base Station Controller), que é conectada ao MSC/VLR (Mobile Switching Center/Visitor Location Register). Basicamente, o MSC/VLR é responsável pela autenticação do usuário no banco de dados (HLR - Home Location Register, AuC - Authentication Center).
[pic 1]
O projeto OpenBTS é um esforço para construir uma aplicação de código aberto usando um hardware de baixo custo, chamado USRP (Universal Software Radio Peripheral), para apresentar uma interface aérea GSM ("Um") para equipamentos compatíveis, usando o PBX Asterisk para conectar as chamadas.
O OpenBTS usa o hardware USRP para receber e transmitir a sinalização GSM. Isso é feito usando o framework GNU Radio. O Asterisk é usado para fazer a interface entre as chamadas dos terminais GSM sobre a rede do OpenBTS. Qualquer outro dispositivo que possa ser conectado ao Asterisk também pode ser utilizado para fazer e receber chamadas.
[pic 2]
O GNU Radio é uma ferramenta livre para desenvolvimento que fornece um "runtime" de processamento de sinais para implementação de sistemas de rádio baseados em software usando hardware de RF de baixo custo (nesse caso o USRP).
O USRP (Universal Software Radio Peripheral) é um hardware desenvolvido pela Ettus Research que permite a computadores funcionarem com rádios de alta largura de banda. Na essência, ele funciona com um circuito de banda básica e FI (Frequência Intermediária) de um sistema de radiocomunicação. Existem modelos de placas de RF que podem ser usadas com o USRP. No nosso caso, podemos usar a RFX900 para cobertura das bandas de 850 e 900 MHz ou a RFX1800 para cobertura das bandas de 1800 e 1900 MHz.
Requisitos e instalação
Esse guia vai cobrir a instalação em uma máquina com GNU/Linux. É altamente recomendável seguir todos os requisitos de hardware e software cobertos nesse guia.
Hardware:
- 01 - Computador (Core 2 Duo 2.0 GHz, 2GB RAM, porta USB);
- 01 - USRP-PKG (Kit USRP, que contêm a placa-mãe, 2 cabos de RF, 1 cabo USB, Fonte de Alimentação e Caixa - custo USD 700);
- 02 - RFX900 para GSM 850/900 (Transceptor de 800 - 1000 MHz, saída de 200 mW - USD 275 cada);
- 02 - RFX1800 para GSM 1800/1900 (Transceptor de 1.5 - 2.1 GHz, saída de 100 mW - USD 275 cada);
- 02 - VERT900 (Antena para a RFX900 / RFX1800);
- 01 - Telefone celular destravado;
- 01 - SIM Card (de preferência que possa ter a lista de rede editada).
O hardware USRP e os componentes de RF podem ser encontrados diretamente na Ettus Research.
Software:
- GNU/Linux - Ubuntu 8.04 - 32 bits;
- OpenBTS 2.3;
- GNURadio 3.1.3;
- C++ Boost 1.37.
Instalação do GNU Radio
a. Instalar as dependências:
$ sudo apt-get update
$ sudo apt-get -y install swig g++ automake1.9 libtool python-dev libcppunit-dev sdcc libusb-dev libasound2-dev libsdl1.2-dev python-wxgtk2.8 subversion guile-1.8-dev libqt4-dev ccache python-opengl libgsl0-dev python-cheetah python-lxml libqwt5-qt4-dev libqwtplot3d-qt4-dev qt4-dev-tools fftw3-dev doxygen python-numpy-ext
b. Baixar e instalar a biblioteca do C++ boost:
$ wget http://kent.dl.sourceforge.net/sourceforge/boost/boost_1_37_0.tar.gz
$ tar xvzf boost_1_37_0.tar.gz
$ cd boost_1_37_0
$ BOOST_PREFIX=/opt/boost_1_37_0
$ ./configure --prefix=$BOOST_PREFIX --with-libraries=thread,date_time,program_options
$ make
$ sudo make install
c. Baixar e instalar o GNU Radio:
$ cd
$ wget ftp://ftp.gnu.org/gnu/gnuradio/gnuradio-3.1.3.tar.gz
$ tar xvzf gnuradio-3.1.3.tar.gz
$ cd gnuradio-3.1.3
$ ./configure --with-boost-include-dir=$BOOST_PREFIX/include/boost-1_37/
$ make
$ sudo make install
$ sudo ldconfig
d. Adicionar permissões para o usuário trabalhar com o USRP:
$ sudo addgroup usrp
$ sudo addgroup SEU_USUÁRIO usrp
$ echo 'ACTION=="add", BUS=="usb", SYSFS{idVendor}=="fffe", SYSFS{idProduct}=="0002", GROUP:="usrp", MODE:="0660"' > tmpfile
$ sudo chown root.root tmpfile
$ sudo mv tmpfile /etc/udev/rules.d/10-usrp.rules
e. Testando o USRP:
Reinicie o computador (deveria funcionar sem esse passo, mas mesmo depois de reinicializar o serviço udev, o USRP só funcionava como root):
$ sudo reboot
Conectar o USRP na porta USB e testar a velocidade máxima da conexão:
$ cd /usr/local/share/gnuradio/examples/usrp/
$ ./usrp_benchmark_usb.py
Testing 2MB/sec... usb_throughput = 2M
ntotal = 1000000
nright = 998435
runlength = 998435
delta = 1565
OK
Testing 4MB/sec... usb_throughput = 4M
ntotal = 2000000
nright = 1998041
runlength = 1998041
delta = 1959
OK
Testing 8MB/sec... usb_throughput = 8M
ntotal = 4000000
nright = 3999272
runlength = 3999272
delta = 728
OK
Testing 16MB/sec... usb_throughput = 16M
...