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.
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
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
Hi Lasse
Wow, amazing to reverse engineer the FDX stuff.!
This looks very interesting. I have a Nx2/NXR/FDX/Nmea2000 network on my J97
with a NXrace wind sensor, plus Spd, Dep, Compass, GPS sensors and gnd10 .
it would be good to be able to diagnose problems specially with TWD and TWS calculation
by extracting data from the gnd10 to my laptop
We run windows 7 not unix. I am not a Python programmer but my son is a professional.
It would not be too hard to setup a Python environment on my laptop – we did it on an old one back in 2013.
Do you have a windows version of the decoder please
thanks Bob Baker
bobrgbaker@gmail.com
Hi Bob.
Thanks for the feedback. Good to hear my efforts perhaps can be of help to others :-)
I’m pretty sure you can run it on Windows, but I haven’t tried myself.
You’ll need a Python interpreter installed to run the software, most likely from python.org. The decoder runs under Python 2.7. GND10 USB driver is probably already installed if you use Nexus Race, so you’ll only need to supply “COM3” as an argument to dumpserial.py instead of “/dev/ttyACM0”.
You should know it is a bit rough around the edges still, but the flow to get NMEA0183 out of it should work fine.
If you run into any issues, perhaps you can file it on https://github.com/lkarsten/GND10read/issues/ , and I’ll have a look.
-Lasse
Hi Lasse As promised I tried to dump an NXB file yesterday. The boat was on her mooring sot there is no speed data but wind and other stuff exists here…
Does this help
Will try to setup a Python environment on this win7 pc
Bob
On Sat, Mar 4, 2017 at 12:10 PM, Blog of Lasse Karstensen wrote:
> Lasse Karstensen commented: “Hi Bob. Thanks for the feedback. Good to hear > my efforts perhaps can be of help to others :-) I’m pretty sure you can run > it on Windows, but I haven’t tried myself. You’ll need a Python interpreter > installed to run the software, most likely from python” >
uploaded as you asked link is I hope https://filebin.net/abv6cd0xp30smf4p/jw4mar2017.nxb
ok? bob
Hi. Thanks, I got the file now. The good news is that depth (4.45m) and GPS time looks to decode nicely. There are some other things that look a bit off, but I’ll have a look and see what is happening. Didn’t see anything about programming waypoints so far; should that be in there? -Lasse
Pingback: Looking for FDX data dumps (Nexus .nxb files) | Blog of Lasse Karstensen