Instalando radiosonde_auto_rx en una Raspberri Pi

Algunas de las opciones para hacer un seguimiento de las radiosondas meteorológicas son:

  • Ordenador personal con un software SDR como SDRAngel y un dongle USB SDR
  • Raspberry Pi Ordenador personal con radiosonde_auto_rx y un dongle USB SDR
  • ESP32 433 MHZ Lora con rdzTTGOsonde (Que ya hemos analizado aquí)




radiosonde_auto_rx

Para ello vamos a necesitar


1. Preparar la Rasberry Pi

  • Conectarse: usurio y contraseña
  • Permitir la escritura: rpi-rw
  • Actualizar sistema operativo:sudo apt-get update

2. Instalar las dependencias de RadioSonde

sudo apt-get install python3-pip python3-dev librtlsdr-dev sox libfann-dev git

3. Clonar e instalar radiosonde_auto_rx

  • git clone https://github.com/projecthorus/radiosonde_auto_rx.git
  • cd radiosonde_auto_rx/auto_rx/
  • pip3 install -r requirements.txt

    • 3b. si da problemas la instalación hacer  
      • pip3 install --upgrade setuptools wheel
      • pip3 install markupsafe==2.0.1 werkzeug==2.0.3
      • pip3 install flask==2.0.3
      • pip3 install -r requirements.txt

4. Instalar las librerias matemáticas que necesita el programa

  • sudo apt-get install libopenblas-dev libatlas-base-dev
  • cd ~/radiosonde_auto_rx/auto_rx/ 
  • ./build.sh

5. Configurar

Si se usa la Raspberry Pi para otras aplicaciones que hacen uso del USB SDR y con el fin de que no entren en conflicto (No pueden funcionar simultaneamente dos o más aplicaciones que usen el USB-SDR, si bien podrian tenerse varios USB SDR uno para cada aplicación) 

Buscar el nombre correcto del fichero de configuración que terminara en .example o .default (en nuestro caso station.cfg.example) y editar con nano: 

ls -F

cp nombre_corecto.example station.cfg

nano ~/radiosonde_auto_rx/auto_rx/station.cfg

  • Asegúrar que 
    • device_idx = 0
  • Ajustar el escaneo a las que vaya a seguir (Peninsula Ibérica y Canarias):
    • min_freq = 401.0  
    • max_freq = 405.5
  • Ajustar las coordenadas de la estacion, si acambia de QTH debe actualizar esta sección
    • [location]                                             
    • station_lat = 0.0 
    • station_lon = 0.0                                        
    • station_alt = 0.0 
  • Ajustar el email de contacto
    • sondehub_contact_email = xxx@xxx.xx
  • Ajustar si se quiere subir a APRS
    • [aprs]            
    • # Enable APRS upload (you will also need to change some options below!)
    • aprs_enabled = False             
    • # APRS-IS Login Information
    • # The aprs_user field can have an SSID on the end if desired, i.e. N0CALL-4
    • aprs_user = N0CALL    
    • # APRS-IS Passcode. You can generate one for your callsign here: https://apps.m>
    • aprs_pass = 00000 
  • Cualquier otra variable que vea de interes cambiar
  • Listado de parametros
    • cat ~/radiosonde_auto_rx/auto_rx/station.cfg | grep -v "^#" | grep -v "^$"

6. Lanzamiento manual

Si se va usar otro servicio/programa hay que asegurarse de que esté parado

sudo systemctl stop radiosonde_auto_rx  

Para usar radiosonde_auto_rx (El modo automático):

Debes cerrar cualquier proceso  que use SDR (p.e.) de rtl_fm o direwolf primero:

sudo killall rtl_fm direwolf
cd /home/pi-star/radiosonde_auto_rx/auto_rx/          
python3 auto_rx.py -c station.cfg   

o

python3 ~/radiosonde_auto_rx/auto_rx/auto_rx.py -c ~/radiosonde_auto_rx/auto_rx/station.cfg

7 - Seguimiento 

LOG

pi-star@pi-star(rw):auto_rx$ python3 auto_rx.py -c station.cfg
2026-03-03 10:10:21,213 INFO:Reading configuration file...                      
2026-03-03 10:10:21,261 WARNING:Config - Web Password not set, disabling web con
trol                                                                            
2026-03-03 10:10:25,246 INFO:Config - Tested RTLSDR #0 OK                       
2026-03-03 10:10:25,255 INFO:Started Flask server on http://0.0.0.0:5000        
2026-03-03 10:10:25,261 INFO:Telemetry Logger - Started Telemetry Logger Thread.
2026-03-03 10:10:25,266 INFO:OziMux - Started OziMux / Payload Summary Exporter 
2026-03-03 10:10:25,271 INFO:Sondehub Uploader - Started Sondehub Uploader Threa
d.                                                                              
2026-03-03 10:10:26,226 INFO:Version - Local Version: 1.8.2 - Up to date!       
2026-03-03 10:10:26,252 INFO:Sondehub Uploader - Uploaded station information to
 Sondehub.                                                                      
2026-03-03 10:10:28,228 INFO:Task Manager - SDR #0 has been allocated to Scanner
.                                                                               
2026-03-03 10:10:32,088 INFO:Scanner (RTLSDR 0) - Starting Scanner Thread       
2026-03-03 10:10:32,092 INFO:Scanner (RTLSDR 0) - Running frequency scan.       

Si queremos conectarnos al log y ver su contenido

cd ~/radiosonde_auto_rx/auto_rx/log/ 

ls -lh
  • -rw-r--r-- 1 pi-star pi-star  831 Mar  4 14:03 20260304-125924_M10-309-2-13942_M10_403401_sonde.log                                   
  • -rw-r--r-- 1 pi-star pi-star 9.8K Mar  4 23:22 20260304-205618_system.log       
  • -rw-r--r-- 1 pi-star pi-star    0 Mar  3 08:59 log_files_go_here.txt            
  • -rw-r--r-- 1 pi-star pi-star  49K Mar  4 13:46 log_power_0.csv 
Los ficheros
  • 20260304-205618_system.log contiene información sobre el funcionamiento del programa
  • 20260304-125924_M10-309-2-13942_M10_403401_sonde.log contiene información sobre la sonda de la cual se han recibido tramas, indicando el contenido de las mismas:  ID, Timestamp, latitud y longitud, Altitud,  temperatura, humedad,el voltaje de la batería de la sonda, etc.
  • log_power_0.csv  es un archivo de valores separados por comas (CSV) que guarda los niveles de señal que recibe tu SDR #0. Sirve para analizar el ruido de fondo de tu zona.

Si encuentra una sonda generará un fichero del tipo auto_rx_AAAA-MM-DD.log que podremos localizar con 

find ~/radiosonde_auto_rx -name "*.log" 

Para analizar un fichero de Log como por ejemplo  20260304-125924_M10-309-2-13942_M10_403401_sonde.log que contiene los datos de ID, Timestamp, latitud y longitud, Altitud,  temperatura, humedad,el voltaje de la batería de la sonda, etc.

tail -n 50 log_power_0.csv 

cat /home/pi-star/radiosonde_auto_rx/auto_rx/log/20260304-125924_M10-309-2-13942_M10_403401_sonde.log
  • timestamp,serial,frame,lat,lon,alt,vel_v,vel_h,heading,temp,humidity,pressure,type,freq_mhz,snr,f_error_hz,sats,batt_v,burst_timer,aux_data                     
  • 2026-03-04T12:59:24.000Z,M10-309-2-13942,1456664382,38.41766,-1.45537,31633.8,7.1,12.4,198.4,-47.4,0.4,-1.0,0x9F,403.401,5.4,751,11,4.9,,                       
  • 2026-03-04T13:00:44.000Z,M10-309-2-13942,1456664462,38.40920,-1.46029,32077.6,5.3,13.4,179.9,-45.7,0.4,-1.0,0x9F,403.401,5.1,751,11,4.9,,                       
  • 2026-03-04T13:02:13.000Z,M10-309-2-13942,1456664551,38.40439,-1.46024,32586.0,4.5,12.8,190.5,-45.4,0.7,-1.0,0x9F,403.401,5.4,375,10,4.9,,                       
  • 2026-03-04T13:02:34.000Z,M10-309-2-13942,1456664572,38.40308,-1.46114,32694.0,4.6,12.7,186.4,-44.9,0.7,-1.0,0x9F,403.401,6.1,751,10,4.9,,                       
  • 2026-03-04T13:03:22.000Z,M10-309-2-13942,1456664620,38.40244,-1.46114,32616.0,-39.6,1.9,310.0,-46.4,0.9,-1.0,0x9F,403.401,7.0,751,10,4.9,,  
                                                                              

8. comprobaciones

¿Está ejecutándose el programa?

ps -ef | grep auto_rx.py

  • pi-star  26844 25276  0 18:36 pts/0    00:00:00 grep --color=auto auto_rx.py

¿Está la web lanzada y accesible (crurl es un browser de linea)?

curl -I http://localhost:5000
  • curl: (7) Failed to connect to localhost port 5000: Connection refused  (Aqui vemos que el firewall bloquea la conexión)
El error visto en el navegador cuando se intenta la conexión a http://192.168.1.97:5000/
(La IP se obtiene con un programa como IPScan)

Consulta del estado

pi-star@pi-star(rw):~$ sudo systemctl status autorx.service --no-pager -l
● autorx.service - Rastreador de Sondas EA5JTT
     Loaded: loaded (;;file://pi-star/etc/systemd/system/autorx.service/etc/syst
emd/system/autorx.service;;; enabled; vendor preset: enabled)                   
     Active: active (running) since Mon 2026-04-06 11:27:25 CEST; 1h 37min ago
    Process: 632 ExecStartPre=/usr/bin/sudo /sbin/iptables -I INPUT 1 -p tcp --d
port 5000 -j ACCEPT (code=exited, status=0/SUCCESS)                             
   Main PID: 1100 (python3)                                                     
      Tasks: 24 (limit: 1716)                                                   
        CPU: 1h 22min 30.921s                                                   
     CGroup: /system.slice/autorx.service                                       
             ├─ 1100 /usr/bin/python3 /home/pi-star/radiosonde_auto_rx/auto_rx/a
uto_rx.py -c /home/pi-star/radiosonde_auto_rx/auto_rx/station.cfg               
             ├─12573 /bin/sh -c timeout -k 30  10 rtl_fm -M raw -F9 -p 1 -d 0 -s
 48000 -f 403000000 - 2>/dev/null | ./dft_detect -t 5 --iq --bw 15 --dc - 48000 
16 2>/dev/null                                                                  
             ├─12575 timeout -k 30 10 rtl_fm -M raw -F9 -p 1 -d 0 -s 48000 -f 40
3000000 -                                                                       
             ├─12576 ./dft_detect -t 5 --iq --bw 15 --dc - 48000 16             
             └─12577 rtl_fm -M raw -F9 -p 1 -d 0 -s 48000 -f 403000000 -        
                                                                                
Apr 06 12:51:08 pi-star python3[1100]: 2026-04-06 12:51:08,231 INFO:Scanner (RTL
SDR 0) - Scanning only frequencies (MHz): [401.  401.5 402.5 403.  403.4 404.  4
04.4 405.5]                                                                                                                                       
Apr 06 12:54:02 pi-star python3[1100]: 2026-04-06 12:54:02,652 INFO:APRS-IS - Up
loaded to APRS-IS: EA5JTT>APRARX,SONDEGATE,TCPIP,qAR,EA5JTT:!3937.56N/00109.60W`
radiosonde_auto_rx SondeGate v1.8.2 !w!!!   

9. Conectarnos a la web

Previamente hay que modificar el modo por defecto

sudo nano /etc/fstab

Cambia ro por rw en las líneas de la partición principal (la que apunta a /). Debería quedar algo parecido a esto:

/dev/mmcblk0p2  /  ext4  defaults,noatime,rw  0  1

sudo nano /etc/rc.local

Hay que añadir una línea en el firewall justo antes de la línea que dice exit 0 para permitir la conexión

iptables -I INPUT -p tcp --dport 5000 -j ACCEPT

De forma manual

sudo iptables -I INPUT 1 -p tcp --dport 5000 -j ACCEPT

Sin embargo mas eficaz hacer

  • sudo sed -i '/iptables -A INPUT -p tcp --dport 80/a sudo iptables -A INPUT -p tcp --dport 5000 -j ACCEPT' /usr/local/bin/pistar-firewall
  • sudo pistar-firewall

Comprobación de que el puerto está abierto para poder acceder al servior web por el puerto 5000

sudo iptables -L -n | grep 5000

Comprobación local de que la web está activa y accesible

curl -I http://localhost:5000

HTTP/1.0 200 OK   
Content-Type: text/html; charset=utf-8  
Content-Length: 85252      
Server: Werkzeug/2.0.3 Python/3.9.2                       
Date: Thu, 05 Mar 2026 16:01:32 GMT 
 
Combrobación desde un navegador en la misma red 

http://192.168.1.xx:5000

Si va en local y no en remoto puede ser el firewall, hacer

sudo iptables -I INPUT 1 -p tcp --dport 5000 -j ACCEPT

Comprobacion

sudo netstat -plnt | grep 5000

  • tcp   0      0 0.0.0.0:5000    0.0.0.0:*   LISTEN 24960/python3           

10 - Comprobar que se suben los datos a Internet por ejemplo con https://sondehub.org/

Porcentaje de tramas recibidas representads con  Grafana

Recepción de una trama

Relación de tramas recibidas y coberturas



11a - Arranque automático (Este usando rc.local da error y no arranca)

Scrip de arranque

rpi-rw

nano /home/pi-star/start_autorx.sh

#!/bin/bash
sleep 10  # Espera a que el sistema cargue bien
cd /home/pi-star/radiosonde_auto_rx/auto_rx/
python3 auto_rx.py -c station.cfg > /home/pi-star/radiosonde_auto_rx/auto_rx/log/boot_debug.log 2>&1 &

chmod +x /home/pi-star/start_autorx.sh

Inclusión del scrip en el boot

sudo nano /etc/rc.local
  • # Arrancar el rastreador de sondas de EA5JTT
  • /home/pi-star/start_autorx.sh
  • # Abrir el puerto del mapa
  • iptables -I INPUT -p tcp --dport 5000 -j ACCEPT

11b - arranque automatico como servicio

rpi-rw

sudo nano /etc/systemd/system/autorx.service

[Unit]
Description=Rastreador de Sondas EA5JTT
After=network.target
[Service]
Type=simple
User=pi-star
WorkingDirectory=/home/pi-star/radiosonde_auto_rx/auto_rx/
# Abrir el puerto 5000 antes de lanzar el programa
ExecStartPre=/usr/bin/sudo /sbin/iptables -I INPUT 1 -p tcp --dport 5000 -j ACCEPT
ExecStart=/usr/bin/python3 /home/pi-star/radiosonde_auto_rx/auto_rx/auto_rx.py -c /home/pi-star/radiosonde_auto_rx/auto_rx/station.cfg
# (Opcional) Cerrar el puerto al apagar el servicio para mantener la seguridad
ExecStopPost=/usr/bin/sudo /sbin/iptables -D INPUT -p tcp --dport 5000 -j ACCEPT
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target

Registrar, poner disponible y arrancar

sudo systemctl daemon-reload

sudo systemctl enable autorx.service

sudo systemctl start autorx.service

Comprobación

sudo systemctl status autorx.service

● autorx.service - Rastreador de Sondas EA5JTT
     Loaded: loaded (/etc/systemd/system/autorx.service; enabled; vendor preset>
     Active: active (running) since Thu 2026-03-05 10:05:09 CET; 8min ago
   Main PID: 3854 (python3)                                                     
      Tasks: 24 (limit: 1716)                                                   
        CPU: 12min 10.283s                                                      
     CGroup: /system.slice/autorx.service                                       
             ├─3854 /usr/bin/python3 /home/pi-star/radiosonde_auto_rx/auto_rx/a>
             ├─5506 /bin/sh -c timeout -k 30  10 rtl_fm -M raw -F9 -p 1 -d 0 -s>
             ├─5507 timeout -k 30 10 rtl_fm -M raw -F9 -p 1 -d 0 -s 48000 -f 40>
             ├─5508 ./dft_detect -t 5 --iq --bw 15 --dc - 48000 16              
             └─5510 rtl_fm -M raw -F9 -p 1 -d 0 -s 48000 -f 403000000 -         
                                                                                
Mar 05 10:05:26 pi-star python3[3854]: 2026-03-05 10:05:26,414 INFO:Task Manage>


sudo systemctl status autorx.service  --no-pager -l 


parada temporal

sudo systemctl stop autorx.service

rearranque

sudo systemctl restart autorx.service

que no arranque

sudo systemctl disable autorx.service

mensajes

journalctl -u autorx.service -f

  • - Journal begins at Thu 2026-03-05 09:30:11 CET. -- Mar 05 10:06:47 pi-star python3[3854]: 2026-03-05 10:06:47,818 INFO:Scanner (RTL SDR 0) - Scanning only frequencies (MHz): [401.  402.5 403.  403.4 404.  405.5] 


12 - Rearranque manual

sudo reboot


13- Añadir redes WiFi

  • rpi-rw
  • sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
  • Añadir al final del fichero y salir con CTRL-O, intro y CTRL-X, poniendo un "priority" con valor menor a las anteriores
    • network={ 
      •  ssid="Nombre_De_Tu_Red_1" 
      • psk="Contraseña_Red_1" 
      • id_str="Casa" 
      •  priority=10 } 

Mis dos últimos consejos: 

  • Tenga un adaptador ethernet y cable pues es la forma segura de tener el control con la Raspberry Pi en caso de error
  • Tenga siempre abierta su IA preferida, en mi caso https://gemini.google.com/ que será su mejor aliada en este tipo de batallas


Conclusiones 

radiosonde_auto_rx  con SDR es mas sensible que rdzTTGOsonde con ESP32 LoRa 433, y con mejores herramientas, si bien tambien supone una mayor inversión en tiempo y dinero

Referencias
  • Datos de radiosondas recibidos en Elx meteoelx


Advertencia importante

Las modificaciones, configuraciones y procedimientos descritos en este sitio pueden implicar riesgos técnicos, legales o de seguridad. El autor no se responsabiliza del mal funcionamiento de los equipos, daños permanentes, pérdida de garantía ni de posibles infracciones legales derivadas del uso de esta información.
El lector asume plena responsabilidad por cualquier acción que decida realizar basándose en el contenido de este blog.


© 2026 EA5JTT. Queda prohibida la reproducción total o parcial sin autorización expresa del autor.

No hay comentarios:

Publicar un comentario

Instalando AIS en una Raspberri Pi

En una entrada anterior se ha descrito el sistema AIS (Automatic Identification System) de localización de embarcaciones, ahora vamos a pro...