Latest versions,  

the changes

Version information  SailingPD Versions.

Version 4.8.0 of 18 May 2024

·        XTE is added to the SPD screen, in the Course box. 

·        The 25-dials HTML screen (for web server output) now has a dial for XTE.

·        Also, this screen now has a dial for Distance to Waypoint.

·        And it shows the active waypoint.

·        The UDP messages for wind, current etc (see sendoverwifi.ini) now have an indication of the source (boat name). This can be useful when boats send these UDP messages over internet to some remote receiver

·        The “Angles” UDP message now includes the heel error value: too much or too few (negative value) heel

·        SPD now takes the lat-lon position from every RMC record and converts it into a decimal position looking like xx,xxxxxxx N xx,xxxxxxx E. This position is logged in the PDlogfile. It is also sent over USB in the wind-USB-messages. This way, there is a link between a boat’s position and all measurements taken and logged.

Version 4.7.1 of 16 May 2024

·        When creating an Axiom polar from an ORC-polar, you now get the question if you want a simple polar (only including the TWAs of the ORC-polar), or an extended one, with TWAs smaller than UA or wider than DA added based on VMG-info available in the ORC-polar

·        A small error in the calculation of bestangle (up or down) in the UDP-messages was corrected

·        UDP-wind-messages now also have the geowind kts, next to the TWS measured on board

Version 4.7.0 of 8 May 2024

It is now possible to create a polar for use in an Axiom plotter from the ORC polar database. Use a boatspecifics file containing:


activity = AXIOMpolar,NED6890

(or any other valid ORC certificate)

Version 4.6.0 of 21 April 2024

Version 4.5.0 of 2 April 2024

It is now possible to create a polar for use in RAK24 from the ORC polar database. Use a boatspecifics file containing:


activity = RAK24polar,NED6890

(or any other valid ORC certificate)

Version 4.4.0 of 28 March 2024

It is now possible to create a polar for use in OpenCPN from the ORC polar database. Use a boatspecifics file containing:


activity = OpenCPNpolar,NED6890

(or any other valid ORC certificate)

 Version 4.3.0 of 14 February 2024

A new dial for Ground Wind is now present in several html files for the web server output. It shows ground wind in a compass view. Many thanks to Menno for this dial!

Version 4.2.9 of 5 February 2024

·        Attempts to do a new build to get rid of cchardet error. Attempt successful this time, thanks to aiohttp no longer calling the defective cchardet routines. 

. No changes to SPD itself. PI-4 users report a fully functional SPD! 

Version 4.2.7 and 4.2.8  of 3 February 2024

·        Attempts to do a new build to get rid of ccharset error. Attempts failed in the Build fase (token expired)

Version 4.2.6 of 30 June 2023

·        Error with missing UDP port for UDP messages corrected. Sometimes, SPD just ran into an error stating the UDP port for outgoing messages was suddenly missing. Strange error. It is now bypassed.


·        Geowind now includes the effect of current; when sailing in current, the Geowind as calculated from Apparent Wind and COG-SOG does logically not take into account that the wind as measured is influenced by current. How would a wind instrument know there is current. The wind instrument has no knowledge of current. The boat does, however, SOG and COG include current while HDG and STW do not, and hence we can calculate the correct, real Geowind. When sailing with the wind from behind and current also from behind, the real wind is more kts than measured etc etc. Also, the direction of the geowind is now corrected for the effects of current. As before, Geowind kts is normalised to a height of 10 meters, as used in the weather forcasts.

Version 4.2.5 of 29 April 2023

·        It turned out that SPD hangs during startup when the Windows PC it is running on does not have a sound card and/or speakers/headphones. This can now be prevented by using a new key in processlist.ini,

[Starting specials]

Speech enabled = N

This will prevent all speech attempts made by SPD. Setting it to Y will enable speech.

Version 4.2.4 of 12 April 2023

·        A few additions to the webserver output, mainly handy for display on dials:

Rel-HDG, Rel-COG and Rel-BTW now present HDG, COG and BTW in negative for westerly HDG etc (-90 for West etc)

Bow-AWA and Bow-TWA give AWA resp TWA in negative with wind from Port

Heel-error gives the amount of over- or under-heel. Negative when actual heel is less than target heel.

The webserver-key for Speed from current is now called Speed-from-current. HTML did not like the spaces.

·        A new HTML file, with 21 offline dials, is now included in web_root.

Version 4.2.3 of 7 March 2023

·        Now available in /systemfiles/web_root, a new HTML file named SPDdials_offline.html

The previous html-files with dials in them used the Google presentation of the dials, and they needed an online (internet) connection at startup of the browser page (webserver page).

The SPDdials_offline.html is fully local and does not need internet.

You can modify it to your likings. It is a working example.

Thx to Menno for building these files for SPD, and to the creator of the dials, mentioned in the document included in web_root that describes all  possibilities.

Version 4.2.2 of 2 March 2023

·        Changed (again…) automatic detection of the directory of SPD. This is an unreliable OS-call it seems, influenced by multi-threading, ‘start in’ directories given in a Windows Shortcut etc. Unclear how Linux (and Pi-Linux) handles this OS-call. It might be unavoidable to change directory in the start-up sequence of SPD before you start SPD. At least, that is when you want to avoid the question to point out the SPD-directory with all its files. If SPD cannot detect that directory itself, you have to help out.

Version 4.2.1 of 28 February 2023

·        Improved (again…) automatic detection of the directory of SPD.

·        Root window top border will now show when Noquestionsasked mode is active

·        Number of satellites in view and HDOP added to the PDLog

Version 4.2.0 of 25 February 2023

·        IMPORTANT: for the communication via the webserver, SPD uses some open source functions, aiohttp, Asynchronous IO HTPP. There is an issue with a module used by aiohttp (i.e. cchardet) since mid-2022. Cchardet is no longer supported by Python version 10 and above. It is also no longer maintained, it seems.

Even in Python version 9 (used by SPD) cchardet causes a shutdown of SPD when the aiohttp routines are loaded into memory, at least on some Pi 64bit machines.

The solution has to come from the aiohttp-developers, SPD can at the moment only bypass the problem.

If you encounter the following error:

“ModuleNotFound Error : No module named ‘cchardet’

the bypass is to disable the webserver in SPD.

Go to sendoverwifi.ini in /systemfiles/ and set

Webserver = N

Restart SPD.

This way, all activity relating to aiohttp and cchardet is skipped in SPD.

You will not have any webserver output as a result, but it is better than a complete crash of SPD anyway.

Of course we are looking for a real solution, but that has to come from the aiohttp open source team.


·        SPD needs, after being started, to know in which directory all its required files can be found. The way in which SPD discovers from which directory it was started (and where also all other stuff is) has now been improved. It is now the very first action of SPD after the start.

Version 4.1.5 of 16 February 2023

·        example files added with CSV-separation with comma’s and with decimal point. For 4 types of file: polar, heelpolar, stw correction and deviation 

·        a complete instruction for the use of SPD under Linux on a Pi4 added: download, unzip and start. New separate document in the folder.

Version 4.1.4 of 9 February 2023

·        Performance in- and ex-current swapped on SPD screen.

Easier now to compare STW-perf and SOG-excurrent perf as these are closer together on screen.


·        Added the number of satellites in view and the HDOP to the top line on the screen-output and also to the webserver output, with 2 new keywords for webserverselection and in the webserver output:



Version 4.1.3 of 31 January 2023

·        Error in the post processor for heel and target heel corrected (targetheelcheck)

Version 4.1.2 of 30 January 2023

·        Small error (incorrect date when writing to PDlog with button) corrected.

Version and of 21 December 2022

·        2 changes to Workflow and run-on-arch, both required by Github.

No impact on users or source code.

Version 4.1.1 of 18 December 2022

·        Instructions for use with SignalK and Node Red improved.

Version 4.1.0 of 16 November 2022

·        During Replay of a raw NMEA log, SPD can now, if so requested, send its own NMEA0183 records via COM or TTY.

This can be useful during the testing of NMEA output on your instruments on board. You can now debug your system (multiplexer, cabling, instruments) with recorded data in Replay mode. No need to have live data for such test.

It requires a new keyword in your (replay) boatspecifics file:


During Replay = Y

The Section [NMEAoutput] is already there to define which NMEA messages SPD will send.

The NMEA output records will come via the port as defined with [Serial] in the boatspecifics file.

Version 4.0.6 of 4 October 2022

·        Some small errors in 2 PD post processors corrected.


·        A new Post Processor is added: it calculates the difference between the Target Heel (from the Speed Guide) and the actual heel. This is done for a range of TWA’s and TWS’s and also it shows separate results for Port and Starboard tack. Quite useful to get insight (after sailing) in the amount of sail used. This PD post processor is to be started with the keyword


activity = targetheelcheck

in a boatspecifics file.

Version 4.0.5 of 24 September 2022

·        Instruments can not display negative values in many cases. So a negative VMG (downwind) or a negative Closing Speed to a WP (sailing away from it) does not show.

These values are now made positive, in order to display them on a NMEA instrument.

If they are not available (no active WP), N/A is shown on the SPD screen and 0 will show up in all other outputs.


·        Bestangle when going downwind is now bestangle minus 100 in the NMEA output records. This way, display of a 3 digits angle is possible on NMEA displays. F.i a DA of 160,5 will display as 60,5 on a NMEA display. You will know what to do when going downwind!


·        Calculation of current impact on course is improved. It shows the actual impact of the current on the direction of the boat, without the leeway component.


·        The current component is no longer part of the calculated actual leeway displayed on the SPD screen: the value of the total actual leeway (including current) is still calculated as before but the current component is now removed from that value.


·        When doing a Replay, a copy of all NMEA coming in (from file) was created when the boat specifics stated NMEAin copy = Y . This is not useful, as a file with all that NMEA already exists (the one that is replayed). So, in Replay mode, no more NMEAin copy is created.

Version 4.0.4 of 2 September 2022

·        When no water speed data were available in NMEA0183, SPD still tried to calculate current (direction and speed). With the default for water speed set at 0 kts, this resulted in a current equal to SOG, straight ahead. As a result, some performance data gave unreliable results.

This is now corrected. When no water speed data are available, current kts and direction are set to 0.

In such case, speed STWc and performance STWc-water will show N/A.

In the PDlog, the values will still be0, to accomodate some of the PD post processors.


·        When no waypoint was active, performance VMG to WP and speed VMGwp showed 0. That is now changed to N/A.

   ·        No changes to the manual, 4.0.3 is still current.

Version 4.0.3 of 21 August 2022

Both PD postprocessors for the PDlog that create Deviation tables  (with and without heel) now take tLEEWAY from the PDlog to correct COG for target LEEWAY. HDG is without leeway anyway, so to find the difference between HDG and COG (the deviation), tLEEWAY has to be taken out of the equation.

Version 4.0.2 of 15 August 2022

·        TWA to WP gave a TWA value even when no waypoint was active, it showed the GEOwind direction. Now it will show N/A if there is no waypoint

·        In a situation with no SOG and COG = 0 (i.e., when completely stationairy) the GEOwind could be from a direction greater than 360. This is now corrected.

Version 4.0.1 of 8 August 2022

·     The calculation of Upwash, using Arvel Gentry’s formulas, delivered a high Upwash value of 7 or 8 degrees in very light air, leading to an unrealistic TWA. This is influenced by 2 keys in processlist.ini,

[Upwash control]

Gentry S0 = 2.5

Gentry S1 = 3

The default value for S1 is now set to 3, it was 8 earlier.

·        SPD corrects Apparent wind (angle and speed) for a number of factors. Apparent Wind Angle AWA is corrected for heel, for upwash, for leeway and for wind-change along the height of the mast. More wind up high, so wider AWA there. But 10 meter high is the reference height.

Apparent Wind Speed AWS is corrected for heel: many wind sensors will measure less when heeled.

In the documentation of the ORC for measurement certificates, it is assumed that Upwash and Leeway effects on AWA cancel each other out, net effect zero degrees.

SPD makes an attempt to really correct AWA for heel (using target or measured heel), for upwash (using Arvel Gentry’s formulas), for leeway (using target leeway from ORC K-formula), and for mast height above 10 meter (using a formula from The Art and Science of Sails by Tom Whidden).

The AWS correction for heel could already be fine-tuned by users by changing processfile.ini:

[Wind corrections]

AWSheelcorrection = 0.4 

which stands for 0.4 % more real wind per degree of heel). Setting it to 0 eliminates this correction, f.i. for ultrasonic wind sensors.

Now, the AWA corrections can also be switched off by the user, so that the raw measured AWA is used in SPD. In processlist.ini:

[Wind corrections]

AW raw = Y

Will make SPD skip all corrections for heel, mast height, upwash and leeway.


·        The calculation of actual leeway is improved. That is a complex calculation, based on Geowind TWS, Boat TWS, current speed and current angle, boat speed and on TWA.

Some of these variables and the underlying ones are noisy in nature. Hence, actual leeway can be noisy also. It should be seen as an indication. The actual leeway is not used in any other calculation in SPD. It is available on screen and in the webserver output.



Version 4.0.0 of 5 August 2022

· SPD after startup first reads a few records from the NMEA source (serial, network, replay). This is done to see if the records really needed (RMC and wind) are available. Also, SPD then checks which other useful record types are in the data stream. Sometimes there are very many AIS records in the data stream, and reading a few 100 records is then not enough to identify all useful types. This has now been improved: !AI records are ignored during this NMEA test, and 100 NMEA $-records are read. This improves the chances that all record types are found immediately.


· The variable NMEAHz (from processlist.ini) is also taken into account for this record-test. SPD will try to identify NMEAHz * 100 records at the start. This way, 10 Hz GPS records will not overshadow less frequent wind records, etc.


· The key Printnetworkrecords (in processlist.ini) to see what is coming in when live now also works with a serial connection, not just with a network connection (UDP or TCP).


· The handling of incoming NMEA via Network, over UDP and TCP, has been greatly improved. Chances of NMEA records being missed are now drastically reduced. Also, thruput of NMEA over Network, especially over TCP, is much improved. A lot of changes!


· In the log, the DATE and TIME columns are now always taken from the GPS RMC record, so this is always GPS date and time from live NMEA or from replayed NMEA records. Earlier, during live running of SPD, these 2 were taken from the computer’s date and time. Now they are in UTC.


· Also in the PDlog, 2 new columns (the first 2) are available with the local date and time of the computer when running SPD. Column names are locDATE en locTIME. If no info is availabe, N/A is logged.


· In Boatspecifics, a new key to get spoken windshift messages:


shiftmsg = Y

Every time a windshift is detected (the size of which you can adjust with a button) SPD will tell you so. Header or lifter, preceded by V for velocity and R for a real one.

Version 3.7.6 of 27 July 2022

· In the PDlog, 2 colums were added, for raw AWA and raw AWS. In these, the values of AWA and AWS are logged before any corrections for heel, upwash, leeway and mast height are applied, and before any filtering. This is the data as they come in from your wind sensor.

Column names are AWSraw and AWAraw.


· Some additional testing added in the reading of CSV files for Deviation and STW correction. These files can be simple, without heel, or with 9 rows for 9 heel angles (0, 4 SB and 4 Port heel)

When (new) users of SPD are not sure how to use these options, the error messages were not optimal. A lot has been improved now to help new users getting started.

Version 3.7.5 of 25 July 2022

·        Creating a polar.csv from the Jieter ORC database suddenly delivered a polar with decimal dots. May be something has changed there?

Now corrected: if your CSV Separator is a semicolon the polar will be created with a comma for decimals. With a comma as CSV separator, the decimal dot is used in the polar.


·        After re-reading the book ‘The Art and Science of Sails’ I could not resist adding a small correction for AWA. As AWA is measured at a different height than the 10 meter standard for an ORC Measurement Certificate, a lot higher in most cases, it is a little bit too wide to calculate a correct 10m TWA: there is more wind above 10 meters, giving a wider AWA.

This is now corrected before TWA is calculated.

The ratio between boat speed and wind speed is also taken into account: the AWA gets even wider up there with heavy air (as we all know).

Version 3.7.4 of 19 July 2022

·        Reading of Deviation and stw correction CSV files made more robust against user errors in the CSV (like spaces etc).

·        A new HTML file with just 2 performance dials: SPDperfjustdials.html


·        Filter lengths can now be adjusted more precisely. Until now, changing a filter (with a button) doubled or halved the length of the list of data in the filter. Now you can also add just one value to the length of the filter list, or remove 1 (oldest) value. Control is via processlist.ini, with a new command:


[Filters changes]

Step = DH 

 Will double or halve the list of values per button click, or

 Step = +-

 if you want subtle 1-value changes

 This works for all 3 filters (performance, wind, AW).

If not specified, the default is (still) double and halve.

Version 3.7.3 of 11 July 2022

·        Added a Transducer name for XDR records for a new device, for roll and for pitch. Transducer names are AS08_ROLL and AS08_PITCH, for the Quark Elec AS08 compass and attitude sensor.


·        Users can now specify a transducer name for pitch and for roll in a boatspecifics file. These names were hard coded until now (many still are) but you can add the transducer names that your measuring device or multiplexer uses in the XDR records it creates.



XDR_roll = yourrolltransducer

XDR_pitch = yourpitchtransducer

For both roll and pitch values, it is assumed the measurement values are in degrees, not radials.

·         Error when sending UDP to non-existing socket corrected. Was a rare error only happening during shutdown.

Version 3.7.2 of 16 June 2022

·        A new key in boatspecifics allows for logging in the copy-nmea-in file of all !AIS records received.

These were skipped until now; if you want them logged as well, specify, in your boatspecifics:


AISin copy = Y

 Of course this only works if you have also selected


NMEAin copy = Y

 This way, you can use SPD to create a complete log of all NMEA-records including all AIS records. Nice to replay a race and also see the position of the competition.


Version 3.7.1 of 26 May 2022

·        Smileys removed from printing smartwarnings. Some Pi’s could not handle them.

   ·        ThisPC_IP set to “not available” if not possible to get that IP from the OS. Stupid Pi again 😉


·        Queue for webserver increased from 8 to 32

Version 3.7.0 of 25 May 2022

·        New key in processlist.ini


connect_retry = 10


·        SPD will now try to repair a lost TCP connection (to your NMEA source) a number of times (connect_retry times) when no more NMEA is coming in over TCP.

This is first noticed by a time out on the connection (hard defined at 10 seconds).

You will be notified of this on-screen, or in print or webserver when headless.

Then every 10 seconds SPD will try to restore the TCP connection, for a maximum of connect_retry times.

When all that fails, SPD will stop.

NB this only applies when setting Run on empty = Y in processlist.ini

With Run on empty = N, SPD will stop after the first time out on the NMEA connection.


·        In case of a serial connection, COM or TTY, all the above is also applicable, with the caveat that it is only working for the incoming COM or TTY. If you also use a separate, second COM or TTY for SPD-NMEA-Output, that one will not be restarted.


·        For completeness sake:

when using a UDP connection for incoming NMEA and with Run on empty = Y, SPD will wait endlessly untill NMEA is received again over UDP. The UDP socket is not re-started.


·        A warning: there can be situations wherein all this restarting will not work. Sometimes COM-ports and TCP-sockets behave not completely as expected (or as they should).


·        When operating SPD in headless mode with web output, SPD will now also print every notification message to the standard output file, so not only deliver it via the webserver.

This can it make easier to debug things when you have changed the environment or some SPD settings.