Un des avantages d'avoir un mini-PC à bord, c'est que nous pouvons faire des choses impossibles — ou prohibitivement chères — avec un traceur commercial. Recevoir l'AIS par logiciel avec un dongle RTL-SDR à 25 euros en est un exemple parfait.
Sur l'Azul, nous avons remplacé la dépendance à OpenPlotter par une installation propre d'AIS-catcher directement sur Debian, en conservant l'intégration avec SignalK et, par conséquent, avec Freeboard-SK et le reste de l'écosystème. Voici comment nous l'avons fait.
Nous utilisons un SDR avec chipset RTL2832U et tuner R820T2, avec un oscillateur TCXO de 1 ppm (contre les 20-100 ppm typiques des cristaux de quartz bon marché). Sa couverture va de 100 kHz à 1,7 GHz, avec réception HF par direct sampling sur la branche Q. Physiquement, il se trouve dans une boîte bleue avec un logo de dauphin.
Cet exemplaire précis (bleu, avec le dauphin) ne se trouve plus sur internet ; c'est un dongle générique de la famille full band vendu sous différentes étiquettes et marques. Ce qui importe, ce n'est pas la marque mais l'ensemble R820T2 + TCXO de 1 ppm. La conception de référence de cette classe d'appareil est le RTL-SDR Blog V3 (même idée : TCXO et HF par direct sampling sur la branche Q). Ce n'est pas l'un des modèles les moins chers du marché.
Avec un TCXO de 1 ppm, l'erreur à 162 MHz avoisine les 160 Hz (0,16 kHz), négligeable face aux 25 kHz de séparation des canaux AIS (161,975 et 162,025 MHz). Les dongles bon marché sans TCXO présentent des déviations de dizaines de ppm et exigent bien une correction de PPM. Cela explique la note qui apparaît plus loin sur le fait de ne pas toucher au PPM ni au gain : ce n'est pas de la magie d'AIS-catcher, c'est le TCXO.
Pour partager l'antenne VHF qui se trouve en haut du mât entre la radio VHF et le récepteur AIS, nous utilisons un Banten 00260 « AIS Active Diplexer » (Banten, Italie). Il est actif : il possède un port AIS (TX/RX) et un port VHF (TX/RX) sur la même antenne, avec une alimentation de 10-30 V et environ 100 mA, il supporte jusqu'à 30 W continus et se présente dans un boîtier en aluminium de 140x63x30 mm. Un détail pratique : sans alimentation, il laisse passer directement la VHF, donc la radio ne reste pas sans antenne si le diplexeur perd le courant. Fiche du produit.
La qualité de l'ensemble compte : au début, nous avons essayé d'autres SDR moins chers qui n'ont pas donné de résultats fiables, et le diplexeur doit aussi avoir une qualité minimale — un simple répartiteur en T bon marché ne convient pas pour cela.

Le script d'installation officiel fait tout le travail : il télécharge le binaire statique le plus récent, crée les répertoires de configuration et enregistre le service 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"
Note pour Raspberry Pi : même si notre installation se fait sur un mini-PC avec Debian, presque toute la procédure est tout aussi valable sur un Raspberry Pi, qui sera probablement le cas de nombreux lecteurs. La même voie fonctionne : script d'installation officiel, service systemd et intégration avec SignalK par NMEA0183 over UDP.
Une fois exécuté, le système se retrouve avec :
| Composant | Chemin |
|---|---|
| Binaire | /usr/bin/AIS-catcher |
| Configuration | /etc/AIS-catcher/ |
| Service systemd | /etc/systemd/system/ais-catcher.service |
Il ne suffit pas de brancher le dongle : il faut dire à AIS-catcher lequel des périphériques USB est le récepteur. La commande AIS-catcher -l liste les périphériques disponibles :
AIS-catcher -l
Dans notre cas, la sortie montre trois périphériques, et le RTL-SDR apparaît avec son numéro de série gravé dans l'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_...
Pour confirmer le numéro de série, vous pouvez aussi utiliser :
lsusb -v 2>/dev/null | grep -A 5 -B 5 "RTL2838"
Nous gardons rtl-buen, qui est le numéro de série que nous avons fixé dans l'EEPROM du dongle pour avoir une identification stable, indépendamment du port USB où nous le branchons.
Le fichier de configuration se trouve dans /etc/AIS-catcher/config.cmd. Nous utilisons cette configuration, testée et optimisée pour notre environnement :
-d rtl-buen
-o 1
-u 0.0.0.0 10110
Ligne par ligne :
-d rtl-buen — sélectionne le RTL-SDR par son numéro de série USB. Ainsi, peu importe sur quel port USB il est branché.-o 1 — mode de sortie « NMEA only ». Suffisant pour SignalK, qui comprend nativement le NMEA 0183.-u 0.0.0.0 10110 — envoie les messages NMEA par UDP au port 10110, en écoutant sur toutes les interfaces réseau.Note sur le PPM et le gain : il n'est pas nécessaire de régler le PPM ni le gain manuellement si la réception est stable. Le contrôle automatique de gain (AGC) interne du RTL-SDR, combiné au décodeur moderne d'AIS-catcher, offre d'excellentes performances avec la configuration par défaut.
Une fois la configuration écrite, nous activons et démarrons le service systemd :
sudo systemctl daemon-reload
sudo systemctl enable --now ais-catcher.service
Pour vérifier que tout va bien :
systemctl status ais-catcher.service
Et si vous voulez voir les messages AIS en temps réel depuis la console :
sudo journalctl -u ais-catcher.service -f
Maintenant, nous allons dire à SignalK de collecter les messages qu'AIS-catcher émet par UDP :
http://localhost:3000 ou l'IP de la machine où il tourne).Enregistrez et activez la connexion. À partir de ce moment, les données AIS commencent à circuler. Vous pouvez le vérifier dans le Data Browser de SignalK, où apparaîtront des chemins comme :
navigation.positionvessels.<mmsi>.static.namesensors.ais.classSi vous voulez vous assurer que les messages NMEA sortent bien du récepteur, ouvrez un terminal sur le mini-PC et exécutez :
nc -u -l 10110
Vous devriez voir des lignes comme celles-ci :
!AIVDM,1,1,,A,13WU;o02AoO`m<tDahrIp7sH08JO,0*53
!AIVDM,2,1,0,A,59NWw5H2@cCh7QQW800P4lltpT6084i@T<40001?IhCC;4WC0IQDhC1h,0*39
Si vous voyez cela, félicitations : votre récepteur AIS fonctionne.
server.active = false dans config.json le maintient désactivé, ce qui allège le système et réduit la surface d'attaque. Tout passe par SignalK.-d:0) dans la configuration.Les deux appareils — le SDR et le diplexeur Banten — fonctionnent depuis plus de trois ans, 24h/24 et 7j/7, à bord de l'Azul avec un fonctionnement parfait jusqu'à aujourd'hui.
La portée observée dépasse les 20 milles dans des conditions normales, et nous n'avons constaté aucun problème dans l'utilisation de la radio VHF partageant l'antenne à travers le diplexeur.
AIS-catcher est un logiciel libre à des fins éducatives et de loisir. Il n'est pas certifié pour la navigation ni pour la sécurité de la vie humaine. Les informations reçues doivent toujours être recoupées avec des sources officielles. Utilisez-le à vos propres risques et conformément à la législation locale sur la réception radio.
Cela vous a-t-il été utile ? Avez-vous monté votre propre récepteur AIS ? Écrivez-moi — j'apprends toujours des expériences des autres navigateurs.