A comienzos de octubre se supo que el modesto ESP32-S3 podía transformarse en un transmisor y receptor SDR. Después vino el proyecto w1700k-sdr del desarrollador h0m3us3r, que convierte un router Wi-Fi 7 Gemtek W1700K en un receptor SDR de banda ancha. El tercero de la serie apunta a un chip LoRa.

LR2021-SDR es un proyecto de código abierto de Samuel Reynolds (SAMS0N1TE) que aplica la misma idea al transceptor LoRa LR2021 de Semtech y lo convierte en una radio definida por software capaz de recibir señales entre 100 MHz y 2,74 GHz. Reynolds aprovecha un comando no documentado de la ROM del chip que expone muestras I/Q en bruto de 16 bits. Con ellas, el software decodifica voz digital P25 Phase 1, mensajes de buscapersonas POCSAG y señales de FM analógica sin necesidad de un dongle SDR externo, según informó CNX Software el 20 de octubre.

Qué ofrece el firmware LR2021-SDR

  • Hardware compatible. Semtech LR2021 con ROM 1.24. No sirve con la variante SX1262 para el acceso I/Q en bruto.
  • Rango de recepción. De 100 MHz a 2,74 GHz (probado de forma experimental), más allá de las bandas de 150 a 960 MHz y de 1,5 a 2,5 GHz que especifica la hoja de datos.
  • Rango de transmisión. También de 100 MHz a 2,74 GHz en pruebas experimentales, por fuera de las mismas bandas oficiales.
  • Captura I/Q. Muestras I y Q de 16 bits por SPI, con capturas cortas limpias de hasta 250.000 muestras complejas por segundo.
  • Recepción continua. 125.000 muestras por segundo durante un máximo de 391 segundos, sin pérdidas reportadas en el FIFO ni bloques de muestras descartados.
  • Decodificación de señales. Voz digital P25 Phase 1, mensajes POCSAG y FM analógica mediante LakeShark.
  • Bluetooth LE. Recepción de paquetes de anuncio BLE 1M en los canales 37, 38 y 39 con el motor de paquetes BLE que trae el chip.
  • Grabación. Capturas I/Q en bruto para análisis, decodificación y reproducción posteriores, incluidas grabaciones con disparo que guardan muestras previas al evento.
Rango de recepción probado del LR2021 SDR, de 100 MHz a 2,74 GHz, comparado con las bandas oficiales de la hoja de datos

Rango de recepción probado del LR2021 SDR, de 100 MHz a 2,74 GHz. Cada punto es una señal real que se desplazó al resintonizar el receptor, y las zonas sombreadas son las bandas que promete la hoja de datos.

¿Cómo saca el LR2021 la señal en bruto?

En uso normal, el LR2021 se encarga de LoRa, FSK, FLRC y otras modulaciones, y le entrega al procesador anfitrión los paquetes ya decodificados. LR2021-SDR se salta ese funcionamiento con el comando no documentado de la ROM, que deja a la vista la señal de banda base sin procesar. Así el procesador trabaja las muestras I/Q por software y puede recibir señales que la interfaz estándar de paquetes del chip no admite.

El desarrollador probó el receptor en todo el rango de 100 MHz a 2,74 GHz usando los armónicos del reloj de la placa y señales independientes generadas con un HackRF One dentro de un gabinete blindado. Las pruebas confirmaron recepción en 100 MHz, 1,3 GHz, 2,6 GHz y 2,74 GHz. Las mediciones se hicieron sobre una sola placa, así que no establecen una sensibilidad calibrada del receptor ni garantizan la misma cobertura de frecuencias en otro hardware.

Captura I/Q en bruto de una señal de voz P25 Phase 1 en 154,785 MHz, con la forma de onda, la envolvente, el espectro y la cascada

Una grabación de llamada de un segundo en 154,785 MHz. Esas mismas muestras se decodificaron después en 27 tramas de voz IMBE.

Límites de velocidad y transmisión

Reynolds también probó la captura I/Q continua a 125.000 muestras por segundo, con tres sesiones de hasta 391 segundos sin pérdidas reportadas en el FIFO ni rechazos en la cola. Las capturas cortas de hasta 250.000 muestras por segundo funcionaron. A 500.000 y 1.000.000 de muestras por segundo, en cambio, el FIFO se desbordó, porque la interfaz SPI de 16 MHz no alcanzaba a transferir los datos a esa velocidad.

LR2021-SDR también admite transmisión experimental, con señales de prueba de voz P25, datos de un sensor de temperatura y señales de control remoto OOK/FSK. En una de las pruebas, un receptor separado decodificó 72 tramas de voz P25 y recuperó el tono de prueba original. En otras, los datos del sensor de temperatura se recibieron con rtl_433 y las señales de control remoto reproducidas se decodificaron con un Flipper Zero. Por ahora la transmisión se limita a ráfagas cortas, y la transmisión continua y la voz en vivo siguen en desarrollo.

Una ráfaga del grabador I/Q con disparo de LakeShark, decodificada después: 2-FSK a 2400 baudios, sincronía D391 D391, carga útil de 4 bytes y verificación CRC-16

Una ráfaga del grabador I/Q con disparo de LakeShark, decodificada después. Es una señal 2-FSK a 2400 baudios, con sincronía D391 D391, carga útil de 4 bytes y verificación CRC-16.

LakeShark y el T-Display P4

LakeShark, el programa usado en las capturas de arriba, es otro firmware abierto del mismo desarrollador. Convierte el LilyGO T-Display P4 en un escáner SDR de mano que usa un dongle RTL-SDR externo. Con LR2021-SDR, la captura I/Q sale directo del transceptor Semtech LR2021 que la placa trae integrado, y LakeShark recibe y decodifica voz P25, mensajes POCSAG y FM analógica sin el dongle.

El repositorio del proyecto en GitHub incluye la biblioteca en C con licencia GPL-3.0, un firmware de captura independiente para el ESP32-P4, herramientas en Python, instrucciones de compilación y resultados de pruebas detallados. Se puede instalar LakeShark para decodificar en vivo con el equipo en la mano, o usar el firmware independiente para capturar muestras I/Q por USB y analizarlas en un computador. El proyecto sigue en fase experimental y requiere una placa con LR2021 y una antena adecuada.