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 instalar radiosonde_auto_rx vamos a necesitar:
- Una antena onmidireccional o direccional en la dirección en la que nos lleguen las radiosondas a nuestra localización para la banda de 403 MHz, valdría una de la banda de UHF o 430 MHZ de radioaficionados. ver evaluación de la antena propuesta
- Un filtro pasa banda de 403 MHz(no imprescindible, conveniente en entornos urbanos o con señales de RF potentes en los alrededores). Se ha comprobado una mejora muy importante del numero de sondas recibidas y el numero de tramas recibidas de cada una de ellas
- Una Raspberry Pi, en nuestro caso reusaremos una instlación de Pi-Star que teníamos parada, pero es preferible usar una Raspberry Pi limpia. Usar una Raspberry Pi con Pi-Star instalado u otro sistema cerrado no es una buena idea pues Pi-Star es un sistema muy optimizado, estable y cerrado, por ello no tiene una distribución Linux al uso sino que unicamente tiene lo mínimo imprescindible, por otra parte tiene muchos directorios protegidos y por ultimo y el mayor problema para nuestra instalación es que cuando arranca borra todo lo que encuentra que para él es basura y repone permisos, por lo que sin tocar nada un dia va y otro tras un haberlo apagado no, pero es una opción inmediata para probar y aprender ... a base de palos
- Un dongle o pincho SDR USB, que nos vale un clon v3 como es el "verde" pues va a trabajar en 403 MHz
Cada instalación en una Raspberri Pi es un mundo por lo que mi consejo es que se habra una sesión en su IA preferida (p.e. Gemini) y téngala como compañera a la que consultar dudas y errores
1. Preparar la Rasberry Pi
Conectarse (En una Pi-star entrar con navegador en la IP asignada y en configuración ir a Expert y a la conexión usuario:pi-star contraseña: raspberry):- usuario y contraseña
- rpi-rw
- si dice bash: rpi-rw: orden no encontrada es que no es necesario pues ya está en escritura.
- sudo apt-get update
- Puede pedir contraseña
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
- Si da problemas la instalación hacer
- cd radiosonde_auto_rx/auto_rx/
- 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
- si da erroress
- pip3 install -r requirements.txt --break-system-packages
- pip3 install -r requirements.txt --break-system-packages --no-warn-script-location
4. Instalar las librerias matemáticas que necesita el programa y compilar
- sudo apt-get install libopenblas-dev libatlas-base-dev
- Si da error
- sudo apt-get update && sudo apt-get install -y libopenblas-dev gfortran
- 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
- autorx/ dft_detect* m20mod* rs92mod*
- auto_rx.py fsk_demod* meisei100mod* station.cfg
- auto_rx.service imet4iq* mk2a1680mod* station.cfg.example
- auto_rx.sh* imet54mod* mp3h1mod* station.cfg.example.network
- build.sh* iq_dec* mts01mod* test/
- clean.sh* lms6Xmod* rd94rd41drop* utils/
- config.py log/ requirements.txt weathex301d*
- dfm09mod* m10mod* rs41mod*
- cp nombre_corecto.example station.cfg
- salvar el ejemplo
- cp station.cfg station.cfg.bak
- Recuperar un fichero de configuración anterior si lo tenemos
- cp /juanpa/station.cfg.bak station.cfg
- Modificar el ejemplo
- 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 del programa
Si se va usar otro servicio/programa en la misma Raspberry Pi hay que asegurarse de que esté parado
- sudo systemctl stop XXXXXX
- sudo docker compose ps
- sudo docker compose down
Para usar radiosonde_auto_rx (El modo automático):
Debes cerrar cualquier proceso que use SDR que haya arrancado (p.e.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
Arranque con rutas absolutas
- python3 ~/radiosonde_auto_rx/auto_rx/auto_rx.py -c ~/radiosonde_auto_rx/auto_rx/station.cfg
7 - Seguimiento del proceso
LOG
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 control
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 Thread.
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
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
- 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.
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: (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) |
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
Modificar la tabla
- 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 https://grafana.v2.sondehub.org/ |
![]() |
| 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/bashsleep 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
- # 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
Description=Rastreador de Sondas AutoRX
After=network.target
[Service]
WorkingDirectory=/home/pi-star/radiosonde_auto_rx/auto_rx/
ExecStart=/usr/bin/python3 auto_rx.py -c station.cfg
Restart=always
RestartSec=30
User=pi-star
[Install]
WantedBy=multi-user.target
sudo nano /etc/systemd/system/autorx.service
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
- cd /home/pi-star/radiosonde_auto_rx/auto_rx/
- 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
Hacer 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]
- sudo journalctl -u autorx.service -n 20 --no-pager
12 - Rearranque manual
- sudo reboot
13- Añadir redes WiFi
rpi-rwsudo 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 }
14 - Históricos
Los historicos con las tramas recibidas se guardan en /home/pi-star/radiosonde_auto_rx/auto_rx/log/ se puede ver el directorio con:
ls s /home/pi-star/radiosonde_auto_rx/auto_rx/log/
20260422-014254_X2822441_RS41_403001_sonde.log
20260422-045729_U4454564_RS41_403000_sonde.log
20260422-124944_X2813314_RS41_405500_sonde.log
20260422-131931_V4410158_RS41_403001_sonde.log
PAra ver el contenido
cat /home/pi-star/radiosonde_auto_rx/auto_rx/log/20260423-132447_M10-309-2-13415_M10_403400_sonde.log
pe,freq_mhz,snr,f_error_hz,sats,batt_v,burst_timer,aux_data
2026-04-23T13:24:46.000Z,M10-309-2-13415,1460985904,37.97806,-0.49710,14407.3,-7
.3,23.3,118.7,-58.9,0.0,-1.0,0x9F,403.400,8.4,375,10,4.8,,
Es bueno hacer una copia de respaldo des esta carpeta
sudo cp -r /home/pi-star/radiosonde_auto_rx/auto_rx/log/ /juanpa/log_backup/
PAra copiar ficheros de log en el ordenador personas dese la raspberry Pi (Ejemplo para macOS, a ejecutar en la consola del sistema mac)
scp pi-star@pi-star.local:/home/pi-star/radiosonde_auto_rx/auto_rx/station.cfg ~/Desktop/
station.cfg 100% 29KB 715.8KB/s 00:00
Mis últimos consejos:
- Si puede use una raspberry Pi dedicada y no aproveche una Pi-Star pues está muy capada
- Use una fuente de alimentación con capacidad suficiente para alimentar a la Raspberry pi y al SDR-USB (consume mucho y se calienta)
- 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
- radiosonde_auto_rx
- Datos de radiosondas recibidos en Elx meteoelx
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