Download & Install

OpenSkipper is maintained on GitHub at It is updated whenever new features are added or bugs fixed. Please check out the blog page for release details.

You can download the OpenSkipper executable and run it directly on any Windows system that already has .Net already installed. OpenSkipper will also run on Linux under the Mono environment (although we test this less frequently).

To download OpenSkipper:
Make sure you have a recent version of the .Net framework installed (which you almost certainly will do on any recent Windows version).

1/ The latest version of OpenSkipper can be found at There are also some useful files on Timo Lappelainen’s site. (You can download earlier versions from our OpenSkipper Source Forge site). Download the .zip file, and save it to a suitable temporary location.
2/ Right click on the downloaded .zip file, choose Properties, and click the Unblock button (if there is one) to mark the file as ‘safe’.
3/ Extract the files from the .zip file
4/ For testing, you probably want to download some sample log files and extract these to a folder, or install NMEA Simulator (see below)
5/ Double click on the executable OpenSkipper.exe to run OpenSkipper. (There is no need to install OpenSkipper; it can just be run directly.)

The C# .Net source code can also be downloaded from the OpenSkipper Source Forge site.

Note: Versions 1.3 and 1.4, dated from 20140511, include improvements made by Timo Lappalainen.

NMEA Simulator
You may also like to download NMEA Simulator developed by Timo Lappalainen as part of his creation of OpenSkipper v1.3. He has provided detailed instructions on using NMEA Simulator with OpenSkipper.

21 Responses to Download & Install

  1. Andrew Lechte says:

    Hi there,
    I am pretty keen to open B&G H5000 Zeus log files from our weather boat and would like to display a bunch of data in a weather console which would have a mix of NMEA0183 and NMEA2000 data. The sensors I have on my system are TWS, TWD, AWS, AWA, heading, GPS data (lat, lon, UTC, local time offset, date, COG, SOG), depth, water temperature, current direction, current speed, hull speed, Waypoint data and a few other odd channels. Is there a straight-forward way to generate a console that can display this information in numeric format?

    Best regards,


  2. Victor says:

    I found this nice piece of software for using my actisense-NTG-1.
    I have installed the latest version of Open Skipper on a Win 7 and a Win 8.1 system but it crashed at start on both systems.

    The Dial window is shown, I see the empty OpenSkipper Window with the status message “Loading display defintions”
    No menu entries are chooseable.

    It get at Exception-Window OpenSkipper-Dials with the Error msg:
    (Its german , but may be usefull)

    Informationen über das Aufrufen von JIT-Debuggen
    anstelle dieses Dialogfelds finden Sie am Ende dieser Meldung.

    ************** Ausnahmetext **************
    System.ArgumentException: Der angeforderte Wert “Ctrl” konnte nicht gefunden werden.
    bei System.Enum.TryParseEnum(Type enumType, String value, Boolean ignoreCase, EnumResult& parseResult)
    bei System.Enum.Parse(Type enumType, String value, Boolean ignoreCase)
    bei System.Windows.Forms.KeysConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
    bei DisplayDefinitions.DisplayInfo.AddToToolStrip(ToolStripMenuItem MainStrip, Int32 tag, EventHandler handler)
    bei OpenSkipperApplication.MainForm.LoadDisplays()
    bei OpenSkipperApplication.MainForm.LoadDefinitions()
    bei OpenSkipperApplication.MainForm.MainForm_Load(Object sender, EventArgs e)
    bei System.Windows.Forms.Form.OnLoad(EventArgs e)
    bei System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
    bei System.Windows.Forms.Control.CreateControl()
    bei System.Windows.Forms.Control.WmShowWindow(Message& m)
    bei System.Windows.Forms.Control.WndProc(Message& m)
    bei System.Windows.Forms.Form.WndProc(Message& m)
    bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

    ************** Geladene Assemblys **************
    Win32-Version: 4.0.30319.18444 built by: FX451RTMGDR.
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll.
    Assembly-Version: 1.5.2014.608.
    Win32-Version: 1.5.2014.0608.
    CodeBase: file:///D:/OpenSkipper_2015_03_13/OpenSkipper-1.5%2020140608/OpenSkipper.exe.
    Win32-Version: 4.0.30319.18408 built by: FX451RTMGREL.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll.
    Win32-Version: 4.0.30319.18408 built by: FX451RTMGREL.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll.
    Win32-Version: 4.0.30319.34238 built by: FX452RTMGDR.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll.
    Win32-Version: 4.0.30319.18408 built by: FX451RTMGREL.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_de_b77a5c561934e089/System.Windows.Forms.resources.dll.
    Win32-Version: 4.0.30319.34234 built by: FX452RTMGDR.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll.
    Win32-Version: 4.0.30319.18408 built by: FX451RTMGREL.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll.
    Win32-Version: 4.0.30319.18408 built by: FX451RTMGREL.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll.
    Win32-Version: 4.0.30319.34234 built by: FX452RTMGDR.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll.
    Win32-Version: 4.0.30319.18408 built by: FX451RTMGREL.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll.
    Win32-Version: 4.0.30319.18408 built by: FX451RTMGREL.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_de_b77a5c561934e089/mscorlib.resources.dll.

    ************** JIT-Debuggen **************
    Um das JIT-Debuggen (Just-In-Time) zu aktivieren, muss in der
    Konfigurationsdatei der Anwendung oder des Computers
    (machine.config) der jitDebugging-Wert im Abschnitt festgelegt werden.
    Die Anwendung muss mit aktiviertem Debuggen kompiliert werden.

    Zum Beispiel:

    Wenn das JIT-Debuggen aktiviert ist, werden alle Ausnahmefehler an den JIT-Debugger gesendet, der auf dem
    Computer registriert ist, und nicht in diesem Dialogfeld behandelt.



  3. admin says:

    Victor, Thanks for the error report. I’m sorry it is not working for you. I’ve asked Timo, who has been doing the more recent development, if he has any ideas. For our record, the error message is “System.ArgumentException : Requested value ‘ Ctrl ‘ could not be found.” Andrew

  4. Victor says:


    I installed the VS Express for Desktop 2013 and downloaded the last openskipper sources.

    Imported the project, compiled it and it works nice.
    I can see all the pgn’s produced with my test equipment.

    Seems to be an error in DisplayDefinitions.DisplayInfo.AddToToolStrip(ToolStripMenuItem MainStrip, Int32 tag, EventHandler handler)



  5. admin says:

    Pleased you got it working. We will look into this AddToToolStrip issue; thanks for reporting it. Andrew

  6. Victor says:

    I copied the Display_Battery ,…., Displays xml-Files to my … bin/dedug directory and did a reload

    I crashed at if (Shortcut != “”) NewDisplayItem.ShortcutKeys = (Keys)converter.ConvertFromString(Shortcut);
    in AddToToolStrip with a System.ArgumentException” in mscorlib.dll..

    Shortcut ist “CTRL-0”

    Seems to be an unhandled exception with a localisation problem.

    I’m not a c# programmer, so I stop here



  7. Victor says:


    I found that there is a problem with the Display.xml file
    The main window creation hangs. No menus

    I commented out all
    <!– Ctrl+1 –>

    and throw out the DisplayDials displayInfo from Display.xml

    Now it works in the development environment and I get Tanks, Motor and Batteries within the main window and the compass/speed/depth window.
    Menus are in full function. I can read from my actisense.

    In the downloaded version the window gets filled, but then the app hangs , must be terminated with the task-manager



  8. Timo Lappalainen says:

    Hi All,

    This Ctrl+1 is unfortunately language dependent definition. So if you have German OS version and you like to use shortcuts for displays, you need to change definition to Strg+1

  9. Mike says:

    When testing the nmea simulator and use NMEA 0183 MWV (tru wind) I don’t get TWD value, only TWS & TWA.
    How do I send TWD values?

  10. admin says:

    Timo, who has been doing the most recent development, say: “On the OpenSkipper sample Dials page there is value TWA, which should be TWD. This value is referenced as TrueWindDirection on named parameters and it is read from MWV message on NMEA 0183.” I hope this helps. Andrew

  11. Juergen says:

    I’m on boat in the moment.
    I’m overhelmed by the mass of information.

    Are there additional sources of information about internal work of openskipper as the variables and the structure and opportunities of the forms?

    There is an actual problem: I installed 1.6B connected the NGT-1. But:
    – Data are read; I can see them in the monitoring window – but many of real existing values are not shown in the forms – as HEADING for example.
    – In the monitor I see a value vor “Vessel Heading” – but in the form it is called “Heading” – how sensitiv is the case and how to insert a variable named in 2 words?

    Is there a convenient way to scroll through the AIS data since there is a problem reported on this ship (according to the plotter it always collides with itself 😉

    Greetings Juergen

  12. admin says:

    Pleased you are giving Open Skipper a go; well done getting it all running. Yes, there is a stack of data on these networks! Timo, who is doing more of the recent development, may be able to respond to your more specific questions. Andrew

  13. Timo Lappalainen says:


    The most common problems for not getting data to display is in the definition of parameter. The provided sample may have e.g. Source limited or on the parameter hooks filter there is some setting.

    I think in your case this is because the sample is expecting heading to be true (filter Reference=0). So go to Tools-“Parameter Explorer…”, choose Heading on left side, then on right side open Hooks-[0]-Filter and change value to 1.

    Note also that since OpenSkipper is very configurable all www, display definitions files, Streams.xml, Connectors.xml and Parameters.N2kParams.xml are provided as sample and you can modify them to match your own system and wishes. So keep one path e.g. OpenSkipper_MyYacht is as you own and newer copy automatically all files from release there, since that may destroy your personalized settings. Normally you need only copy .exe from new release to that path. If there are some new samples e.g. in display definitions, you have to add those manually to your own settings.

    I am sorry I have not had time to write manual how to configure OpenSkipper. I’ll try to do some day.

  14. Juergen says:

    Sorry, that’s too heavy stuff for a newbie.
    Please take my many questions as a helping link to a future documentation.
    From my work I know, writing documentation is difficult without feedback from one, who is not familiar with the subject.

    In the explorer I cannot find the hooks.
    On top there is the dial first directed to “MultilpeSourceNumeric”.
    But where to change?

    For me there is a principle problem in understanding:
    – there is a huge bunch of Information definitions on the Input side – many sources (AIS, GPS, compass etc) may deliver a “Heading” Information.
    – In the display definitions there seem to be very simple references to “the heading”
    – How do they correlate???

    Another question (I’m so old fashioned): These XML Files – I may edit them with my favorite editor to get track of the structure. But what are the keywords? Is there a reference?

    Next question: In the debug console I get a warning: “PGN CANDefinitions.PGNDefn length (219) exceeds data provided (147); some fields won’t show” – What definition, where?

    I tried to run the Decded viewer for some time – but it crashes on my system after some minute with stack overflow. Can I supply some information data on that?
    My originally problem why I am concerned with this: On the plotter (just stolen) was always reported by AIS a near collision with a ship MMSI number XXX – just our MMSI. So I want to know, what device (VHF od AIS transponder) tells that stupid. I Assume both Systems to know the MMSI – no one of them should send such record – IMHO. Where (if any) I can see the source of information?

    Do you have some demonstration displays to show AIS Data?

    At last: I’m on the ship now. But on site there is no Internet connection – I have to move physically to the favorite pub and send in batch.
    On Friday I leave the ship for a month. So I will log some time of logging the actual stream.

  15. Timo Lappalainen says:

    I am professional programmer and it took even for me a while to understand the links. So I am sorry that I did not start with documentation on that time.

    On Parameter Explorer, when you have selected e.g. Heading on left side, you should see some properties under “MultipleSourceNumeric”. As topmost there should be “Hooks” and “Unit”. In front of Hooks there is “>”, from which you can expand it and find [0] (meaning first hook).

    About linking things together:
    So you can have several data sources, which may be in NMEA0183 or NMEA2000 bus. There are in protocil definition files N0183Defns.N0183Dfn.xml and PGNDefns.N2kDfn.xml, which should be fixed by those protocols.These may still have errors, but I fix them as far as I get new information. Also AIS is one protocol. The parameters on OpenSkipper is user definable, which can be hooked to identifier definitions in N0183Defns.N0183Dfn.xml and PGNDefns.N2kDfn.xml. So e.g. in the provided sample SOG has been hooked only Protocol NMEA0183 to its identifier VTG and to its filed name “Speed Knots”. Also for SOG there is setting that parameter source has to be GP meaning that NMEA0183 message starts with $GPVTG,.. So if some device sends message $IIVTG,,, it will be not read in to the parameter SOG.

    For parameter Heading there is hooks both NMEA2000 protocol identifier 127250 and its field name “Heading” and NMEA0183 identifier HDM and its field name “Heading Degrees, magnetic”. In principle there is no sense to have two hooks, since if you then get data from both, it may swap between those values. On the other hand you can think that hook is ready, if your NMEA2000 device breaks, you only need to turn on the NMEA0183 device. So for hook NMEA2000 protocol identifier 127250 there is also filter setting that reference has to be 0 (=true).

    Now you if open PGNDefns.N2kDfn.xml and find text 127250, you will find . Within that you can find field definition , which is the hooked value we get to parameter Heading. There is also field definition , which is your filter field mentioned above.

    So the Parameter is one thing you must have first defined. If you have several sources e.g. for parameter Heading, you have to decide, which one you want to use. Then you suitable filtering for that. In NMEA0183 your filtering is rather limited. On NMEA2000 you can stricly filter e.g. Heading by setting device source ID to its NMEA2000 id, which you can see if you go to View-“Decoded Messages…”. Note also that you want to have your heading data available from all sources, you can create parameters HeadingCompass, HeadingGPS and set suitable filters.

    Then about displays. On display you can show Parameters you have defined. So e.g. file Display_Steer.xml defines compass rose display. I will not explain everything how it works, but you will find section . Within that object there is Heading, which defines that the compass rose gets its input from parameter Heading. So if you like that to show value from your newly defined parameter HeadingCompass, just change definition to HeadingCompass. There is also setting Any, which means that it accepts input from any stream. The streams and their names can be found under View-“Data streams…”.

    The all displays, which will be shown has been defined in Displays.xml. If you e.g. remove first …, it will show you the Dials collection display.

    Currently there is no reference and keywords. There are several different type of examples how to show data (Display….xml files), so hopefully you get in to the logic by looking them. Just keep a copy of original files and start edit Display…xml file to test the effects.

    Unfortunately I do not have sample for AIS data display.

    It would be also nice as if you as newbie would start to write manual for newbies and how to get started. I think several people ha been taken OpenSkipper, but have not actually realize that you can tune it for your own needs and for your boat. This means that you remove unnecessary displays and parameters. Also you have web server possibility. The manual should start how to get any data to system by defining input streams (under View-“Data streams…”).

  16. Steven M Miller says:

    Hi Timo, I seem to have encountered a similar issue to Juergen and found your text in the previous post very helpful. I was excited by the prospect of being able to use Open Skipper to take the data from my Actisense interface to do more work on the windward performance of my boat. In my short journey with the software so far, I tried in vain to get the com0com software going despite going through the various steps to disable the digital signing requirement, so opted for the easy way out by connecting two USBs with RS232 adapters and null modem cable. This got the simulator talking to Openskipper, but of course constrains me to an NMEA0183 datastream. As my first quiz at learning the software I set myself the challenge of getting the Heading dial to work on the dials display page, but have failed miserably. I’ve tried inserting all the potential variable names into the display value line and also playing with the hook as described in your previous post, but find that the 0183 hook for the heading in the parameter explorer is not specified as an integer and cannot be edited. Is this the problem?

    The second question is whether anyone else out there has made any displays which will filter the NMEA2k data to remove noise and display on a polar plot, so windward polar data can be recorded and analysed?

  17. Thang says:


    I download the OpenSkipper-1.6-src 20161210 file from
    . But there is file CANDevices.cs was not found in the Solutution/Files

    Can you send to me this file?

    Thank you very much.

  18. Andotron says:

    When I try to load most of the default forms (such as “Display_Dials.xml”), I get what I think is an error with .NET…
    “Errors have occured: System.Collections.ArrayList”

    I’m using OpenSkipper-1.6_20161217… Is .NET Framework 3.5 the right version?

  19. Timo says:

    Not sure for error. I tested OpenSkipper by downloading latest version – the same you have, unpacked .zip to folder My Documents\Test\OpenSkipper. When I start it it runs nicely all sample displays. Then I edited Displays.xml and removed WindGraph display description – still all fine.
    The computer is rather clean windows 10 installation with some additional applications, which may have added some .net versions. If I request .net versions from registry:
    reg query “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP”
    I get list (key base removed) CDF,v2.0.50727,v3.0,v3.5,v4,v4.0

  20. Raoul says:

    Hello Timo, I am getting interested by your “NMEA Simulator” programm. However, I have some troubles because there are CRLF “0x0D 0x0A” at the end of the serial message. Is it possible to add an option to active or not CRLF ?

  21. Timo Lappalainen says:

    There is now new version with that option on NMEA0183 setting. On the other hand CRLF is defined as message termination, so receivers should handle it. E.g. Actisense Reader does not seem to accept any other option.

Leave a Reply

Your email address will not be published. Required fields are marked *