Garmin GND10 unveiled (it is Nexus FDX!)

Mother of all detours; the USB port on the Garmin GND10 isn’t NMEA2000, it is something called Nexus FDX. That took a couple of weeks to figure out, hunting for NMEA2000 protocol headers. Always check your assumptions.

Anyway, I’ve written a decoder for it now which can be found on https://github.com/lkarsten/GND10read . It decodes GPS position, speed, wind angle and strength. Output can be a series of json encoded dictionaries, or NMEA0183 if you prefer.

I’m pretty sure I’ve gotten the header format of the FDX packets wrong,  but it seems to work. The git repo above has my notes and some dump files, if anyone has a proper FDX network and want to try it out.

Use case is simple. I connect my laptop to the GND10 USB port before I go out sailing, and I get all the sensor data into OpenCPN. I can also log it to file, if I want to compute my own polars or do endless post-regatta analysis.

Advertisements
This entry was posted in sailing, varnish and tagged , , , , , , . Bookmark the permalink.

4 Responses to Garmin GND10 unveiled (it is Nexus FDX!)

  1. Jan Silfven says:

    It is FDX and there is even a free SW which you may use:
    http://www8.garmin.com/support/download_details.jsp?id=6885
    The SW will log data to a text or CSV-file and it will also convert data into NMEA0183 send out on a virtual port (if you have any SW running 0183)

    • Hi Jan.

      Thanks for the comment. I know about Nexus Race, but it requires a Windows computer and it does not seem to be very well maintained.
      GND10read should run just about all operating systems and versions. Also, it is free so you can modify it if you want, which isn’t the case for the Garmin software.

      Didn’t know about the 0183 export function though, that could have been useful earlier.

      /Lasse

  2. Leif says:

    Hej Lasse,
    great Job to decode the FDX Protokoll.
    I really want to Use the GND10 for providing the Networkdata to use it in my Openplotter Based RPi Chartplotter System.

    I ve tried to get it run like you despcribed and piped it into netcat, but i got the following error.

    ./dumpserial.py | ./fdxdecode.py | ./nmeaformat.py | netcat localhost 10110
    Using serial device /dev/ttyACM0
    Traceback (most recent call last):
    File “./nmeaformat.py”, line 32, in
    from LatLon import LatLon, Latitude, Longitude
    ImportError: No module named LatLon
    Traceback (most recent call last):
    File “./fdxdecode.py”, line 29, in
    from LatLon import LatLon, Latitude, Longitude
    ImportError: No module named LatLon

    • Hi Leif. Nice to hear from you!

      Based on the traceback, you’re missing the LatLon module. You can install that from the pip package manager, like this: “pip install latlon”, or from here: https://pypi.python.org/pypi/LatLon/1.0.2

      As I wrote in the README file, a cleaner implementation should probably be made when there is need for it. The code as it is bear marks of being written while I was solving this puzzle.

      Anyway, would be nice to hear your results, not matter what. I’m on the SignalK slack channel as @lasse if you want to chat. Cheers.

      /Lasse

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s