About OpenSkipper

Welcome to the OpenSkipper project, which provides Open Source C# code for Windows for integrating and displaying NMEA 0183, NMEA 2000 and AIS data from nautical instruments, GPS units and internet data sources. OpenSkipper can be run on a laptop aboard your boat to show electronic instruments displaying speed, heading, etc. Open Skipper can also receive and transmit data over multiple connections, including a serial port (for NMEA 0183), an ActiSense NGT-1-USB NMEA-2000-to-USB converter to read NMEA 2000 (N2K) data, and wired and wireless network connections (including TCP and UDP). It also contains a built-in webserver, so you can run OpenSkipper on a laptop and use this to display data on an iPad or Android phone or tablet.

OpenSkipper was initially developed by Dr Andrew Mason in the Yacht Research Unit and Dept of Engineering Science at the University of Auckland, New Zealand, with fantastic assistance from student Jason Drake. OpenSkipper was updated in 2014 by Timo Lappalainen and Kave Oy from Finland.

If you are interested in the NMEA 2000 standard, then Open Skipper provides both code and definition files for interpreting NMEA 2000 messages. This work uses the definition files developed by as part of his excellent CanBoat project.

NMEA 2000 messages can be received using the Actisense (www.actisense.com) NGT-1-USB NMEA-to-USB converter (a product that we recommend). We have not signed any non disclosure agreements with Actisense, but instead written our own low level COM-port driver. Our accessing of an NGT-1 in this way is not officially supported by Actisense. It works for us, but we take no responsibility in any way for any consequences.

Open Skipper contains XML definition files used to describe how an NMEA 2000, AIS and NMEA 0183 message should be decoded. These definition files are a beta release, have not been tested and contain errors, so please do not rely on any output from open skipper for your navigation. These definitions are unofficial, and are not supported by NMEA (www.nmea.org) or any other body in any way. We welcome community feedback on improvements to these.

Open Skipper is beta software designed to serve only as an aid for navigators. It in no way replaces the need to follow good nautical practices.

By using this software, you agree to the terms of the GNU Public License v3 (http://www.gnu.org/licenses/gpl.html), and in particular that:

There is no warranty for the program, to the extent permitted by applicable law. Except when otherwise stated in writing the copyright holders and/or other parties provide the program “as is” without warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. The entire risk as to the quality and performance of the program is with you. Should the program prove defective, you assume the cost of all necessary servicing, repair or correction.

In no event unless required by applicable law or agreed to in writing will any copyright holder, or any other party who modifies and/or conveys the program as permitted above, be liable to you for damages, including any general, special, incidental or consequential damages arising out of the use or inability to use the program (including but not limited to loss of data or data being rendered inaccurate or losses sustained by you or third parties or a failure of the program to operate with any other programs), even if such holder or other party has been advised of the possibility of such damages.

All trademarked terms are the property of their respective owners.

22 comments to About OpenSkipper

  • Dwight Kruger

    Looking for byte/bit level definitions of the NNMEA 2000 PGNs.

  • admin

    I suggest you visit the CanBoat site… that’s where OpenSkipper gets its data from. Andrew

  • Paul Williams

    Has anyone customized OpenSkipper to provide audible alarm settings? I have my engine instruments displaying, but I would like to add alarms for thresholds.

  • admin

    Paul. We have been discussing the best way to do this. Tell us your ideas and how you would use this… Andrew

  • Jacob

    Is there any way for open skipper to use a different device to communicate or have it look on a different COM port for the information? I already have a Maretron USB100 and it communicates on COM9 but I can’t find any way to make the information display on OpenSkipper.

  • admin

    Connecting to Com9 should be poosible with OpenSkipper. However we have not worked with a Usb100. What new coding do you think is needed to use this device? From the Maretron website, running this unit in N2k-to-0183 mode should just work. Some decoding of the native N2k data received in N2kView mode will need to be coded in SolverStudio. Andrew

  • Timo Lappalainen

    Open skipper reads any COM port which provides NMEA 0183 messages or N2k messages from Actisense. The only limitation is that port name has to start with COM, so COM9 is OK.

    USB100 seem to be just N2k-to-NMEA0183 converter so it should work fine. There are at least DPT sentence, which should work with distributed OpenSkipper version. With e.g. GGA I there is still error in definitions, which has been fixed on my debug version and next release.

    There are diffrent ways to display the information on OpenSkipper. One way is just to go to Tools-“Serial port listener” and Com9 and then speed (4800?) and mode to NMEA0183. Then press “open” and you should get raw data NMEA0183 data as e.g. with HyperTerminal. If that works, close the connection and go to “View”-“Data streams…”-“NMEA 0183 (COM ports)”, press add new and set the baud rate and com port (COM9) and press connect. Then you can go to “View”-“Decoded messages” and select NMEA 0183 stream you just created. Then you should see decoded data read from com port (=USB100). If you get that working then you just need to define your own displays how to view data. Timo

  • Ubuntu

    Thank you for your work, and having this as GNU licensed software.

    Any plan to offer Linux version?

    All the best

  • admin

    Thanks for your email. The current version should compile under Mono on Linux. (It certainly did a few years ago, but we have not tested it recently.) Andrew

  • Olivier

    Hi there!
    There is now a quite useable Arduino Duo board with a nice CAN interface and SW library that make a very good CAN bus sniffer. I expect that the raw binary data out of the CAN interface to be close to the input of the analyzer in your software…. Is this the case…? I look to make a N2K to analog ( Yes, I still LOVE my old fashioned 40 years old Pen Lann indicators, which still work perfectly. I look to sniff sea speed, wind speed and direction, and look for the proper PGNs. Would you have a binary dataset from for example a DST800 airmar probe? That would be lovely!

  • admin

    Olivier, we started with a CAN bus sniffer, and yes they can be very effective for reading N2K data. I would expect the Arduino output data to be very close to that produced by the Actisense NGT-1 that we support. OpenSkipper is designed to allow new “sources” to be added by writing new code that can interpret an incoming stream of N2K data in some specific format. This could come over a serial port, or even over ethernet if your Arduino can support TCP or UDP. And, no, I’m sorry but I don’t have any data from an Airmar DST800. Please let us know how you get on. Andrew

  • Timo Lappalainen


    My friend bought Airmar DST800 and uses it with OpenSkipper, so I could ask him to record you DST800 data in OpenSkipper log format.


  • admin

    Excellent idea, Timo. Andrew

  • Lars

    Hi there
    Thanks for your grat work!

    Looking for a way to correct TWA and TWS for windshear and upwash and then plot and then output a windplot with the corrected data. Something like correcting with an angle when windspeed is between 0 and 5 knots, another angle when 5 tp 10 knots aso.

    Any possibilities to do so? Anything tried in this direction?

    Kind regards


  • Timo Lappalainen

    I did not completely understood you way to correct wind data. I tried to study windshear and upwash terms, but I did not find any explanation how you could define fixed corrections.

    Wind handling need anyway some more handling. We should also get apparent data calculated by OpenSkipper, since sometimes systems does not comunicate with each others. Well, if you have all devices in same network they do. Also I would like to have average values instead of just current value.


  • olivier

    Hi timo,

    If you could do that, that would be great! it would be needed to record the boot sequence too… there is a negotiation phase that i may need to replicate!


  • Timo Lappalainen

    Hi Olivier,

    So I made test run with DST800. You can download logs by direct link http://www.kave.fi/Apps/Logs/Airmar_DST800.zip.
    There are Actisense ebl files which you can read with their “EBL Reader”. These EBL files has been generated on harbour and they hopefylly contains all communication from the beginning. Note that this may also contain some Actisense NGT initialization messages. Note also that there are own files for received and sent messages.

    The other file 20140907_Track is just message log from OpenSkipper. It contains all messages received on that boat, but does not contain any initialization.


  • Bruno


    Great project! I try to build the project (v1.5) under Mono on Mac OS environment.
    I got these errors :
    CSC: error CS2001: Source file `ThirdParty/Compass.cs’ could not be found
    CSC: error CS2001: Source file `ThirdParty/Compass.designer.cs’ could not be found
    These files are not in the solution, could you help me please ?
    Thanks for your help.


  • admin

    Our apologies; we were missing these files. I have now uploaded a new file, OpenSkipper-1.5 20140910-src.zip, which includes these files (with no other changes). Thanks for your interest in OpenSkipper, and alerting us to this problem. Andrew

  • Lars

    Hi Timo and all

    regarding correction of TWA it wouldn’t be enough to correct for fixed values. Something like checking for TWA send by system and deciding what angle to correct with is the way to go. An logic like this would be the right way, I think:
    If TWA <= 20 AND TWS <= 6knts, then TWA=TWA-5,
    elsdif TWA <= 30 AND TWS <= 6knts, then TWA=TWA-3,

    You would have to look at values of both angle and speed and then correct both of these values and send them out too the system again. Some sort of table would be perfect to write correction values into.

    Question is if something like that it's possible and which way to go. any ideas?

    Kind regards and keep the good work! :-)


  • Timo Lappalainen

    Hi Lars,

    Sorry for delay…

    What happens if TWS is 6.1? There would be 5 deg step for TWA between 6 and 6.1 knots. This would easily cause TWA neagle jumping from point to point. I could imagine that correction could be some continuos formula cTWA=f(TWA,TWS). Can you find anything like that?

    I discussed about your idea with my brother who is hanglider. He explained me a bit about windshear and upwash.


  • Lars

    Hi again – andsorryfordelay, too.

    My idea was to explain the concept.You are totally right: The more detailed data you want, the more datapoints you wouldhave to put into the system or make some intrapolation between the entrypoints.

    I wanted to know if something like that would be possible to do with help of Openskipper, or if that would crave enormous amount of time.

    Now I think you are able to judge this, don’t you?

    Kind regards and keep the good work! Cheers


Leave a Reply




You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>