16
1/16 www.hospedar-se.com/dicas/?dica=3214 16 de Agosto de 2012 Programação WEB > HTML > Java Script > ASP / ASP.NET > CGI / PERL > PHP . Design / Editores . > Corel Draw > Fire Works > Photo Shop > Flash > Dreanweaver > Front Page . Programação Sistema > C / C++ / C# > Delphi / Pascal . Informática > Hardware > Rede e Internet > Sistemas Operacionais Estatísticas Usuários no site: 1 Total de artigos: 3853 Atendimento Estamos sempre prontos para lhe atender: Atendimento On-line Segunda à Sexta 09:00 às 18:00 . Sistemas Operacionais - Montando uma rede GSM COMO VOCÊ CLASSIFICA ESTA DICA? Boa . 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). 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. Linux: Montando uma rede GSM 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

Dicas Gnuradio e Openbts

Embed Size (px)

Citation preview

Page 1: Dicas Gnuradio e Openbts

1/16www.hospedar-se.com/dicas/?dica=3214

16 de Agosto de 2012

Programação WEB

> HTML

> Java Script

> ASP / ASP.NET

> CGI / PERL

> PHP.

Design / Editores.

> Corel Draw

> Fire Works

> Photo Shop

> Flash

> Dreanweaver

> Front Page.

Programação Sistema.

> C / C++ / C#

> Delphi / Pascal.

Informática > Hardware

> Rede e Internet

> Sistemas Operacionais

Estatísticas

Usuários no site: 1Total de artigos: 3853

Atendimento

Estamos sempre prontos paralhe atender:

Atendimento On-lineSegunda à Sexta 09:00 às 18:00

.

Sistemas Operacionais - Montando uma rede GSM

COMO VOCÊ CLASSIFICA ESTA DICA? Boa .

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). ABTS é 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 BTSssão controladas por uma BSC (Base Station Controller), que é conectada ao

MSC/VLR (Mobile Switching Center/Visitor Location Register). Basicamente, oMSC/VLR é responsável pela autenticação do usuário no banco de dados (HLR- Home Location Register, AuC - Authentication Center).

O projeto OpenBTS é um esforço para construir uma aplicação de código

aberto usando um hardware de baixo custo, chamado USRP (UniversalSoftware Radio Peripheral), para apresentar uma interface aérea GSM ("Um")para equipamentos compatíveis, usando o PBX Asterisk para conectar aschamadas.

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 ainterface entre as chamadas dos terminais GSM sobre a rede do OpenBTS.Qualquer outro dispositivo que possa ser conectado ao Asterisk também podeser utilizado para fazer e receber chamadas.Linux: Montando uma rede GSM

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 oUSRP).

O USRP (Universal Software Radio Peripheral) é um hardware desenvolvidopela Ettus Research que permite a computadores funcionarem com rádios de alta

Page 2: Dicas Gnuradio e Openbts

2/16www.hospedar-se.com/dicas/?dica=3214

pela Ettus Research que permite a computadores funcionarem com rádios de altalargura de banda. Na essência, ele funciona com um circuito de banda básica eFI (Frequência Intermediária) de um sistema de radiocomunicação. Existemmodelos 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 aRFX1800 para cobertura das bandas de 1800 e 1900 MHz.

Esse guia vai cobrir a instalação em uma máquina com GNU/Linux. É altamenterecomendável seguir todos os requisitos de hardware e software cobertos nesseguia.

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, 1cabo 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 encontradosdiretamente 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-devlibcppunit-dev sdcc libusb-dev libasound2-dev libsdl1.2-dev python-

wxgtk2.8 subversion guile-1.8-dev libqt4-dev ccache python-opengllibgsl0-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

Page 3: Dicas Gnuradio e Openbts

3/16www.hospedar-se.com/dicas/?dica=3214

$ 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 dereinicializar 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

Page 4: Dicas Gnuradio e Openbts

4/16www.hospedar-se.com/dicas/?dica=3214

OK Testing 16MB/sec... usb_throughput = 16M ntotal = 8000000 nright = 7992153 runlength = 7992153 delta = 7847 OK Testing 32MB/sec... usb_throughput = 32M ntotal = 16000000 nright = 15986239 runlength = 15986239 delta = 13761 OK Max USB/USRP throughput = 32MB/sec

Verifique se a velocidade de transferência máxima da conexão USB é 32MB/seg.

Instalação do OpenBTS

a. Instalar as dependências:

$ cd$ sudo apt-get install asterisk libosip2-dev libortp7-*

b. Baixar o código fonte:

O código fonte está disponível somente aos participantes da lista de discussão. Énecessário inscrever-se na lista para conseguir a senha de acesso:

http://openbts.sourceforge.net/

Depois de conseguir a senha baixe o código fonte conforme abaixo:

$ sftp [email protected]: "pegar_a_senha_na_lista"$ sftp> get openbts-2.3JeanLafitteOE.tar.gz$ Fetching /Users/openbts/openbts-2.3JeanLafitteOE.tar.gz to openbts-2.3JeanLafitteOE.tar.gz$ exit

c. Instalação:

$ tar xvzf openbts-2.3JeanLafitteOE.tar.gz$ mv openbts-2.3JeanLafitte openbts-2.3$ cd openbts-2.3$ export LIBS=-lpthread$ ./configure$ make$ sudo make install

Esse é um passo muito importante. Depois de instalar todos os pacotes, é horade configurar o OpenBTS. Abra o arquivo apps/OpenBTS.config com um editor

Page 5: Dicas Gnuradio e Openbts

5/16www.hospedar-se.com/dicas/?dica=3214

de configurar o OpenBTS. Abra o arquivo apps/OpenBTS.config com um editorde sua preferência.

O GSM.MCC (Mobile Country Code) pode ser configurado de acordo com oseu país. Uma tabela completa com os códigos pode ser encontrada aqui.

O GSM.MNC (Mobile Network Code) deve ser qualquer número entre 0 e 99,desde que ele não seja usado por uma operadora local. Uma maneira de verificarquais códigos estão sendo usados pelas operadoras na sua região é procurar asredes disponíveis usando o próprio telefone. Normalmente o código é mostradono formato MCC-MNC (ex: 724-05). Isso significa que o país é o Brasil e ocódigo da operadora é 05.

O GSM.Band define a banda de GSM que o OpenBTS vai operar. O melhor éusar uma banda não alocada na sua região, mas algumas vezes isso não épossível. Se esse é o seu caso, você vai precisar usar um Analisador de Espectropara descobrir que banda possui espaço livre. O link abaixo mostra a alocaçãode frequência e canal nas bandas de GSM (OBS: O downlink é a frequênciatransmitida pela BTS, então é com essa que precisamos nos preocupar):

GSM frequency ranges - Wikipedia

Considerando que esse é um projeto para construir uma BTS de baixo custo,você provavelmente não terá um Analisador de Espectro. A boa notícia é que o

GNU Radio tem um Analisado de Espectro bem simples, mas que pode serusado para verificar a alocação de banda e canal. Para usá-lo, vá para odiretório de exemplos do GNU Radio e execute o usrp_wfm_rcv_pll.py:

$ cd /usr/local/share/gnuradio/examples/usrp$ ./usrp_wfm_rcv_pll.py

Podemos procurar dentro das bandas de GSM mudando a frequência (campo"Freq:") para verificar um espaço livre para operação.

A figura abaixo mostra que os canais próximos a 938 MHz estão sendoutilizados. A opção de "Peak Hold" pode ser útil nessa verificação:Linux: Montando uma rede GSM

A figura abaixo mostra que os canais próximos a frequência de 937 MHz nãoestão sendo usados:Linux: Montando uma rede GSM

Page 6: Dicas Gnuradio e Openbts

6/16www.hospedar-se.com/dicas/?dica=3214

Linux: Montando uma rede GSM

Agora podemos configurar o GSM.ARFCN (Absolute RF Channel). Essaaplicação WEB gera as tabelas de frequências e canais para as 4 bandas GSMutilizadas no Brasil:

arfcn-calculator - aubraux.com

Para a faixa de 900 MHz, essa é a tabela:Linux: Montando uma rede GSM

Para a freqüência de downlink de 937 MHz (da BTS para o telefone celular), oARFCN é 10.

Segue abaixo meu arquivo OpenBTS.config:

# Sample OpenBTS configuration file# Format of each line is. # The key name can contain no spaces.# Everything between the first space and the end of the line becomes the value.# Comments must start with "#" at the beginning of the line.# Blank lines are OK.

# As a gerenal rule, non-valid configuration values will crash OpenBTS.

## Logging parameters#

# The initial global logging level: ERROR, WARNING, NOTICE, INFO,DEBUG, DEEPDEBUGLogLevel INFO

# The log file path. If not set, logging goes to stdout.# LogFileName test.out

## Transceiver parameters#

# Transceiver interface# This TRX.IP is not really adjustable. Just leave it as 127.0.0.1.

Page 7: Dicas Gnuradio e Openbts

7/16www.hospedar-se.com/dicas/?dica=3214

# This TRX.IP is not really adjustable. Just leave it as 127.0.0.1.TRX.IP 127.0.0.1# This value is hard-coded in the transcevier. Just leave it alone.TRX.Port 5700

# Path to transceiver binaryTRX.Path ../Transceiver/transceiver

# TRX logging.# Logging level.TRX.LogLevel ERROR# Logging file. If not defined, logs to stdout.# TRX.LogFileName test.out

## SIP, RTP, servers#

# Asterisk PBXAsterisk.IP 127.0.0.1

Asterisk.Port 5060

# Messaging serverMessenger.IP 127.0.0.1Messenger.Port 5063

# Local SIP/RTP portsSIP.Port 5062RTP.Start 16484RTP.Range 98

# Local SMS port for short code delivery.SMSLoopback.Port 5064

## Special extensions.#

# Routing extension for emergency calls.# PBX.Emergency 2101

## SIP parameters#

# SIP registration period in seconds.# Ideally, this should be slightly longer than GSM.T3212.SIP.RegistrationPeriod 3600

## SIP Internal Timers. All timer values are given in millseconds.# These are from RFC-3261 Table A.#

Page 8: Dicas Gnuradio e Openbts

8/16www.hospedar-se.com/dicas/?dica=3214

# SIP Timer A, the INVITE retry period, RFC-3261 Section 17.1.1.2SIP.Timer.A 1000

## SMS parameters## ISDN address of source SMSC when we fake out a source SMSC.SMS.FakeSrcSMSC 0000# ISDN address of destination SMSC when a fake value is needed.SMS.DefaultDestSMSC 0000

# The SMS HTTP gateway.# Comment out if you don't have one.# SMS.HTTP.Gateway api.clickatell.com

# IF SMS.HTTP.Gateway IS DEFINED, SMS.HTTP.AccessString MUSTALSO BE DEFINED.# SMS.HTTP.AccessString sendmsg?user=xxxx&password=xxxx&api_id=xxxx

# The "Welcome Message" is sent to uprovisioned handsets that try to register.# Comment out if you don't want this feature.# WELCOME MESSAGE MUST BE LESS THAN 161 CHARACTERS.# SMS.WelcomeMessage Welcome to OpenBTS# SMS.WelcomeMessage Your handset attempted to register with OpenBTS.

# IF SMS.WelcomeMessage IS DEFINED, SMS.WelcomeShortCode MUSTALSO BE DEFINED.SMS.WelcomeShortCode 0000

## GSM#

# Network and cell identity.

# Network Color Code, 0-7GSM.NCC 0# Basesation Color Code, 0-7GSM.BCC 0# Mobile Country Code, 3 digits.# MCC MUST BE 3 DIGITS. Prefix with 0s if needed.GSM.MCC 724# Mobile Network Code, 2 or 3 digits.GSM.MNC 66# Location Area Code, 0-65535GSM.LAC 667# Cell ID, 0-65535GSM.CI 0# Network "short name" to display on the handset.# SHORT NAME MUST BE LESS THAN 8 CHARACTERS.GSM.ShortName OpenBTS

# Assignment type for call setup.# This is defined in an enum AssignmentType in GSMCommon.h.

Page 9: Dicas Gnuradio e Openbts

9/16www.hospedar-se.com/dicas/?dica=3214

# This is defined in an enum AssignmentType in GSMCommon.h.# 0=Early, 1=VeryEarly.GSM.AssignmentType 1

# Band and Frequency

# Valid band values are 850, 900, 1800, 1900.GSM.Band 900# Valid ARFCN range depends on the band.#GSM.ARFCN 29GSM.ARFCN 10

# Downlink tx power level, dB wrt full powerGSM.PowerAttenDB 0

# Beacon parameters.

# L1 radio link timeout advertised on BCCH.# This is the RAW parameter sent on the BCCH.# See GSM 10.5.2.3 for encoding.# Value of 15 gives 64-frame timeout, about 30 seconds on the TCH.# This should be coordinated with T3109.GSM.RADIO_LINK_TIMEOUT 15

# Attach/detach flag.# Set to 1 to use attach/detach procedure, 0 otherwise.# This will make initial registration more prompt.# It will also cause an un-regstration if the handset powers off.GSM.ATT 1

# CCCH_CONF# See GSM 10.5.2.11 for encoding.# Value of 1 means we are using a C-V beacon.GSM.CCCH_CONF 1

# Maximum RACH retransmission attempts# This is the RAW parameter sent on the BCCH.# See GSM 04.08 10.5.2.29 for encoding.GSM.RACH.MaxRetrans 3

# Parameter to spread RACH busts over time.# This is the RAW parameter sent on the BCCH.# See GSM 04.08 10.5.2.29 for encoding.GSM.RACH.TxInteger 14

# Access class flags.# This is the RAW parameter sent on the BCCH.# See GSM 04.08 10.5.2.29 for encoding.# Set to 0 to allow full access.GSM.RACH.AC 0

## GSM Timers. All timer values are given in milliseconds unless stated otherwise.# These come from GSM 04.08 11.2.

Page 10: Dicas Gnuradio e Openbts

10/16www.hospedar-se.com/dicas/?dica=3214

# These come from GSM 04.08 11.2.#

# T3212, registration timer.# Unlike most timers, this is given in MINUTES.#Actual period will be rounded down to a multiple of 6 minutes.# Any value below 6 minutes disables periodic registration.# Ideally, this should be slightly less than the SIP.RegistrationPeriod.GSM.T3212 6

a. Verificar o IMSI do SIM Card (International Mobile Subscriber Identity):

O registro do terminal na rede é baseado no número do IMSI armazenado noSIM Card. Se você não tem esse número, é possível usar o script Python abaixopara verificá-lo. Crie um novo arquivo no editor de texto e cole o script abaixo.Tome cuidado com a endentação, pois ela é importante no Python:

#!/usr/bin/env python# Coded by Alexsander Loula# Email: [email protected]

import serial,string

def readuntilok(s): ol=[] while 1: c=s.read() if not c: break ol.append(c) ostring="".join(ol) if len(ol)>3 and ostring[-4:]=="OK\r\n": break return ostring

def cmd(s,cmd): s.write(cmd+"\r") r=readuntilok(s) r=r.split("\n") for i in range(len(r)): r[i]=r[i][:-1] return r

### INIT Serial Portser=serial.Serial('/dev/ttyACM0',115200,timeout=3)ser.write('ATZ\r')line=ser.read(10)

### Read IMSIimsi = cmd(ser,'AT+CIMI')[1]imsi = imsi.split()[-1]imsi = 'IMSI: ' + imsi[1:16]print imsi

### Close Serial Port

Page 11: Dicas Gnuradio e Openbts

11/16www.hospedar-se.com/dicas/?dica=3214

### Close Serial Portser.close()

Salve o arquivo com getimsi.py;

O script depende do módulo serial para controlar o telefone via porta serial (RS-232 ou USB) através de comandos AT. Para instalá-lo, digite:

$ sudo apt-get install python-serial

Torne o script executável:

$ sudo chmod +x getimsi.py

Conecte um telefone que suporte comandos AT através da porta serial e rode oscript:

$ ./getimsi.py

Deve ser mostrado algo como:

IMSI: 724311320422052

Esse é o IMSI do SIM Card que será usado para configurar o Asterisk.

b. Faça o backup dos arquivos "/etc/extensions.conf" e "/etc/sip.conf":

$ cd /etc/asterisk

$ sudo cp extensions.conf extensions.conf_ori$ sudo cp sip.conf sip.conf_ori

c. Copie o "~/openbts-2.3/AsteriskConfig/extensions.conf" e "sip.conf" para o

"/etc/asterisk":

$ sudo cp ~/openbts-2.3/AsteriskConfig/sip.conf .$ sudo cp ~/openbts-2.3/AsteriskConfig/extensions.conf .

d. Edite o /etc/asterisk/extension.conf:

...

[sip-local]; local extensions

exten => 2100,1,Macro(dialSIP,wiredPhone)exten => 2101,1,Macro(dialSIP,softPhone)

; This is a simple mapping between extensions and IMSIs.exten => 2102,1,Macro(dialSIP,724311320422052)

...

O número (ramal) 2101 será usado pelo softphone e o 2102 pelo telefone celular(724311320422052 é o IMSI).

e. Edite o /etc/asterisk/sip.conf:

...

Page 12: Dicas Gnuradio e Openbts

12/16www.hospedar-se.com/dicas/?dica=3214

[softPhone]callerid=2101

canreinvite=notype=friend

context=sip-externalallow=ulaw

allow=gsmhost=dynamic

; This is a GSM handset entry.

; You need one for each SIM.; The IMSI is a 15-digit code in the SIM.

; You can see it in the Control log whenever a phone tries to register.[724311320422052]; <- The IMSI is used as a SIP user ID.

canreinvite=notype=friend

context=sip-externalallow=gsm

host=dynamic...

f.Reinicie o Asterisk:

$ sudo /etc/init.d/asterisk restart

Teste do OpenBTS

a. Configuração do telefone:

As configurações do telefone são cruciais para o teste do OpenBTS.

Primeiramente precisamos ter certeza que a configuração de rede esta de acordocom a banda selecionada no arquivo OpenBTS.config.

Um SIM Card de operadora normalmente vêm com uma lista de operadoras

preferenciais. Essa lista também é conhecida como PLMN (Public Land MobileNetwork) que é composta pelo código do país e código da operadora (MCC-

MNC).

Para garantir que o telefone começará procurando pela nossa rede, precisamoscolocar o PLMN (MCC-MNC), configurado anteriormente no

OpenBTS.config, como a primeira rede preferencial.

Quando um terminal é registrado na rede ele recebe o TMSI (Temporary MobileSubscriber Identity). O TMSI é gerado aleatoriamente pelo VLR para cada

terminal registrado na rede. É bom limpar o TMSI para fazer o primeiro registrono OpenBTS. Uma maneira de fazer isso é desligar o telefone e tirar a bateria.

b. Execute o OpenBTS:

$ cd ~/openbts-2.3/apps

$ ./OpenBTS

Page 13: Dicas Gnuradio e Openbts

13/16www.hospedar-se.com/dicas/?dica=3214

OpenBTS, Copyright 2008, 2009 Free Software Foundation, Inc.Contributors:

Kestrel Signal Processing, Inc.: David Burgess, Harvind Samra, Raffi Sevlian, Roshan Baliga

GNU Radio: Johnathan Corgan

Incorporated GPL libraries and components: libosip2, liportp2

This program comes with ABSOLUTELY NO WARRANTY.This is free software;

you are welcome to redistribute it under the terms of GPLv3.Use of this software may be subject to other legal restrictions,

including patent licsensing and radio spectrum licensing.All users of this software are expected to comply with

applicable regulations.

1242936099.801724 3082733248: Starting the system...

1242936100.8228 WARNING 3082733248 TRXManager.cpp:269: retryingtransceiver command after response timeout

1242936101.0380 INFO 3052067728 RadioResource.cpp:366: Pager::pageAllpaging 0 mobile(s)

1242936101.0382 INFO 3082733248 OpenBTS.cpp:199: system ready1242936101.038262 3082733248:

Welcome to OpenBTS. Type "help" to see available commands.

OpenBTS>

c. Ligue o telefone

Deve ser mostrada uma saída como a abaixo na CLI (Command Line Interface)do OpenBTS no momento do registro do telefone:

1242936116.4806 INFO 3073633168 RadioResource.cpp:150:

AccessGrantResponder RA=0x18 when=0:1778916 age=241242936116.4809 INFO 3073633168 RadioResource.cpp:191:

AccessGrantResponder sending PageMode=(0) DedicatedModeOrTBF=(TMA=0 Downlink=0 DMOrTBF=0) ChannelDescription=

(typeAndOffset=SDCCH/4-1 TN=0 TSC=0 ARFCN=10) RequestReference=

(RA=24 T1'=29 T2=22 T3=36) TimingAdvance=01242936116.9887 INFO 3069905808 MobilityManagement.cpp:117:

LocationUpdatingController MM Location Updating Request LAI=(MCC=724MNC=31 LAC=0x3eee) MobileIdentity=(IMSI=724311320422052)

1242936116.9911 INFO 3069905808 MobilityManagement.cpp:170:LocationUpdatingController registration SUCCESS: IMSI=724311320422052

1242936133.4187 INFO 3073633168 RadioResource.cpp:150:AccessGrantResponder RA=0xe7 when=0:1782585 age=24

1242936133.4189 INFO 3073633168 RadioResource.cpp:191:AccessGrantResponder sending PageMode=(0) DedicatedModeOrTBF=

(TMA=0 Downlink=0 DMOrTBF=0) ChannelDescription=(typeAndOffset=SDCCH/4-3 TN=0 TSC=0 ARFCN=10) RequestReference=

(RA=231 T1'=0 T2=25 T3=33) TimingAdvance=01242936133.7486 INFO 3066710928 MobilityManagement.cpp:59:

CMServiceResponder MM CM Service Request serviceType=MOC

Page 14: Dicas Gnuradio e Openbts

14/16www.hospedar-se.com/dicas/?dica=3214

CMServiceResponder MM CM Service Request serviceType=MOCmobileIdentity=(TMSI=0x4a15b323)

d. Teste de chamada para o telefone celular (MT - Mobile Terminate):

Podemos usar um softphone SIP para fazer esse teste. Recomendo o Twinkle:

$ sudo apt-get install twinkle

Configure o Twinkle para se registrar no Asterisk e faça uma chamada para o

telefone celular (número 2102 - que foi definido na configuração do Asterisk).

O telefone deve começar tocar. As mensagens na CLI do OpenBTS devem serparecidas com essas:

1242936133.7487 INFO 3066710928 CallControl.cpp:556: MOC: MM CM

Service Request serviceType=MOC mobileIdentity=(TMSI=0x4a15b323)1242936134.2190 INFO 3066710928 CallControl.cpp:615: MOC: CC Setup

TI=(0,0) CalledPartyBCDNumber=(type=unknown plan=E.164/ISDNdigits=2101)

1242936134.2193 INFO 3066710928 CallControl.cpp:179: assignTCHFsending AssignmentCommand for 0xbff5e798 on 0xbff5e9b4

1242936134.9155 INFO 3057658768 RadioResource.cpp:276:AssignmentCompleteHandler service=MOC

1242936134.9156 INFO 3057658768 CallControl.cpp:697: MOC: transaction:ID=1804289383 TI=(0,0) IMSI=724311320422052 to=2101

Q.931State=MOC initiated SIPState=Starting1242936134.9498 INFO 3057658768 CallControl.cpp:715: MOC A: wait for

Ringing or OK1242936135.1865 INFO 3057658768 CallControl.cpp:715: MOC A: wait for

Ringing or OK1242936135.1866 INFO 3057658768 CallControl.cpp:726: MOC A:

SIP:Ringing, send Alerting and move on1242936135.4046 INFO 3057658768 CallControl.cpp:756: MOC: wait for

SIP OKAY1242936136.7268 INFO 3057658768 CallControl.cpp:793: MOC: sending

Connect to handset1242936136.9539 INFO 3057658768 CallControl.cpp:538: MOC MTC

connected, entering callManagementLoop

Atenda a chamada no telefone celular e inicie a conversação.

e. Teste de chamada do telefone celular (MO - Mobile Originate):

Chame o softphone (número 2101 - definido nas configurações do Asterisk) apartir do telefone celular.

O softphone deve começar a tocar:

1242936158.0970 INFO 3063249808 RadioResource.cpp:330:

Pager::removeID IMSI=7243113204220521242936158.0970 INFO 3063249808 RadioResource.cpp:237:

PagingResponseHandler service=MTC1242936158.0970 INFO 3063249808 CallControl.cpp:823: MTC on FACCH

Page 15: Dicas Gnuradio e Openbts

15/16www.hospedar-se.com/dicas/?dica=3214

1242936158.0970 INFO 3063249808 CallControl.cpp:823: MTC on FACCH

transaction: ID=1804289386 TI=(1,0) IMSI=724311320422052 from=2101Q.931State=MTC paging SIPState=Null

1242936158.0970 INFO 3063249808 CallControl.cpp:845: MTC: sendingGSM Setup to call type=national plan=E.164/ISDN digits=2101

1242936158.2269 INFO 3052067728 RadioResource.cpp:366: Pager::pageAllpaging 0 mobile(s)

1242936158.7152 INFO 3063249808 CallControl.cpp:906: MTC:: waiting forGSM Alerting and Connect

1242936165.5375 INFO 3063249808 CallControl.cpp:921: MTC:: allocatingport and sending SIP OKAY

1242936165.5728 INFO 3063249808 CallControl.cpp:538: MOC MTCconnected, entering callManagementLoop

Atenda a chamada e inicie a conversação;

Você pode verificar as opções de comandos da CLI do OpenBTS digitando

"help" no prompt:

OpenBTS> helpassignment [type] -- get/set assignment type (early, veryearly)

calls -- print the transaction tableexit -- exit the application.

help -- list available commands or gets help on a specific command.lai [MCC] [MNC] [hex-LAC] -- get/set location area identity (MCC, MNC,

LAC)load -- print the current activity loads.

loglevel [level] -- get/set the logging level, one of {ERROR, ALARM, WARN,NOICE, INFO, DEBUG, DEEPDEBUG}.

sendsms <IMSI> -- send SMS to <IMSI>, addressed from , after prompting.setlogfile <path> -- set the logging file to <path>.

tmsis ["clear"] -- print/clear the TMSI table.uptime -- show BTS uptime and BTS frame number.

Segue abaixo um screenshot mostrando o OpenBTS, Asterisk e Twinkle numa

chamada MO:Linux: Montando uma rede GSM

Conclusão

Trazer o stack (pilha) do GSM para um hardware de baixo custo não é uma

Page 16: Dicas Gnuradio e Openbts

16/16www.hospedar-se.com/dicas/?dica=3214

Trazer o stack (pilha) do GSM para um hardware de baixo custo não é umatarefa fácil. O OpenBTS está dando esse poder para nós, e como um projeto de

código aberto, pode ser usado como um excelente ponto de partida paraaprender como o sistema GSM funciona.

Referências:

http://gnuradio.org/trac/wiki/OpenBTShttp://gnuradio.org/trac

http://en.wikipedia.org/wiki/GSMhttp://www.ettus.com/

Hospedar-se .Com © 2003 - 2008. Todos os direitos Reservados.

192.168.3.100