IARSDR — um receptor RTL-SDR para Android, driver e tudo
IARSDR é um app Android que transforma o celular em um receptor de rádio definido
por software. Conecte um dongle RTL-SDR (RTL2832U) na porta USB e você tem um
espectro ao vivo, um waterfall e áudio em FM/AM/SSB/CW. Ele também fala rtl_tcp,
então pode receber de um servidor remoto em vez do hardware local.
O driver é a parte interessante. Conversar com um RTL2832U normalmente
significa librtlsdr sobre libusb — código C, nativo, e em geral root ou um
desvio pelo kernel. O Android expõe uma API de USB host a partir do Kotlin, então
portei tudo: a inicialização do baseband do RTL2832U, o resampler e a sintonia por
DDC, a amostragem direta para HF, e os cinco drivers de tuner — R820T/R828D
(incluindo o RTL-SDR Blog V4/V4L com seu upconverter integrado), E4000, FC0012,
FC0013 e FC2580. O port é fiel linha a linha ao fork RTL-SDR Blog do librtlsdr;
as partes delicadas foram a sinalização (o Byte com sinal do Kotlin contra o
uint8_t do C), os endereços I2C de 8 bits nos headers em C, e manter a
matemática do PLL em 64 bits onde o C usa uint64_t. Sem NDK, sem libusb, sem
root.
Esse driver vive no seu próprio repositório,
librtlsdrk, e entra no app como um
submódulo git para poder ser reutilizado sozinho. É GPL v2, creditando os autores
originais do librtlsdr em cada arquivo.
Sobre ele, o app. As amostras IQ trafegam como vetores de float intercalados — nunca objetos encaixotados no caminho crítico, o que importa quando o celular processa alguns megabytes por segundo e uma pausa de GC vira uma falha no áudio. O mesmo buffer alimenta a FFT do display e, quando o áudio está ligado, um demodulador cuja saída é reamostrada fracionariamente para travar exatamente no relógio de áudio (decimação inteira sozinha desliza e esvazia o buffer). Há uma cadeia de filtros de áudio configurável — redução de ruído por STFT em fluxo, noise blanker, notch automático — com predefinições por modo, além de gravação em WAV e IQ bruto.
A interface tenta merecer a tela: um divisor arrastável entre espectro e waterfall, um dial de sintonia estilo rádio analógico com inércia, um modo tela limpa, e temas claro/escuro que seguem o sistema. Fala português, inglês e espanhol.
Não coleta dados e não tem anúncios. O código está no GitHub.