Una de las ventajas de llevar un mini-PC a bordo es que podemos hacer cosas que con una plotter comercial son imposibles — o prohibitivamente caras. Recibir AIS por software con un dongle RTL-SDR de 25 euros es un ejemplo perfecto.
En el Azul hemos sustituido la dependencia de OpenPlotter por una instalación limpia de AIS-catcher directamente sobre Debian, manteniendo la integración con SignalK y, por tanto, con Freeboard-SK y el resto del ecosistema. Te cuento cómo lo hicimos.
Usamos un SDR con chipset RTL2832U y tuner R820T2, con oscilador TCXO de 1 ppm (frente a los típicos 20-100 ppm de los cristales de cuarzo baratos). Su cobertura va de 100 kHz a 1,7 GHz, con recepción de HF por direct sampling en la rama Q. Físicamente va en una caja azul con un logotipo de delfín.
Ese ejemplar concreto (azul, con el delfín) no se encuentra ya en internet; es un dongle genérico de la familia full band que se vende bajo distintas etiquetas y marcas. Lo que importa no es la marca sino el conjunto R820T2 + TCXO de 1 ppm. El diseño de referencia de esta clase de dispositivo es el RTL-SDR Blog V3 (misma idea: TCXO y HF por direct sampling en la rama Q). No es de los modelos más baratos del mercado.
Con un TCXO de 1 ppm el error a 162 MHz ronda los 160 Hz (0,16 kHz), despreciable frente a los 25 kHz de separación de los canales AIS (161,975 y 162,025 MHz). Los dongles baratos sin TCXO tienen desviaciones de decenas de ppm y sí exigen corrección de PPM. Esto explica la nota que ya aparece más adelante sobre no tocar PPM ni gain: no es magia de AIS-catcher, es el TCXO.
Para compartir la antena de VHF que tenemos a tope de palo entre la radio VHF y el receptor AIS usamos un Banten 00260 "AIS Active Diplexer" (Banten, Italia). Es activo: tiene un puerto AIS (TX/RX) y un puerto VHF (TX/RX) sobre la misma antena, con alimentación de 10-30 V y unos 100 mA, soporta hasta 30 W continuos y va en una caja de aluminio de 140x63x30 mm. Un detalle práctico: sin alimentación deja paso directo a VHF, por lo que la radio no se queda sin antena si el diplexor pierde corriente. Ficha del producto.
La calidad del conjunto importa: al principio probamos otros SDR más baratos que no dieron resultados fiables, y el diplexor también debe tener una calidad mínima — un simple repartidor en T barato no vale para esto.

El script oficial de instalación hace todo el trabajo: descarga el binario estático más reciente, crea los directorios de configuración y registra el servicio systemd.
sudo apt update
sudo apt install -y curl
sudo bash -c "$(curl -fsSL https://raw.githubusercontent.com/jvde-github/AIS-catcher/main/scripts/aiscatcher-install) -p"
Nota para Raspberry Pi: aunque nuestra instalación es sobre un mini-PC con Debian, casi todo el procedimiento es igual de válido en una Raspberry Pi, que probablemente sea el caso de muchos lectores. La misma vía funciona: script de instalación oficial, servicio systemd e integración con SignalK por NMEA0183 over UDP.
Una vez ejecutado, el sistema queda con:
| Componente | Ruta |
|---|---|
| Binario | /usr/bin/AIS-catcher |
| Configuración | /etc/AIS-catcher/ |
| Servicio systemd | /etc/systemd/system/ais-catcher.service |
No basta con enchufar el dongle: hay que decirle a AIS-catcher cuál de los dispositivos USB es el receptor. El comando AIS-catcher -l lista los dispositivos disponibles:
AIS-catcher -l
En nuestro caso la salida muestra tres dispositivos, y el RTL-SDR aparece con su serial grabado en la EEPROM:
Found 3 device(s):
0: Realtek, RTL2838UHIDIR, SN: rtl-buen
1: Serial, USB Serial, SN: usb-FTDI_...
2: Serial, USB Serial, SN: usb-ITEAD_...
Para confirmar el serial también puedes usar:
lsusb -v 2>/dev/null | grep -A 5 -B 5 "RTL2838"
Nos quedamos con rtl-buen, que es el serial que hemos fijado en la EEPROM del dongle para tener una identificación estable, independientemente del puerto USB donde lo conectemos.
El fichero de configuración se encuentra en /etc/AIS-catcher/config.cmd. Nosotros usamos esta configuración, probada y optimizada para nuestro entorno:
-d rtl-buen
-o 1
-u 0.0.0.0 10110
Línea a línea:
-d rtl-buen — selecciona el RTL-SDR por su serial USB. Así da igual en qué puerto USB esté conectado.-o 1 — modo de salida "NMEA only". Suficiente para SignalK, que entiende NMEA 0183 nativamente.-u 0.0.0.0 10110 — envía los mensajes NMEA por UDP al puerto 10110, escuchando en todas las interfaces de red.Nota sobre PPM y gain: No hace falta ajustar PPM ni gain manualmente si la recepción es estable. El control automático de ganancia (AGC) interno del RTL-SDR, combinado con el decodificador moderno de AIS-catcher, ofrece un rendimiento excelente con la configuración por defecto.
Una vez escrita la configuración, habilitamos e iniciamos el servicio systemd:
sudo systemctl daemon-reload
sudo systemctl enable --now ais-catcher.service
Para comprobar que todo va bien:
systemctl status ais-catcher.service
Y si quieres ver los mensajes AIS en tiempo real desde la consola:
sudo journalctl -u ais-catcher.service -f
Ahora vamos a decirle a SignalK que recoja los mensajes que AIS-catcher está emitiendo por UDP:
http://localhost:3000 o la IP del equipo donde corre).Guarda y activa la conexión. A partir de ese momento los datos AIS empiezan a fluir. Puedes comprobarlo en el Data Browser de SignalK, donde aparecerán rutas como:
navigation.positionvessels.<mmsi>.static.namesensors.ais.classSi quieres asegurarte de que los mensajes NMEA están saliendo del receptor, abre un terminal en el mini-PC y ejecuta:
nc -u -l 10110
Deberías ver líneas como estas:
!AIVDM,1,1,,A,13WU;o02AoO`m<tDahrIp7sH08JO,0*53
!AIVDM,2,1,0,A,59NWw5H2@cCh7QQW800P4lltpT6084i@T<40001?IhCC;4WC0IQDhC1h,0*39
Si ves esto, enhorabuena: tu receptor AIS funciona.
server.active = false en config.json lo mantiene desactivado, lo que aligera el sistema y reduce la superficie de ataque. Todo pasa por SignalK.-d:0) en la configuración.Ambos dispositivos — el SDR y el diplexor Banten — llevan más de tres años funcionando 24/7 a bordo del Azul con un funcionamiento perfecto hasta hoy.
El alcance observado supera las 20 millas en condiciones normales, y no hemos apreciado ningún problema en el uso de la radio VHF compartiendo antena a través del diplexor.
AIS-catcher es software libre para fines educativos y de afición. No está certificado para navegación ni seguridad de la vida humana. La información recibida debe contrastarse siempre con fuentes oficiales. Úsalo bajo tu propia responsabilidad y conforme a la legislación local sobre recepción de radio.
¿Te ha resultado útil? ¿Has montado tu propio receptor AIS? Escríbeme — siempre aprendo con las experiencias de otros navegantes.