Cuando empecé a utilizar dispositivos SDR no era consciente de la cantidad de señales que se pueden capturar con estos dispositivos. Estamos rodeados de señales de radio frecuencia, eso es algo que todos sabemos, WIFI, Bluetooth, 4G… son señales que, aunque puede que no sepamos muy bien como funcionan, estamos acostumbrados a ellas, pero en cuanto conectas un receptor de radio, y empiezas a ver todas las señales que se empiezan a detectar en muchas bandas diferentes, te das cuenta de que la muchos de los dispositivos que utilizamos utilizan radiofrecuencia, y quizás no nos habiamos parado a pensarlo.

A pesar de que el espectro de radiofrecuencia es infinito, podemos transmitir desde unos cientos de kilohercios a decenas de Gigahercios, este está dividido en diferentes bandas, cada una para un uso específico. Las bandas que más conocemos quizás son las de 2.4 GHz y 5 GHz, en las cuales trabajan los dispositivos Bluetooth, WIFI, y muchos de los teclados y ratones inalambricos que utilizamos. Obviamente, estos no son los únicos dispositivos que utilizan el espectro, si bajamos hasta frecuencias sub-Gigahercio, encontramos diferetes bandas, 968 Mhz está reservado para dispositivos LoRA, y un poco más abajo, en 433 MHz tenemos la banda ISM (Industrial-Scientific-Medical). Por muy pomposo que pueda parecer el nombre, en esta banda tenemos un gran cajón desastre, donde pueden trabajar todos los dispositivos de radiofrecuencia más generales. En esta banda es donde funcionan los mandos de garaje, los mandos para abrir lo coches, y muchos de los dispositivos que transmiten datos de forma inalambrica como estaciones meteoorológicas. Estos dispositivos envian en abierto la información que capturan con sus sensores, y puesto que no se trata de información confidencial, esta se emite sin cifrar, por lo que culquiera que esté en el alcance de estos transmisores podrá capturar esa señal, y eso es justo lo que vamos a hacer con el dispositivo RTL SDR y el proyecto rtl-433.

RTL SDR es un receptor de radio por USB basado en el CI RTL2832U, con un rango de frecuencias desde 500 kHz a 1.8 GHz, con lo que nos permite recibir la banda ISM sin problemas. Lo mejor de este dispositivo es su precio, que está alrededor de los 20 euros. utilizando este dispositivo, junto a la aplicación rtl-sdr, vamos a ver como si nuestor vecino tiene una estación meteorológica, nosotros nos podemos aprovechar también de ello.

RTL SDR

En primer lugar vamos a instalar todos los drivers necesarios para conectar el RTL-SDR a nuestro PC con Linux. Para ello tenemos que instalar la librería libusb-1.0.0-dev, git y cmake.

sudo apt-get install libusb-1.0-0-dev git cmake

Después, tenemos que clonar el repositorio rtl-sdr, y ejecutar los siguientes pasos para instalarlo.

git clone git://git.osmocom.org/rtl-sdr.git
cd rtl-sdr/
mkdir build
cd build
cmake ../ -DINSTALL_UDEV_RULES=ON
make
sudo make install

Finalmente, tenemos que copiar el archivo de reglas para poder comunicarnos con el RTL-SDR.

sudo cp ../rtl-sdr.rules /etc/udev/rules.d/
sudo ldconfig

Una vez tenemos instalados los drivers del RL-SDR, podemo verificar que está todo correctamente instalado ejecutando el comando de test sobre el dispositvo mediante el comando rtl_test

pablo@miercoles:~$ rtl_test
Found 1 device(s):
  0:  Realtek, RTL2838UHIDIR, SN: 00000001

Using device 0: Generic RTL2832U OEM
Found Rafael Micro R820T tuner
Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6 
[R82XX] PLL not locked!
Sampling at 2048000 S/s.

Info: This tool will continuously read from the device, and report if
samples get lost. If you observe no further output, everything is fine.

Reading samples in async mode...

Una vez tenemos instalados los drivers. lo siguiente que haremos será instalar la aplicación rtl-433, que se encuentra en el repositorio oficial de Ubuntu.

pablo@miercoles:~$ sudo apt install rtl-433

Una vez instalada la aplicación, estamos listos para empezar a recibir tramas ISM ejecutando el comando rtl-433 en el terminal. En mi caso, se detectan dos estaciones meteorológicas cernanas, las cuales devuelven humedad y temperatura, por lo que podemos decir que yo tengo dos estaciones meteorológicas desde las que puedo obtener la humedad y la temperatura.

pablo@miercoles:~$ rtl_433
rtl_433 version unknown inputs file rtl_tcp RTL-SDR SoapySDR
Use -h for usage help and see https://triq.org/ for documentation.
Trying conf file at "rtl_433.conf"...
Trying conf file at "/home/pablo/.config/rtl_433/rtl_433.conf"...
Trying conf file at "/usr/local/etc/rtl_433/rtl_433.conf"...
Trying conf file at "/etc/rtl_433/rtl_433.conf"...
Registered 122 out of 149 device decoding protocols [ 1-4 8 11-12 15-17 19-21 23 25-26 29-36 38-60 63 67-71 73-100 102-105 108-116 119 121 124-128 130-149 ]
Found Rafael Micro R820T tuner
Exact sample rate is: 250000.000414 Hz
[R82XX] PLL not locked!
Sample rate set to 250000 S/s.
Tuner gain set to Auto.
Tuned to 433.920MHz.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time      : 2022-09-13 16:13:35
model     : LaCrosse-TX141THBv2                    Sensor ID : ee
Channel   : 00           Battery   : 1             Temperature: 26.80 C
Humidity  : 68 %         Test?     : No
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time      : 2022-09-13 16:14:04
model     : inFactory-TH ID        : 171
Channel   : 1            Temperature: 79.10 °F    Humidity  : 62 %
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time      : 2022-09-13 16:14:04
model     : inFactory-TH ID        : 171
Channel   : 1            Temperature: 79.10 °F    Humidity  : 62 %
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time      : 2022-09-13 16:14:04
model     : inFactory-TH ID        : 171
Channel   : 1            Temperature: 79.10 °F    Humidity  : 62 %
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time      : 2022-09-13 16:14:05
model     : inFactory-TH ID        : 171
Channel   : 1            Temperature: 79.10 °F    Humidity  : 62 %

Como he mencionado antes, no solo podemos encontrar estaciones meteorológicas, desde sistemas de adquisición de datos, hasta las ruedas de los vehiculos envian su información por la banda ISM, y gracias a la cantidad de protocolos que es capaz de detectar la aplicación rtl-433 podemos decodificar muchos de ellos.