LA solution: Envoyer une route OpenCPN vers Garmin GPSMap via réseau IP

Salut les Voileux,

Voila un bon bout de temps que je m'acharne à essayer de faire fonctionner OpenCPN avec mon GPSMap 720 de Garmin sans avoir à mettre un fil à la patte de mon MacBook.
L'objectif étant de pouvoir envoyer une route complete, pas juste un waypoint.

Pour rappel, Garmin ne propose pas la réception de route via le protocol NMEA. Cela est possible uniquement avec le protocol propriétaire Garmin. Et c'est là ou ca se complique...

Voici donc la solution mise en oeuvre sur Hissé O! (ben oui, y a pas que les forum qui ont le droit de s'appeler comme ça ;-):

  • OCPN 4.8.4 fonctionnant sur MacOSX. Je pense que la même solution peut-être mis en oeuvre sur Linux et Windobe.
  • Le Mac est connecté en Wifi sur le routeur du boat.
  • Gateway Serial<->IP supportant le protocol UDP/Server ou TCP/Server. J'utilise le modele USR-TCP232-306 qui à l'avantage d'etre alimenté en 12/24v et supporte l'interface RS422 (A/B). Acheté 35roros sur un site Chinois.
  • La Gateway est donc connectée avec son interface Ethernet sur le routeur IP du boat (IP=172.16.2.5 dans mon cas). L'interface Série connectée sur le port Série du GPSMap.
  • Le GPSMap doit être configuré spécifiquement pour supporter le protocol Garmin sur l'interface série connectée à la Gateway.
  • L'interface Gateway est configurée en mode UDP server (ca fonctionne aussi en TCP Server). J'utilise le Port 23. L'interface série de la Gateway est configurée en 9600bps, 8bits de Data, pas de parité et 1 bit de Stop.
  • J'utilise Socat (dispo sur Linux et Windows) pour virtualiser l'accès à l'interface Série, depuis un terminal: socat -v pty,link=/tmp/ttyS1,raw,echo=0 UDP:172.16.2.5:23
  • Cocher l'option "Utiliser le Mode Garmin GRMN (Hôte) en téléchargement" => Pour envoyer une route depuis OCPN, il suffit de choisir "Envoyer au GPS" avec l'interface "Serial:/tmp/ttyS1"

Voici le Script pour automatiser le lancement de Socat puis de OCPN:

!/bin/bash

Virtual Serial Driver for Garmin protocal communication with USR-TCP232-306

nohup /usr/local/bin/socat -v pty,link=/tmp/ttyS1,raw,echo=0 UDP:172.16.2.5:23&

wait a bit before launching OCPN so drivers are created

sleep 0.5

open /Applications/OpenCPN.app

/Applications/OpenCPN.app/Contents/MacOS/OpenCPN
kill $!

Remplacer UDP par TCP si la Gateway est configurée en TCP

Je joint quelques screenshots et le package incluant le script permettant de rendre le lancement transparent.

Si vous avez des questions....

A+

L'équipage
03 août 2018
03 août 2018

C'est dans ces moments que je me sens vieux.
Mais merci pour le partage.

03 août 2018

Très clair, merci , mais il ne faut pas lire en diagonale. .
Tous les points clés y sont..
Probablement applicable aux concurrents tentant de verrouiller de la même façon.
Mais comme d'habitude il faut un peu de compétence ou d'aide.

03 août 2018

Je pense que le problème est vraiment spécifique à Garmin avec son protocole propriétaire pour envoyer une route.
Il me semble que la plupart des marques supportent de recevoir une route via NMEA, et donc la problématique d'interface avec un réseau IP n'existe pas (Maretron et autres MiniPlex).
J'ai lu qq part que la volonté de Garmin est d'offrir un transfert plus fiable car leur protocole est pourvu d'un ACK sur chaque paquet. Autrement dit, il garanti que la route qui arrive dans le GPSMAP est complete et sans erreur (il ne manque pas un waypoint par ex). Cela pourrait théoriquement arriver en NMEA car le dialogue est unidirectionnel.
Enfin toujours est-il que je dispose finalement d'une solution satisfaisante :-)

03 août 2018

Bonjour,

Cela me semble bien cher et bien compliqué pour faire une connexion série. En plus tu n'explique pas qu'elle appli se charge de générer le protocole Garmin. En fait c'est ça la partie importante pour envoyer la route. Ta configuration réseau avec serveur série est très spécifique. Et si au lieu de payer ton écot à Apple tu prends un petit système sous Linux avec des ports série: tu as une installation 10 fois moins chère et 10 fois plus simple (OK, j'éxagère un peu mais 5-6 fois surement).

03 août 2018

Bonsoir,
C'est OpenCPN qui prend en charge le protocole Garmin. J'ai même joint un Screensaver qui montre l'option.
Je suis équipé en Apple, mais comme je le précise je pense que ça doit aussi fonctionner pour un portable Windows et Linux.
La mode étant au sans fils avec de moins en moins de ports d'interfaces sur ces bécanes (tablettes windows par ex), l'approche que je propose permet d'envoyer la route via WiFi.
A+

03 août 2018

Bonsoir,

C'est vrai que le WiFi envahi un peu tout, mais pour la nav un système avec des connexions série est bien pratique. Petit aparté, le WiFi consomme aussi pas mal de courant et même s'il ne se passe pas grand chose. Donc en croisière à la voile, il vaut mieux du filaire.

Je mets de côté les parano des ondes électro-magnétiques.

07 août 2018

@ Sterwen :
Cela fait 2mois et demi que je suis parti et pas encore de retour. A bord, c'est mon smartphone qui créé le réseau WIFI (en utilisant le "partage de connexion").

Et cela ne consomme pas grand chose. Sachant quand même que toutes les données du réseau NMEA sont transmises à la tablette du bord à partir du PC de la table à carte.

@ Hisse et O!
Vous utilisez le mot "gateway". Qu'entendez vous par la ?

07 août 2018

J'ai oublié de donner le lien pour l'installation de Socat sur Mac.

Oubli vite réparé:
brew install socat
ou
sudo port install socat

A+

07 août 2018

Désolé pour l'anglais. Gateway est un terme utilisé couramment en informatique / électronique pour désigner un équipement qui fait office de passerelle pour interconnecter 2 réseaux, ou 2 systèmes incompatibles (au niveau électrique ou au niveau protocole), etc
En l'occurrence, cette passerelle va interconnecter un réseau IP avec une interface série. Elle va assurer que les données envoyées par IP soient transmises sur l'interface série, et que le dialogue inverse fonctionne aussi.

08 août 2018

Merci.

11 mai 2021

Peux t on passer par le opencpn=> nmea 0183 => nmea2000 => seatalk=> gps garmin 721
on sort par par le port com en mode garmin

12 mai 2021

Il n'y a pas d'entrée seatalk sur le gpsmap. Donc pourquoi cette étape ?
Il me semble que 2x gpsmap connectés en NMEA 2000 peuvent s'échanger routes, donc à priori on dois pouvoir envoyer cette route sur le 2000.
Tout va dépendre de comment seront traduites les trames propriétaires dans la conversion 0183->20000
A essayer.

01 juil. 2021

Ca ne marche après avoir tester

01 juil. 2021

Bonsoir si vous voulez que je vous aide à faire marcher, il va falloir être un peu plus prolixe; par ex donner des détails sur ce que vous avez fait, et sur ce qui ne marche pas exactement.

Phare du monde

  • 4.5 (47)

2022