SOFTWARES RTL-SDR NO UBUNTU

No post anterior, descrevi o passo-a-passo das instalações dos softwares básicos para brincar com RTL-SDR, e elegi o Kali Linux como OS com melhor suporte nesse campo.

Porém, ao tentar evoluir, instalando softwares mais avançados e/ou de terceiros, esbarrei em muitos problemas de escalabilidade, o que me fez migrar -depois de pesquisar bastante- para o Ubuntu 19.04 (Disco Dingo). Neste post pretendo compartilhar a minha experiência inicial nesta nova plataforma.

Instalações dos Softwares Básicos para RTL-SDR no Ubuntu

O Kali Linux tem facilidade de instalar, com apenas um comando, o metapackage kali-linux-sdr contendo uma seleção de ferramentas básicas que o SDR necessita; no Ubuntu, tive que instalá-las cada uma manualmente, para isso encontrei duas opções:

      1 – Em https://pkgs.org/ fiz uma busca por “sdr” selecionando a Distribuição “Ubuntu 19.04 (Disco Dingo)” e instalei todas do repositório Ubuntu Universe amd64 (minha máquina é 64-bit, quem tem máquina 32-bit deve instalar de Ubuntu Universe i386)

      2 – Instalar e abrir o Synaptic usando o comando sudo apt install synaptic && synaptic; em Settings>Repositories marcar todos, em Sections ver, por exemplo “Amateur Radio” ou fazer uma busca, algo como “rtl-sdr” ou “sdr

Instalei todos packages de interesse no repositório “Ubuntu Universe”,assim já preparei meu sistema com os drivers para outros hardwares (LimeSDR, OsmoSDR, Realtek RTL2832U, bladeRF, HackRF, etc). Desta forma, os seguintes softwares também foram instalados: cubicsdr, cutesdr, gqrx-sdr, gnuradio, hamradio-sdr, e outros.

Adicionalmente, instalei:

– O OsmoTRX (sudo apt install osmo-trx) que é um transceptor de rádio definido por software que implementa a camada física (Layer 1) segundo especificações 3GPP:

      TS 05.01 “Physical layer on the radio path”

      TS 05.02 “Multiplexing and Multiple Access on the Radio Path”

      TS 05.04 “Modulation”

      TS 05.10 “Radio subsystem synchronization”.

– O Wireshark (sudo apt install wireshark). Ver procedimento de instalação https://udigrudroid.wordpress.com/2019/05/13/rtl-sdr-hackeando-rf/

– O gr-gsm (sudo apt install  gr-gsm) que fornece Blocos e ferramentas do Gnuradio para a varredura e decodificação de tráfego de GSM.

– simple_IMSI-catcher. Ver procedimento de instalação no post https://udigrudroid.wordpress.com/2019/05/13/rtl-sdr-hackeando-rf/

kalibrate-rtl ou kal.

A instalação é simples, porém tive que fazer o upgrade de librtlsdr-dev_0.6-1 para librtlsdr-dev_0.6-2 pelo repo deb http://cz.archive.ubuntu.com/ubuntu eoan main universe conforme bug do Ubuntu disco relatado em https://github.com/steve-m/kalibrate-rtl/issues/19

git clone https://github.com/steve-m/kalibrate-rtl.git

cd kalibrate-rtl

./bootstrap

./configure

make

sudo make install

TESTANDO ALGUNS SOFTWARES BÁSICOS

1. rtl_test

lost at least 44 bytes >>>>> é apenas no início, deixar rodar algum tempo!!

Para verificar a taxa máxima de amostragem possível usei a opção -s alterando a taxa até a ocorrencia de perda de amostra:

A samplerate máxima no meu caso é 2.4e6!!!!

2. rtl_power

rtl_power é um registrador FFT para RTL2832. Salva os registros em um arquivo .csv com colunas:date, time, Hz low, Hz high, Hz step, samples, dbm, dbm, …

Digite, por exemplo,

rtl_power -h para ajuda, ou

rtl_power -f 88M:108M:125k fm_stations.csv para um log de estações fm, na faixa de 88MHz a 108MMHz, em um arquivo fm_stations.csv

3. rtl_fm

Para ouvir uma emissora FM

rtl_fm -f 90.1e6 -M wbfm -s 200000 -r 48000 | aplay -r 48000 -f S16_LE

90.1 é a frequencia, substitua por uma disponível na sua cidade. Digite rtl_fm -h para ajuda

4. rtl_sdr

Exemplo: para sintonizar em 90,1 MHz e definir a taxa de amostragem para 1,8 MS/s, usei:

rtl_sdr ./capture.bin -s 1.8e6 -f 90.1e6

para salvar amostras em um arquivo ou encaminhar os dados para um fifo

5. osmocom Spectrum Browser

Analizador de spectro

Teste rádio FM: 90.1MHz, Sample Rate: 2MHz

osmocom_fft -a rtl=0 -s 2000000 -g 40 -f 90100000

Use osmocom_fft -h para ajuda e experimente as opções:

-W, –waterfall       Enable waterfall display

-F, –fosphor         Enable fosphor display

-S, –oscilloscope    Enable oscilloscope display

6. gqrx

Outro Analizador de Spectro

CONFIGURAR NA PRIMEIRA JANELA:

Device = Realtek RTL2838UHIDIR SN: 00000001

Device String = rtl=0

Frequencia = 90100.000KHz (FM)

Demod = WFM

7. CubicSDR

Comando CubicSDR ou iniciar no menu Applications

O CubicSDR um analisador de espectro em tempo real com plotagem em cascata 2D. Na figura acima, visualizando o espectro de sinal 4G LTE Band 28 (Band 28, 778MHz, EARFCN(DL)=9410.

Nesta figura há duas coisas a observar:

      1. Com Sample Rate do CubicSDR configurado para o máximo (3.2MHz), fica confirmado a limitação de banda de passagem do meu RTL Realtek RTL2838UHIDIR conforme já evidenciado no item 1, acima, com o comando rtl_test.

      2. O offset de frequência de 778.000-777.9659=34.1KHz. Isso pode ser compensado em “Settings

8. Gnu Radio

Fiz um teste no Gnu Radio com um Receptor de Rádio FM

RTL-SDR Source (Origem) pode ser encontrada na categoria Source, na barra lateral direita do GRC. É a nossa entrada de sinal. Precisamos definir sua taxa de amostragem (variável samp_rate = 2M) a frequência da estação que queremos receber (center_freq = 90.1MHz, no exemplo).

O fluxograma GNU Radio Companion está disponível para download aqui

Outras configurações são necessárias (Low pass filter, WBFM Receive, Audio Sink), porém já estão configuradas no arquivo disponibilizado

9. kalibrate-rtl, IMSI-catcher, grgsm_livemon e wireshark

O mesmo procedimento de teste descrito em https://udigrudroid.wordpress.com/2019/05/13/rtl-sdr-hackeando-rf/

Instalações de Outros Softwares para RTL-SDR

1. LTE-Cell-Scanner

Um Scanner LTE TDD/FDD. Para amostragem A/D do PDSCH e decodificação de mensagens RRC SIB

O procedimento de instalação encontra-se em https://github.com/JiaoXianjun/LTE-Cell-Scanner

!!! Atenção para as dependências, no procedimento indicado acima não está claro, fiz:

sudo apt-get install cmake libfftw3-dev libmbedtls-dev libboost-program-options-dev libconfig++-dev libsctp-dev libitpp-dev librtlsdr-dev libopenblas-dev libncurses5-dev libssl-dev

Testando LTE-Cell-Scanner

Além do Brasil, a faixa de 700 MHz é utilizado para o LTE em outros países tal qual nos Estados Unidos. No entanto, as operadoras brasileiras utilizam uma tecnologia batizada de Asia-Pacific Telecommunity (APT), que faz com que os aparelhos desenvolvidos para as redes norte-americanas (bandas 13 – 700 c) sejam incompatíveis com os daqui (Banda 28 – 700 APT). Aliás, esta é a razão dos problemas com os iPhone XS e XS Max.

Fazendo uma busca na web é possível encontrar informações sobre cobertura 4G LTE. Por exemplo: aqui é possível uma consulta se o Ativação 4G-700MHz foi ativado em sua cidade, aqui um Mapa de cobertura 3G/4G e aqui.

A Banda 28 (700 APT), é uma boa faixa de frequência para uso com o meu RTLSDR Realtek RTL2832U [Downlink(MHz): 758 a 803 MHz].

O LTE-Cell-Scanner fornece o utilitário ‘CellSearch’ e o ‘LTE-Tracker’. Dito isto, vamos aos testes.

      CellSearch

      Buscar portadoras LTE na banda 28:

CellSearch –freq-start 758e6 –freq-end 803e6

Perto de mim encontrei duas celulas: 778 e 788 MHz  (o downlink).

      LTE-Tracker

      Rastrear células LTE na frequência 778 MHz:

LTE-Tracker -f 778000000

fig LTE-Tracker_init.png  LTE-Tracker_sync-phase.png  LTE-Tracker_sync-mag.png LTE-Tracker_init-res.png  LTE-Tracker*.png

2. srsLTE

O pacote srsLTE inclui:

     srsUE – um aplicativo completo SDR LTE UE (User Equipment)

     srsENB – um aplicativo completo SDR LTE eNodeB (Basestation)

     srsEPC – uma implementação leve de LTE EPC (Core Network) com MME, HSS e S/P-GW

Os manuais do usuário UE, eNodeB e EPC estão disponíveis em https://docs.srslte.com/en/latest/index.html

Para minha surpresa, rodei o Synaptic, fiz uma procura “srslte” e booomm!!!! Uma mão na roda

Depois de instalar, tem que configurar em /etc/srslte/ue.conf

Coisas como: Downlink EARFCN code, receive gain, USIM, NAS,… e muito mais!!! Ver exemplo de configuração em https://github.com/srsLTE/srsLTE/blob/master/srsue/ue.conf.example

Também é possível capturar pacotes na MAC-layer, ver: https://wiki.wireshark.org/MAC-LTE

CONCLUSÃO

O que venho relatando, nesse post e no anterior, é a minha experiência em busca de uma plataforma que me permita escovar bits na pilha de protocolos 3G e 4G-LTE, visando custo/benefício. A escolha do Ubuntu (em detrimento do Kali Linux, como já foi dito), como SO, já está consolidada e agora tenho que fazer uma escolha para upgrade no RTL-SDR.

Preciso escolher um Transceptor de RF que me faça voar. O meu Realtek RTL2838UHIDIR é apenas um receptor na faixa de 24Mhz a 1.766Ghz, que suporta apenas interface USB 2.0, equipado com um chip Conversor A/D RTL2832U e um sintonizador Rafael Micro R820T.

É básico! Não se pode implementar uma UE sem um transmissor. O eNodeB é responsável pelo Gerenciamento de Recursos de Rádio; como o eNB saberá quando o UE está ligado? Ou seja, como o eNodeB vai realizar o controle da portadora de rádio, o controle de admissão, a alocação de uplink e downlink para o UE etc.? Este é o primeiro ponto, mas já é o suficiente!

O segundo ponto é a limitação de ficar apenas na Banda 28 (700MHz-APT). Por exemplo, depois de muito trabalho instalando o OpenLTE, uma implementação de código aberto das especificações 3GPP LTE que promete a recepção de downlink LTE-FDD usando o rtl-sdr fui configurar o arquivo dos parâmetros do sistema e me deparei com a limitação “freq_band=1, bounds = [1, 25]“; não tem a opção 28!!! Mas vou voltar a trabalhar nisso.

Um terceiro ponto é a questão da Taxa de Amostragem do conversor A/D; e para ser melhor entendido pelos leitores hobistas, menos ligados área de telecomunicações, vou aproveitar para tentar explicar, resumidamente, o que é Software Defined Radio.

Um SDR é um sistema no qual os componentes são implementados em software, em vez da maneira tradicional de implementação de hardware. Consiste em um front-end de RF (sintonizador, que recebe um sinal analógico da antena) seguido por um conversor analógico-digital que fornece amostras desse sinal para um computador. O restante do processamento é feito exclusivamente por software. Para a demodulação o dispositivo usa amostragem de QI.

Tentando simplificar para não divagar na matemática, I e Q são os componentes In-phase (Em-fase) e Quadratura de um sinal. A descrição completa de um sinal é: x(t)=I(t)+jQ(t). x(t) é, portanto, representado como um vetor com módulo e fase.

Um sinal contém informações úteis apenas quando ocorre alterações em I ou/e Q

Aqui falo do Teorema de Nyquist: amostrar é o processo no qual se converte um sinal (por exemplo, uma função contínua no tempo ou espaço) em uma sequência numérica (uma função discreta no tempo ou espaço). Quem quiser se aprofundar tem que estudar “teoria da informação” e “processamento de sinais”

No Processamento de Sinal Digital (DSP), a referência fundamental é o relógio de amostragem local. O DSP depende muito dos sinais I e Q para o processamento. O uso de I e Q permite o processamento de sinais próximos a CC ou frequência zero.

A frequência de Nyquist é duas vezes mais alta, não duas vezes a largura de banda do sinal. Por exemplo: uma frequência comum usada no processamento de sinais analógicos é 455 kHz (Sonar). Para amostrar no processamento digital, requer 910 KS/s. Mas se a largura de banda do sinal for de apenas 10 KHz, com I & Q a amostragem requer apenas 20 kS/s.

Vou ao que interessa. Observando o primeiro item do tópico “TESTANDO ALGUNS SOFTWARES BÁSICOS” neste post (1. rtl_test)

onde verifiquei a amostragem máxima possível em minha plataforma atual, usando o comando rtl_test -s samplerate e alterando a taxa de amostragem até ocorrer perda de amostra, a taxa de amostragem sem perda foi 2.4 MS/s. A figura abaixo relaciona largura de banda LTE e frequência de amostragem. Note por exemplo, no caso da largura de banda de 10MHz, frequência de amostragem é 15.36MHz

Uma dica: verifique a página Terminologia LTE para obter uma descrição desses termos.

Aqui estão algumas notas https://inst.eecs.berkeley.edu/~ee123/fa12/rtlsdr/IQ.pdf e slides sobre demodulação e amostragem em quadratura. Você verá que a amostragem é complexa, porque o SDR usa demodulação e amostragem de banda base de Q/I para representar uma única faixa lateral do espectro.

Estou elegendo o srsLTE como o software mais promissor

O srsUE é um modem LTE UE -tal um modem de um smartphone- implementado inteiramente em software. Executando como um aplicativo em um sistema operacional padrão baseado em Linux, o srsUE se conecta a qualquer rede LTE e fornece uma interface de rede padrão com conectividade móvel de alta velocidade. Para transmitir e receber sinais de rádio pelo ar, o srsUE requer hardware SDR, como o Ettus Research USRP.

Para fornecer uma rede LTE de ponta a ponta completa, é preciso usar o srsUE com srsENB e srsEPC. O srsENB é um eNodeB implementada inteiramente em software que se conecta a qualquer EPC (LTE Core Network) e cria uma célula LTE local. O srsEPC é uma implementação rede core LTE (EPC) e fornece Serviço de Assinante Doméstico (HSS), Entidade de Gerenciamento de Mobilidade (MME), Gateway de Serviço (S-GW) e Gateway de Rede de Dados de Pacote (P-GW).

Também já instalei, com sucesso, o fork do srsLTE oficial disponível em https://github.com/JiaoXianjun/srsLTE 

Atualmente, a biblioteca do srsLTE suporta o UHD (Ettus Universal Hardware Driver) e o driver bladeRF. Portanto, qualquer hardware suportado por UHD ou bladeRF pode ser usado. Não há conversão da taxa de amostragem; portanto, o hardware deve suportar o relógio de 15.36MHz (ou 30,72MHz para BW=20MHz) para funcionar corretamente com as frequências de amostragem LTE e decodificar sinais das estações base LTE.

A compatibilidade com os seguintes hardwares é garantida:

    USRP B210 R$6,970.00 BRL

    USRP B205mini R$ 5,215.00 BRL

    USRP X300 R$25,225.00 BRL

    limeSDR US$299

    bladeRF US$480.00

Os preços indicados contemplam, normalmente, apenas a placa. Não estão incluídos os cabos, antenas e caixa/gabinete (case/enclosure). Opcionais como Amplicador de Potência (Power Amplifier) e Amplificador de Baixo Ruido (wideband LNA) podem se tornar necessários, aumentando o custo da brincadeira Vou fazer alguns testes com o Matlab, que já instalei no Ubuntu, enquanto decido como será a minha jiga. Até o próximo post.

2 comentários

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s