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.

56 comments to About OpenSkipper

  • Timo Lappalainen

    Hi all,

    So I have ready libraries for Arduino to replace Actisense NGT1 interface. You need only Arduino due board and e.g. MCP2562 bus tranceiver to make full system. The library has been published on https://github.com/ttlappalainen.

    My own system has uses also Arduino other serial lines for reading NMEA0183 data and sending them to N2k bus. So it works as NMEA0183 combiner, NMEA0183->Nk2 converter and N2k->PC interface so replacing 3 devices with single Arduino. It needs only three extra 3 RS4222 line tranceivers for NMEA0183 connection.

  • René

    Hey all,

    Very interest stuff going on here… my compliments!

    Just a little comment. I’m also investigating this plugging to the N2K bus. The Arduino Due and it´s CAN bus is definitely a viable option. But I also found another alternative: Beaglebone Black. It´s quite a bit more powerful, also has a CAN controller and goes as far as including a couple of programmable microcontrollers with real time capabilities… pretty powerful stuff for 55$. Mind you that you would need to get into the Eclipse, Linux, ARM cross compiling, etc… No such thing as a free lunch.

    I’m trying to put together a tilt compensated compass with noise reduction capable hard iron and deviation compensation. Why? Because I can! (that and I don’t want to pay 4k for a B&G) :)



  • Timo Lappalainen

    René, very interesting. I choosed Arduino Due, because it is rather low power and I found ready CAN library solutions for it. So I needed write only N2k extension. My N2k needs a bit development to make it platform independent. Currently it can be used with different CAN controllers by inheriting base class.

    About the compass. I have GPS compass and like its good accuracy in all situations. One can get e.g. Seapilot Vector GPS compass for 850 €. Can you beat GPS compass with any magnetic one? If yes, I am interested.

  • Timo Lappalainen

    Hi all,

    There is fixed beta on http://www.kave.fi/Apps/index.html. LatitudeDDMM and LongitudeDDDMM formats did not work on south and west side. Now you can also customise them.


  • Bill Corlett

    Hi, Re your conversation with Rene.

    I have a an existing commercial Marine AP (Lowrance / Simrad WP30 with NMEA0183). The WP30 has an in built compass, but this also accepts and prioritizes an external magnetic feed if required. I’m undertaking a project to provide a low cost back up for the WP30. In doing so I’m trying to incrementally migrate / move away from propriety based systems to a more simple open based systems approach….based on the Arduino

    I would appreciate your views on using a ‘GPS Compass’ as opposed to a ’tilt compensated electronic compass’ as a feed for an Arduino based marine autopilot. My concerns with this are complexity, accurate & consistent calibration.

    The main area of concern around the use of GPS ‘compass data strings’ seems to be if GPS derived ‘Compass’ data is being received (cycled) at a fast enough rate to enable the autopilot software to track, respond & react to the vessels short term position ‘fluctuations’? ?

    Looking at the NMEA feed from various GPS / ChartPlotter’s the message string seems to cycle every 1 – 3secs.

    In your opinion is this sufficiently quick?
    Are there any other issues that would stop one using a GPS Compass feed?


  • Timo Lappalainen

    Hi Bill,

    Sorry fo delay – I do not get alarm from this site.

    I did not completely understood your question. I have Raymarine STX10 and run it with GPS compass with 10 Hz heading output. Anyway I think Raymarine uses in combination internal accelerometer data. This I realized, when I tried to simulate running with autopilot on ground, when boat is not moving – the pilot did not react right to heading changes. So I think that for accurate fast control you would need both heading data for slow term correction and accelerometer for true control. Anyway if you are thinking to use normal GPS 1 Hz feed, it may not be good enough. I would work fine up to some weather condition because movements are rather predictable. With heavier movements errors on normal GPS heading (COG) start to grow. Ofcoarce you you can filter it a lot, since accelerometer is required for control.

    Arduino based autopilot would be interesting. In basic it would be some PID control.


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=""> <s> <strike> <strong>