En la primera parte del fichero .ino del rs41-nfw vienen las definiciones generales y las especiíficas de los diversos modos en los que es capaz de trabajar:
- PIP
- CW
- APRS
- RTTY
- FOX
- HORUS V2
- HORUS V3
En todos ellos puede ponerlos activos (true) o inactivos (false)
(No se ha probado si funciona correctamente con dos o mas modos activos)
LED DOBLE DE LA PLACA
Secuencia de arranque de rs41-nfw cuando se pulsa el interruptor rojo
Secuencia de arranque correcta
- rojo
- rojo y verde (naranja)
- rojo y verde (naranja) intermitente 2 por segundo
- rafaga de 5 verdes => Fin arranque
- rojo y verde (naranja) intermitente 2 seguidos
- verde intermitente
- verde fijo => OK
Secuencia de arranque erronea por baterias bajas
- rojo
- naranja
Secuencia de parada del rs41-nfw cuando se pulsa el interruptor rojo
- rojo intermitente 3 ó 4 veces
Significado
Durante el arranque:
- Rojo parpadea 3 veces: condiciones incorrectas para la calibración
de humedad cero; se sale de la calibración.
- Rojo parpadea 5 veces: calibración de humedad cero cancelada debido
a un error en el brazo del sensor.
- Rojo fijo: inicialización del hardware.
- Naranja fijo: inicialización del brazo del sensor y del circuito
de calefacción, y también inicialización parcial del GPS.
- Naranja intermitente breve: calibración en curso, ya sea reacondicionamiento,
corrección de temperatura o comprobación de humedad cero.
- Verde parpadea 5 veces: configuración del firmware completada,
ingreso al programa principal
Durante el funcionamiento:
- Rojo fijo: error importante, como error en el brazo del sensor,
error de calibración inicial del sensor, error de conexión RPM411 (si está configurado).
- Naranja fijo: advertencia, como falta de señal GPS o voltaje
de la batería por debajo de 'vBatWarnValue'.
- Naranja intermitente: modo de rendimiento GPS mejorado habilitado y
la sonda sigue buscando satélites.
- Verde intermitente: modo de rendimiento GPS mejorado habilitado y
la sonda ha encontrado varios satélites y pronto volverá al modo listo para volar.
- Verde fijo: todos los sistemas funcionan correctamente y sin errores; la sonda está lista para ser lanzada.
La información del LED para el caso del GPS depende de la opción
de gpsOprationmode del .ino
0 - Totalmente desactivado (uso estacionario, como en una estación meteorológica;
las coordenadas estacionarias se pueden especificar en gpsLat-gpsLong)
1 - Por defecto, siempre activado;
2 - Ahorro de energía estándar en posición estable (solo RSM4x2;
función antigua que reduce el consumo cuando la señal GPS es fuerte;
vuelve automáticamente al máximo rendimiento cuando es necesario).
3 - Gestión inteligente de GPS: algoritmo disponible solo para placas
RSM4x4. Este algoritmo, junto con las funciones Super-S, PSMCT, ITFM,
constelaciones y mensajes GNS del GPS M10 u-blox, permite una mejora
considerable en el consumo de energía y la resistencia a interferencias.
LED DEL GPS (bajo el chip)las coordenadas estacionarias se pueden especificar en gpsLat-gpsLong)
1 - Por defecto, siempre activado;
2 - Ahorro de energía estándar en posición estable (solo RSM4x2;
función antigua que reduce el consumo cuando la señal GPS es fuerte;
vuelve automáticamente al máximo rendimiento cuando es necesario).
3 - Gestión inteligente de GPS: algoritmo disponible solo para placas
RSM4x4. Este algoritmo, junto con las funciones Super-S, PSMCT, ITFM,
constelaciones y mensajes GNS del GPS M10 u-blox, permite una mejora
considerable en el consumo de energía y la resistencia a interferencias.
Verde intermitente (Funciona del GPS)
MODOS
Parámetros comunes a todos los modos
Potencia de emisión
// TX power, 0 = -1dBm (~0.8mW), 1 = 2dBm (~1.6mW),
2 = 5dBm (~3 mW), 3 = 8dBm (~6 mW), 4 = 11dBm (~12 mW),
5 = 14dBm (25 mW), 6 = 17dBm (50 mW), 7 = 20dBm (100 mW)
PIP
Emitir un pitido de forma intermitente
// Pip:
bool pipEnable = false; // Enable pip tx mode (carrier)
constexpr float pipFrequencyMhz = 432.7; // Pip tx frequency
constexpr uint16_t pipLengthMs = 100; // Pip signal length in ms
constexpr uint16_t pipRepeat = 3; // Pip signal repeat count in 1 transmit window
constexpr int8_t pipRadioPower = 7;
Transmite en Morse
La velocidad de transmisión viene fijada por el parámtro morseUnitTime
que por defecto es de 40, que es una velocidad muy alta para la
decodificación manual
Tabla con los valores
| Valor (ms) | Velocidad (WPM) | Sensación |
| 40 | 30 | Muy rápido (Nivel experto) |
| 60 | 20 | Rápido pero legible |
| 80 | 15 | Velocidad ideal para pruebas |
| 100 | 12 | Lento y muy claro |
Parámetros
// Morse:
// bool morseEnable = true; // Enable morse tx mode
bool morseEnable = false; // disable morse tx mode
constexpr float morseFrequencyMhz = 434.6; // Morse tx frequency
constexpr uint16_t morseUnitTime = 40; // Morse unit time
constexpr int8_t morseRadioPower = 7;
Se modifica:
- La velocidad a 100, que representa unas 12 ppm
- La potencia a 6 unos 100 mW
Se prueba recibiendo la señal con RTL-SDR &SDR++ sin problemas y
se recibe el indicativo y la telemetria en formato UKHAS, sin embargo solamente he decodificado el indicativo, 29 numeros y un D1D final
| Campo | Longitud (aprox.) | Significado y Formato |
| Indicativo | 6-9 caracteres | Tu MYCALL (ej: EA5JTT). |
| Altitud | 4-5 dígitos | lastGpsAlt Altitud en metros (sin unidad). Ej: 12500. |
| Temperatura | 2-3 caracteres | mainTemperatureValue Temperatura del sensor principal (con signo si es bajo cero). Ej: -45 o 22. |
| Voltaje | 2 dígitos | batVFactor Voltaje de batería multiplicado por 10 (para no enviar el punto decimal). Ej: 24 significa 2.4V. |
| Satélites | 2 dígitos | gpsSats Número de satélites en lock. Ej: 09 o 24. |
Falta conocer exactamente el formato y significado de los datos transmitidos
APRS
Para trabajar con APRS además de configurar el modo APRS en el programa rs41-nfw se deberá disponer de un iGate próximo que funcione como AFSK 1200 (audio analógico modulado en FM) en 432,500 MHz, no sirven los mas populares en esta banda que lo hacen con modulación LoRa en 433,775 MHz por lo que no valdrá el iGate visto en APRS Automatic Packet Reporting System: Una nueva aproximación a esta red ni tampoco el APRS digital
iGate APRS AFSK UHF
En este punto se ha probado configurar el igate sobre un ordenador personal, en nuestro caso macOS & SDR y sobre una raspberry Pi con SDR
Hay dos lecciones importantes que se han aprendido
- La libreria usada rtl_fm funciona bien para SDR V3 (originales RTl-SDR o clon), pero no funciona para SDR V4 (RTL-SDR)
- La frecuencia configurada en rs41-nfw de 432,500 MHz termina siendo en real 433,780 MHz como se puede comprobar con un programa como SDR++ & SDR o con un walkie-Talkie
Instalando sobre un ordenador personal
Se puede hacer de dos formas, aprovechando la salida de un programa SDR para mediante una aplicación como blackhole 2 CH llevarla al decodificador APRS que es Direwolf o hacerlo directamente desde consola (Esta ultima es por la que finalmente se optó)
Mediante programa
- Instalar Blackhole 2CH y reiniciar
- Instalar Direwolf, en macOS hacer en la consola
- brew install direwolf
- Probar la instalación con direwolf -v y si da probremas hacer brew install portaudio hamlib gpsd direwolf
- Configurar el SDR (p.e.e RTL-SDR) y el software (p.e. GQRX, CubicSDR, etc.).
- Sintonía: la frecuencia real a la que está transmitiendo la radiosonda
- Modo: NFM (Narrow FM)
- Ancho de banda (Bandwidth): 12 kHz
- Salida de Audio: Cambia la salida del programa SDR de "Altavoces" a "BlackHole 2ch".
- Crear archivo de configuración direwolf.conf
ADEVICE BlackHole2ch
CHANNEL 0
MYCALL NOCALL-10
MODEM 1200
AGWPORT 8000
KISSPORT 8001
# Si quieres que lo suba a internet (APRS-IS):
IGSERVER euro.aprs2.net 14580
IGLOGIN NOCALL12345 # <--- Aquí indicativo radioaficionado y va tu passcode de APRS
- Ejecutar en donde este direwolf.conf m que en En macOS en el terminal direwolf -c direwolf.conf
###############################################################
# CONFIGURACIÓN iGATE EA5JTT - macOS (Direwolf 1.8.1)
###############################################################
# 1. Identificación
MYCALL NOCALL-10
# 2. Entrada de Audio (SDR via stdin)
ADEVICE stdin null
CHANNEL 0
MODEM 1200
# 3. Servidor APRS-IS (Internet)
IGSERVER euro.aprs2.net
IGLOGIN NOCALL 123456
IGFILTER m/50
# 4. Opciones de Red (Versión 1.8)
IGVIA 0
# 5. Baliza de posición (Para que salgas en el mapa desde el Mac)
PBEACON sendto=IG delay=0:30 every=60:00 symbol="i" overlay=M lat=xx^xx.xxN long=xxx^xx.xxW comment="iGate macOS RS41 UPV NOCALL"
Mediante consola
Comando
rtl_fm -f 433.780M -s 24000 -g 25 | direwolf -c ~/sonda.conf -r 24000 -n 1 -D 1 -a 10 -t 0 -
LOG (En rojo la decodifiación de la trama APRS de la radiosonda)
Dire Wolf Release 1.8.1, November 2025
Includes optional support for: gpsd hamlib cm108-ptt dns-sd
Reading config file /Users/Juan/sonda.conf
Found 1 device(s):
0: Realtek, RTL2838UHIDIR, SN: 00000001
Using device 0: Generic RTL2832U OEM
Audio input device for receive: stdin (channel 0)
Audio out device for transmit: null (channel 0)
Audio input buffer has unexpected extreme size of 0 bytes.
Detected at /private/tmp/direwolf-20260228-81855-mmd526/direwolf-1.8.1/src/audio_portaudio.c, line 738.
This might be caused by unusual audio device configuration values.
Using 2048 to attempt recovery.
Audio output buffer has unexpected extreme size of 0 bytes.
Detected at /private/tmp/direwolf-20260228-81855-mmd526/direwolf-1.8.1/src/audio_portaudio.c, line 747.
This might be caused by unusual audio device configuration values.
Using 2048 to attempt recovery.
Channel 0: 1200 baud, AFSK 1200 & 2200 Hz, A+, 24000 sample rate, Tx AX.25.
Note: PTT not configured for channel 0. (OK if using VOX.)
When using VOX, ensure that it adds very little delay (e.g. 10-20) milliseconds
between the time that transmit audio ends and PTT is deactivated.
For example, if using a SignaLink USB, turn the DLY control all the
way counter clockwise.
Using VOX built in to the radio is a VERY BAD idea. This is intended
for voice operation, with gaps in the sound, and typically has a delay of about a
half second between the time the audio stops and the transmitter is turned off.
When using APRS your transmiter will be sending a quiet carrier for
about a half second after your packet ends. This may interfere with the
the next station to transmit. This is being inconsiderate.
If you are trying to use VOX with connected mode packet, expect
frustration and disappointment. Connected mode involves rapid responses
which you will probably miss because your transmitter is still on when
the response is being transmitted.
Read the User Guide 'Transmit Timing' section for more details.
Ready to accept AGW client application 0 on port 8000 ...
Ready to accept KISS TCP client application 0 on port 8001 ...
DNS-SD: Announcing KISS TCP on port 8001 as 'Dire Wolf on mbp-de-juan-2'
Found Rafael Micro R820T tuner
Tuner gain set to 25.40 dB.
Tuned to 434032000 Hz.
Oversampling input by: 42x.
Oversampling output by: 1x.
Buffer size: 8.13ms
Exact sample rate is: 1008000.009613 Hz
Sampling at 1008000 S/s.
Output at 24000 Hz.
Now connected to IGate server euro.aprs2.net (193.237.219.53)
Check server status here http://193.237.219.53:14501
[ig] # aprsc 2.1.19-g730c5c0
[ig] # logresp EA5JTT verified, server T2UK
[ig] EA5JTT-10>APDW18:!3928.91NM00020.67W#iGate macOS RS41 UPV EA5JTT
EA5JTT-11 audio level = 27(4/3) __|||____
[0.3] EA5JTT-11>APRNFW,WIDE2-1:!3928.92N/00019.87WO/A=000042/F33S24V2463C6I20T24H80P10225J0R4 NFWv65
Position, Original Balloon (think Ham balloon), UNKNOWN vendor/model
N 39 28.9200, W 000 19.8700, alt 13 m (42 ft)
/F33S24V2463C6I20T24H80P10225J0R4 NFWv65
ADEVICE0: Sample rate approx. 23.8 k, 0 errors, receive audio level CH0 34
Instalando sobre una Raspberry Pi
Finalment se decidió reusar una Raspberry Pi que tenía instalado el software Pi-STAR y conectado el hardware "Jumbospot UHF y VHF MMDVM" pensando que podría reusarse la parte de radio, sin embargo eso no fue posible por lo que se terminó conectando un SDR al puerto USB, que como ya se ha comentado debe ser V3 pues con V4 no se consiguió que funcionara
Por lo tanto no ganamos nada con el uso de la Pi-Star más allá de darle un nuevo uso ahora que se tenía parada.
Configurando en PI-Star (Raspberry Pi)
Una Pi-Star tanto si la compra ya montada como si se construye con una Raspberry Pi y un Jumpospot no deja de ser una Raspberry Pi a la cual se puede entrar sin problemas desde un navegador con la http://pi-star.local/ y en su consola llendo a la opción "Modo expert" SSH ACCESS
Al entrar hay que hacer logon introduciendo el User (por defecto pi-star) y Password (por defecto raspberry) y comenzar a instalr el software necesario.
Desbloquear la protección de escritura
rpi-rw
Comprobar si está instalado direwolf y en caso contrario instalarlo
whereis direwolf
Si está respondera algo como: direwolf: /usr/bin/direwolf /usr/share/direwolf /usr/share/man/man1/direwolf.1.gz
rpi-rw
sudo apt-get install direwolf -y
Comprobar si está instalado rtl-sdr y en caso contrario instalarlo
whereis rtl-sdr
Si está responderá algo como
rtl-sdrwhereis:
rtl-sdr: /usr/include/rtl-sdr.h
sudo apt-get update
sudo apt-get install rtl-sdr -y
Conectar pincho USB SDR (ojo solo he conseguido que funcionen los V3) y probar
rtl_test -t
Si lo localiza y funciona responderá algo como
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.
No E4000 tuner found, aborting.
Probar el SDR y su software
sudo modprobe -r dvb_usb_rtl28xxuCrear el fichero de configuración que hemos llamado /home/pi-star/igate_upv.conf con el editor nano
# Identificación del iGate
MYCALL NOCALL-10
# Conexión a la red APRS-IS
IGSERVER euro.aprs2.net
IGLOGIN NOCALL NOPASSWORD
# Configuración del canal de radio (SDR)
ADEVICE stdin null
CHANNEL 0
MODEM 1200
# Filtros y comportamiento (Lo que hablábamos)
IGVIA 0
IGFILTER m/50
# Baliza de posición (Para que salgas en el mapa)
PBEACON sendto=IG delay=0:30 every=60:00 symbol="i" overlay=R lat=xx^xx.xxN long=0xx^xx.xxW comment="iGate RS41"
Automatizacion con rc.local(NO FUNCIONA EN PI-STAR igual en Raspberry pura si)
- nano /home/pi-star/run_aprs.sh
- #!/bin/bash
- # Forzar modo escritura (necesario en Pi-Star)
- sudo mount -o remount,rw /
- # Liberar el driver de TV si está bloqueando el USB
- sudo modprobe -r dvb_usb_rtl28xxu 2>/dev/null
- # Lanzar el iGate con los parámetros probados
- rtl_fm -f 433.780M -s 24000 -g 25 | direwolf -c /home/pi-star/igate_upv.conf -r 24000 -n 1 -D 1 -t 0 -a 10 -
- chmod +x /home/pi-star/run_aprs.sh
- rpi-rw
Editar /etc/rc.local consudo nano /etc/rc.localañadirantes de "exit 0"sleep 10/home/pi-star/run_aprs.sh &Quitar automatización en caso de que no arranqueEditar /etc/rc.local consudo nano /etc/rc.localcomentar o quitar /home/pi-star/run_aprs.sh &- Escribe: nano /home/pi-star/.bashrc
- Ve al final del todo y añade esta línea:
- alias sonda='/home/pi-star/run_aprs.sh'
- Guardar y salir.
- Escribiendo "sonda" en la consola funcionará
Automatización como servicio (FUNCIONA)
Crear el fichero
sudo nano /etc/systemd/system/aprs-igate.service
- [Unit]
- Description=iGate APRS EA5JTT (Direwolf)
- After=network.target
- [Service]
- Type=simple
- User=pi-star
- WorkingDirectory=/home/pi-star/
- # Usamos /bin/bash -c para que la tubería "|" funcione correctamente
- ExecStart=/bin/bash -c "/usr/bin/rtl_fm -f 433.780M -s 24000 -g 25 | /usr/local/bin/direwolf -c /home/pi-star/igate_upv.conf -r 24000 -n 1 -D 1 -t 0 -a 10 -"
- Restart=always
- RestartSec=10
- [Install]
- WantedBy=multi-user.target
Registrar
sudo systemctl daemon-reload
Poner disponible
sudo systemctl enable aprs-igate.service
Arrancar
sudo systemctl start aprs-igate.service
Comprobar el estatus
sudo systemctl status aprs-igate.service --no-pager -l
Si funciona dará un mensaje como
aprs-igate.service - iGate APRS EA5JTT (Direwolf)
Loaded: loaded (;;file://pi-star/etc/systemd/system/aprs-igate.service/etc/
systemd/system/aprs-igate.service;;; enabled; vendor preset: enabled)
Active: active (running) since Thu 2026-04-16 18:40:23 CEST; 1min 22s ago
Main PID: 25831 (bash)
Tasks: 21 (limit: 1716)
CPU: 1min 5.011s
CGroup: /system.slice/aprs-igate.service
├─25831 /bin/bash -c /usr/bin/rtl_fm -f 433.775M -s 24000 -g 25 | /
usr/bin/direwolf -c /home/pi-star/igate_upv.conf -r 24000 -n 1 -D 1 -t 0 -a 10 -
├─25832 /usr/bin/rtl_fm -f 433.775M -s 24000 -g 25
└─25833 /usr/bin/direwolf -c /home/pi-star/igate_upv.conf -r 24000
-n 1 -D 1 -t 0 -a 10 -
Apr 16 18:40:38 pi-star bash[25833]: ADEVICE0: Sample rate approx. 24.0 k, 0 err
ors, receive audio level CH0 15
Apr 16 18:40:38 pi-star bash[25833]: [ig] # aprsc 2.1.15-gc67551b
Apr 16 18:40:38 pi-star bash[25833]: [ig] # logresp EA5JTT verified, server T2ST
RAS
Apr 16 18:40:48 pi-star bash[25833]: ADEVICE0: Sample rate approx. 24.2 k, 0 err
ors, receive audio level CH0 14
Apr 16 18:40:54 pi-star bash[25833]: [ig] EA5JTT-10>APDW16:!3928.91NR00020.67W#i
Gate RS41 UPV EA5JTT
Tambien se puede ver con
sudo journalctl -u aprs-igate.service -f
sudo journalctl -u aprs-igate.service -n 50 --no-pager
recargar servicios cuando se modifican
sudo systemctl daemon-reload
Donde estan lo comandos
which rtl_fm
/usr/bin/rtl_fm
which direwolf
/usr/bin/direwolf
which bash
/bin/bash
- Comprobación del voltaje
- vcgencmd get_throttled
- ok throttled=0x00000
- Fallo throttled=0x50000
- Comprobación de fecha
- date
- Sat 28 Feb 16:56:40 CET 2026
- comprobación de SDR-USB
- lsusb
- Bus 001 Device 005: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T
- Bus 001 Device 003: ID 0424:ec00 Microchip Technology, Inc. (formerly SMSC) SMSC 9512/9514 Fast Ethernet Adapter
- Bus 001 Device 002: ID 0424:9514 Microchip Technology, Inc. (formerly SMSC) SMC9 514 Hub
- Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
- comprobación Internet
- ping -c 3 google.com
- PING google.com (142.250.185.14) 56(84) bytes of data.
- 64 bytes from mad41s11-in-f14.1e100.net (142.250.185.14): icmp_seq=1 ttl=118 time=14.8 ms
- 64 bytes from mad41s11-in-f14.1e100.net (142.250.185.14): icmp_seq=2 ttl=118 time=14.2 ms
- 64 bytes from mad41s11-in-f14.1e100.net (142.250.185.14): icmp_seq=3 ttl=118 time=14.7 ms
- --- google.com ping statistics ---
- 3 packets transmitted, 3 received, 0% packet loss, time 2003ms rtt min/avg/max/mdev = 14.232/14.580/14.824/0.252 ms
- Comprobacion procesos
- ps aux | grep direwolf
- Comprobación direcworf
- direwolf -c /home/pi-star/igate_upv.conf
- comporbacion errores
- sudo journalctl -u rc.local -f
- -- Journal begins at Fri 2024-09-06 00:06:17 CEST. --
- Limpieza de procesos por si se queda zombie
- sudo killall direwolf rtl_fm
EL COMANDO (probado y funciona OK)
rtl_fm -f 433.780M -s 24000 -g 25 | direwolf -c /home/pi-star/igate_upv.conf -r 24000 -n 1 -D 1 -t 0 -a 10 -
Si todo va bien sacará un log como
ound 1 device(s):
0: Realtek, RTL2838UHIDIR, SN: 00000001
Using device 0: Generic RTL2832U OEM
Found Rafael Micro R820T tuner
Tuner gain set to 25.40 dB.
Tuned to 434032000 Hz.
Oversampling input by: 42x.
Oversampling output by: 1x.
Buffer size: 8.13ms
Exact sample rate is: 1008000.009613 Hz
Allocating 15 zero-copy buffers
Sampling at 1008000 S/s.
Output at 24000 Hz.
Dire Wolf version 1.6
Includes optional support for: gpsd hamlib cm108-ptt
Reading config file /home/pi-star/igate_upv.conf
Audio input device for receive: stdin (channel 0)
Audio out device for transmit: null (channel 0)
Channel 0: 1200 baud, AFSK 1200 & 2200 Hz, E+, 24000 sample rate.
Note: PTT not configured for channel 0. (Ignore this if using VOX.)
Ready to accept AGW client application 0 on port 8000 ...
Ready to accept KISS TCP client application 0 on port 8001 ...
Now connected to IGate server euro.aprs2.net (84.232.6.113)
Check server status here http://84.232.6.113:14501
[ig] # aprsc 2.1.19-g730c5c0
[ig] # logresp EA5JTT verified, server T2SPAIN
ADEVICE0: Sample rate approx. 24.0 k, 0 errors, receive audio level CH0 15
ADEVICE0: Sample rate approx. 23.9 k, 0 errors, receive audio level CH0 14
[ig] EA5JTT-10>APDW16:!3928.91NR00020.67W#iGate RS41 UPV EA5JTT
...
EA5JTT-11 audio level = 26(19/6) [NONE] _||||:___
[0.3] EA5JTT-11>APRNFW,WIDE2-1:!0000.00N/00000.00EO/A=000000/F0S0V2593C0I26T25H6
5P10135J0R4 NFWv65
Position, Original Balloon (think Ham b, APRStraffic
N 00 00.0000, E 000 00.0000, alt 0 ft
/F0S0V2593C0I26T25H65P10135J0R4 NFWv65
- Corrección de frecuencia en el comando -f 432.500M , probar con -f 433.775M
- rtl_fm -d 0 -f 433.775M -s 24000 -g 40 | direwolf -c /home/pi-star/igate_upv.conf -r 24000 -D 1 -a 10 -
- Correccion nivel en el comando de -g60 a -g25
- rtl_fm -d 0 -f 432.248M -s 24000 -g 25 | direwolf -c /home/pi-star/igate_upv.conf -r 24000 -D 1 -a 10 -
Fichero de servicio corregido con linea para evitar conflico con autorx.service
[Unit]
Description=iGate APRS EA5JTT (Direwolf)
After=network.target
Conflicts=autorx.service
[Service]
Type=simple
User=pi-star
WorkingDirectory=/home/pi-star/
ExecStart=/bin/bash -c "/usr/bin/rtl_fm -f 433775000 -s 24000 -g 45 | /usr/bin/direwolf -c /home/pi-star/igate_upv.conf -r 24000 -n 1 -D 1 -t 0 -a 10 -"
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
Para arrancar autorx o aprs-igate
sudo systemctl start autorx
sudo systemctl start aprs-igate
| Acción | Comando |
| Pasar a Modo Sondas | sudo systemctl start autorx |
| Pasar a Modo iGate APRS | sudo systemctl start aprs-igate |
| Ver qué hace la Pi ahora | sudo systemctl status autorx (o aprs-igate) |
| Ver el mapa de sondas | Entra en |
| Parámetro | Función | Por qué es importante para ti |
-f | Frecuencia | El centro de la sintonía. Como vimos, en el Mac pones 433.780M para compensar el error, pero en equipos precisos pondrías 432.500M. |
-M fm | Modo de Modulación | Indica que la señal es FM. Aunque el APRS son tonos, viajan "dentro" de una portadora FM (NFM). |
-s | Sample Rate (SDR) | Es el ancho de la "ventana" que el SDR mira. Con 24k miras una ventana estrecha; con 250k miras una muy ancha que perdona errores de sintonía. |
-r | Resample (Salida) | Es la velocidad del audio que sale hacia Direwolf. Debe coincidir con el -r de Direwolf (ej. 24000 o 48000). |
-g | Gain (Ganancia) | El volumen del "micro" del SDR. 25 es un buen medio. Si subes a 40-50 oyes señales lejanas pero saturas las cercanas. |
-p | PPM Error | Corrección de error del cristal. En el Blog V4 es 0, en clones baratos puede ser 50 o más. |
-F | Filtro | -F 9 activa un filtro de mayor calidad (baja latencia) que ayuda a que los tonos AFSK no se deformen. |
-d | Device Index | Si tienes varios pinchos SDR, -d 0 elige el primero. |
Parámetros de direwolf
| Parámetro | Función | Por qué es vital para tu sonda |
-c | Config File | Indica dónde está tu archivo de configuración (sonda.conf). Sin esto, Direwolf no sabe quién eres (NOCALL) ni a qué servidor conectarse. |
-r | Sample Rate | Es la "velocidad" a la que espera recibir el audio. Debe coincidir con el -r (o -s) de rtl_fm (ej. 24000). Si no coinciden, el audio suena "acelerado" o "lento" y no decodifica. |
-n | Canales | -n 1 le dice que solo use un canal de audio (mono), que es lo que saca el pincho SDR. |
-D | Debug/Detail | -D 1 es el nivel de detalle. Te muestra qué está pasando "por dentro". Es lo que nos permitió ver el mensaje de éxito de la sonda. |
-a | Audio Stats | -a 10 te muestra el nivel de audio cada 10 segundos. Fundamental para saber si el volumen del SDR es el correcto (recuerda: busca un nivel de 30-50). |
-t | Text Colors | -t 0 desactiva los colores de la terminal. Útil si la terminal del Mac o la Pi hace cosas raras con los caracteres. |
-X | FX.25 (Pro) | -X 1 activa la detección de FX.25. Como la RS41-NFW usa este sistema de corrección de errores, este parámetro es tu "red de seguridad" si la señal llega débil. |
-B | Baud Rate | -B 1200 fuerza la velocidad a 1200 baudios (estándar APRS). |
- | Stdin (El guion) | El guion final le dice: "No abras el micrófono del Mac, escucha lo que te llega por la tubería de rtl_fm". |
LOG (En azul el iGate en verde el tracker RS41)
FOX
- Now connected to IGate server euro.aprs2.net (86.123.190.5)
- Check server status here http://86.123.190.5:14501
- [ig] # aprsc 2.1 # T2Romania - APRS Tier 2 Network
- [ig] # logresp EA5JTT verified, server T2ROMANIA
- [ig] EA5JTT-10>APDW18:!3928.91NM00020.67W#iGate macOS RS41 UPV EA5JTT
- EA5JTT-11 audio level = 15(7/6) [NONE] _||||:___
- [0.3] EA5JTT-11>APRNFW,WIDE2-1:!3928.92N/00019.87WO/A=000042/F93S23V2366C18I22T2 6H74P10209J0R4 NFWv65 Position, Original Balloon (think Ham b, APRStraffic N 39 28.9200, W 000 19.8700, alt 42 ft /F93S23V2366C18I22T26H74P10209J0R4 NFWv65
![]() |
| Prueba de funcionamiento correcto vista por aprs.fi en la que se observa el iGare (-10) y el tracker (-11) |
RTTY
| Campo | Significado | Descripción Técnica |
| PayloadID | ID de la Sonda | Identificador único del hardware (p. ej. EA5JTT). |
| Counter | Contador | Número secuencial del paquete. Útil para saber si has perdido tramas. |
| Time (H/M/S) | Hora UTC | La hora exacta del GPS (no la de tu reloj). |
| Latitude / Longitude | Coordenadas | Posición decimal (p. ej. 39.48 / -0.34). |
| Altitude | Altitud | Altura en metros (medida por GPS o sensor RPM411). |
| Speed | Velocidad | Velocidad de desplazamiento en nudos. |
| Sats | Satélites | Cuántos satélites está viendo el GPS (viste 24 en tu prueba). |
| Temp | Temperatura | Temperatura externa del "Silver Hook" (el gancho de plata). |
| BattVoltage | Voltaje | Estado de las pilas (0 = 0.5V, 255 = 2.0V). |
Para RTTY, el programa es más "hablador". Utiliza la variable String rttyMsg. La longitud de la trama RTTY es mucho mayor (unos 60-80 caracteres) porque incluye:
$$$$$(Cabecera de sincronismo).Indicativo.
Contador de tramas (
rttyFrameCounter).Tiempo GPS (
gpsHours,gpsMinutes,gpsSeconds).Latitud/Longitud con 4 o 5 decimales.
Checksum (CRC16) al final para que el software dl-fldigi la valide.
Se ha comprobado que emite, pero no se ha conseguido decodificar con éxito con RTL-SDR & SDRANgel (RTTY). Se volverá a intentar teniendo en cuenta el desplazamiento de frecuencias observado en APRS
FOX
No se ha probado
HORUS V2
No se ha probado, pues es necesaria una labor previa de buscar un software decodificador adecuado y en base a ello configurar el receptor
HORUS V3
No se ha probado, pues es necesaria una labor previa de buscar un software decodificador adecuado y en base a ello configurar el receptor
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