2024-11-02

Analyzing Wakespeed Log Files

The Wakespeed WS-500 alternator regulator produces log files, but are in text format and hard to read. I have created a VBA macro for Excel that makes them much easier to analyze. It puts each of the commands into a separate worksheet with column headers for the messages.

Create an Excel workbook. Press Alt+F11 to open the Visual Basic Editor. Select Insert Module from the menu. Paste the code below into the module. Then from the Excel window save this as Wakespeed.xlsm with the file type "Excel Macro-Enabled Workbook (*.xlsm)".

To run the macro, on the View tab, click the Macros button and select WakespeedLogfile from the macros list. Click Run. It will ask you for the wakespeed log file. The result will make it easy to analyze what the Wakespeed is doing.


Option Explicit

Public Sub WakespeedLogfile()
    Dim fso As Scripting.FileSystemObject
    Dim ts As Scripting.TextStream
    Dim astr() As String
    Dim wks As Worksheet
    Dim strLine As String
    Dim fileName As Variant
    Dim rngCell As Range
    Dim rngHeaders As Range
    Dim intBlank As Integer
    
    fileName = Application.GetOpenFilename(FileFilter:="txt files (*.txt), *.txt", Title:="Wakespeed Log File")
    If fileName = False Then
        Exit Sub
    End If
    Call RemoveWorksheets
    Set fso = New Scripting.FileSystemObject
    Set ts = fso.OpenTextFile(fileName)
    Do Until ts.AtEndOfStream
        strLine = ts.ReadLine
        astr = Split(strLine, ",")
        If Left$(astr(0), 1) <> "#" Then
            If Not WorksheetExists(astr(0)) Then
                 Set wks = ThisWorkbook.Worksheets.Add(After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count))
                 wks.Name = astr(0)
                 Call AddColumnHeaders(wks)
            End If
            Set wks = ThisWorkbook.Worksheets(astr(0))
            Call AddRow(wks, astr)
        Else
            Set wks = ThisWorkbook.Worksheets("#")
            wks.Cells(wks.Cells(wks.Rows.Count, 1).End(xlUp).Row + 1, 1).Value = strLine
        End If
    Loop
    ts.Close
    Set ts = Nothing
    Set fso = Nothing
    For Each wks In ThisWorkbook.Worksheets
        intBlank = 1
        Set rngHeaders = wks.UsedRange.Resize(1)
        rngHeaders.HorizontalAlignment = xlCenter
        For Each rngCell In rngHeaders
            If IsEmpty(rngCell.Value) Then
                rngCell.Value = "x" & intBlank
                intBlank = intBlank + 1
            End If
        Next rngCell
        wks.ListObjects.Add(xlSrcRange, wks.UsedRange, , xlYes).TableStyle = "TableStyleLight9"
        wks.Columns.AutoFit
    Next wks
End Sub

Private Sub AddColumnHeaders(wks As Worksheet)
    Dim astr() As String
    Select Case wks.Name
        Case "AOK;"
            astr = Split("AOK;", ",")
        Case "AST;"
            astr = Split("AST;, Hours, , BatVolts, AltAmps, BatAmps, SystemWatts, ,TargetVolts, TargetAmps, TargetWatts, AltState, ,BTemp, ATemp, ,RPMs, , AltVolts, FTemp, DVCC_LimitAmps, FLD%", ",")
        Case "CPE;"
            astr = Split("CPE;, n, acptVBAT, acptTIME, acptEXIT, res1, , ocAMPS, ocTIME, ocVBAT, ocAEXIT, , floatVBAT, floatAMPS, floatTIME, floatRESUMEA, floatRESUMEAH , floatRESUMEV, ,pfTIME, pfRESUME, pfRESUMEAH, , equalVBAT, equalAMPS, equalTIME, equalEXIT, , BatComp, CompMin, MinCharge, MaxCharge, ,RdcVolts, RdcLowTemp, RdcHighTemp, RdcAmps,floatSOC, ,MaxAmps, ,pfVBAT, MaxBatVolts", ",")
        Case "CST;"
            astr = Split("CST;, BatteryID, IDOverride, Instance, Priority, ,Enable NMEA2000?, Enable OSE?, ,AllowRBM?,IsRBM, ShuntAtBat?, ,RBM ID, IgnoringRBM?,Enable_ALT_CAN, ,CAN_ID, ,EngineID, BitRate, Aggregate BMS, N2K Alt Sense, , Enable-DVCC?, DVCC Active?, , CAN_TxErr, CAN_RxErr", ",")
        Case "DBG;"
            astr = Split("DBG;", ",")
        Case "DCV;"
            astr = Split("DCV;, Model, Mode, , Volts, Volts_HalfPower, ,48v Charge Limit Amps, ,12v support Limit Amps, 48v Cutoff Voltage, 48v Cuttoff SOC”, ,12v Refresh Volts, 12v Refresh Hold, 12v Refresh Days", ",")
        Case "DST;"
            astr = Split("DST;, DCDC_State, Volts, ,12vBatVolts, 12vBatCurrent, 48vBatCurrent, DCDC_Temp", ",")
        Case "ENG;"
            astr = Split("ENG;, J1939MaxLoad, ,RFM_RPM, RFM1, RFM2, RFM3, RFM4, RFM5, RFM6, RFM7, RFM8, ,Setpoint in _Setpoint", ",")
        Case "FLT;"
            astr = Split("FLT;, FaultCode, RequriedSensorStatus", ",")
        Case "NAK;"
            astr = Split("NAK;", ",")
        Case "NPC;"
            astr = Split("NPC;, Enable BLE?, Name, Password, , DeviceID, DOM", ",")
        Case "RST;"
            astr = Split("RST;", ",")
        Case "SCV;"
            astr = Split("SCV;, Lockout, BTS2ATS?, RevAmp, SvOvr, BcOvr, CpOvr, ,AltTempSet, drtNORM, drtSMALL, drtHALF, PBF, ,Amp Limit, Watt Limit, , Alt Poles, Drive Ratio, Shunt Ratio, ,IdleRPM, TachMinField, Warmup Delay, Required Sensor, DC_Disconnected_VBat, FeatureIN_mod, TriggerHalfPowerRPM, Ignore Sensor, Feature-OUT mod, ,BMS Amp Cap, Promiscuous Mode", ",")
        Case "SST;"
            astr = Split("SST;, Version , ,Derate Mode, System Options, , CP index, BC Mult, SysVolts, ,AltCap, CapRPMs, , Ahs, Whs, ,ForcedTM?, RequredSensorFlag, ,BLE-ReadOnlyState?", ",")
        Case Else
            Debug.Assert False
    End Select
    Call AddRow(wks, astr)
End Sub

Private Sub AddRow(wks As Worksheet, astr() As String)
    Dim lastRow As Long
    Dim i As Integer
    
    lastRow = wks.Cells(wks.Rows.Count, 1).End(xlUp).Row + 1
    For i = LBound(astr) To UBound(astr)
        wks.Cells(lastRow, i + 1).Value = Trim(astr(i))
    Next i
End Sub

Private Sub RemoveWorksheets()
    Dim wks As Worksheet
    On Error Resume Next
    Application.DisplayAlerts = False
    Set wks = ThisWorkbook.Worksheets.Add(After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count))
    For Each wks In ThisWorkbook.Worksheets
        wks.Delete
    Next wks
    Application.DisplayAlerts = True
    Set wks = ThisWorkbook.Worksheets.Item(1)
    wks.Name = "#"
    wks.UsedRange.ClearContents
    wks.Cells(1, 1).Value = "Comment"
    On Error GoTo 0
End Sub

Private Function WorksheetExists(sheetName As String) As Boolean
    Dim ws As Worksheet
    On Error Resume Next
    Set ws = ThisWorkbook.Worksheets(sheetName)
    WorksheetExists = Not ws Is Nothing
    On Error GoTo 0
End Function

2023-07-02

What Gear Should You Be In While Sailing?

There is a common discussion among sailors on what gear you should be in while sailing. You have turned the engine off, raised the sails and are crusing along. Should you be in forward, neutral, or reverse? The issue is that water is flowing across the propellor, which then can potentially turn the shaft, which then turns gears in the transmission. Almost everyone agrees that being in forward gear is a bad idea. This just wrecks the transmission. So that leaves neutral or reverse. In neutral, the prop freely turns as the boat moves, but the transmission is disengaged. If it is in reverse, then the prop is held in place by the transmission. Some people don't like the sound of the prop and shaft turning. The problem is that if it is reverse there is pressure being applied the the transmission, which causes wear and tear. This is what Yanmar says:

Advisory Number: MSA08-003
DATE: February 8, 2008
TO: All Marine Distributors, Dealers and OEMs
SUBJECT: Gear in Neutral While Sailing
MODELS: All Sailboat Engines

We continue to get questions regarding the
correct gear position while sailing with
the engine OFF. This advisory is issued as
a reminder; Yanmar requires that if
sailing with the engine OFF (not running)
the transmission shifter must be in the
neutral position or internal damage to
the gear or sail-drive will result. This
damage will not be covered by Yanmar’s
Limited Warranty. Please instruct
customers and dealers who deliver the
sailboat to the customer, of the correct
(Neutral) position for the marine gear
while sailing.

If the customer desires that the
propeller shaft not spin while sailing,
either a folding propeller, shaft break,
or other suitable device may be used.
However, Yanmar accepts no responsibility
for the selection, installation, or
operation of such devices. Please also
refer to Marine service advisory
“MSA07-001 Yanmar Sail Drive Propeller
Selection” for additional information.

So they give the alternatives. You can have a folding prop, shaft break, or other suitable device. If you have a folding prop, the gear still must be in neutral. The prop being folded will cause the shaft to spin minimally. If you have some kind of shaft break, then potentially the prop can be locked, because the shaft can be disconnected from the transmission.

While the advisory above is for Yanmar engines, I don't see how it doesn't apply to all makes of engines. Having just spent thousands of dollars to get the transmission on Achernar rebuilt, we are going to do everything we can to protect our investment.

2023-06-22

Everything You Never Wanted to Know About Hull Identification Numbers (HINs)

A Hull Identification Number (HIN) is an identifier meant to uniquely identify a particular vessel. They are the equivalent of a Vehicle Identification Number (VIN) on a car. No two vessels should have the same HIN. The HIN is filed with many different documenting agencies, including states, the U.S. Coast Guard (USCG) (or other countries' coast guard), insurance companies, banks, marinas, etc. So just as listing a wrong Social Security Number on a tax return is likely to cause problems, listing a wrong HIN on a form is likely to cause problems too.

We have owned two boats. When we acquired them, the paperwork on both of them had a HIN listed that was different than was etched on the boat. Based on a sample size of two, this is a very common thing. If it is messed up, it is worth the trouble to get it fixed. (One had a misreading of the badly etched HIN, the other had the wrong build month recorded.)

A couple of caveats in the discussion below...This discussion is about recreational boats built since November 1, 1972 sold in the U.S. I'm not going to talk about boats built before 1972, homemade boats, boats imported from foreign countries that don't follow United States rules, or commercial boats.

The Manufacturer's Identification Code (MIC)

Each manufacturer of marine equipment, including boats, is assigned a three letter code that uniquely identifies them called the Manufacturer's Identification Code (MIC). For example, Catalina Yachts is assigned CTY. You can find the definitive list at USCGBoating.org. These codes are used throughout the boating industry, so if, for example, you visit the Fisheries Supply web site, their product descriptions includes these MIC identifiers.

Finding the HIN for Your Boat

First, let's find out what the HIN is that is assigned to your boat. The HIN should be recorded in two places on the boat (however, the rules have changed over the years, so boats built before August 1, 1984 may not follow all of the rules). Here are the exact rules for where a HIN should be located from 33 CFR §181.29:

§ 181.29 Hull identification number display.

Two identical hull identification numbers are required to be displayed on each boat hull.

(a) The primary hull identification number must be affixed—

(1) On boats with transoms, to the starboard outboard side of the transom within two inches of the top of the transom, gunwale, or hull/deck joint, whichever is lowest.

(2) On boats without transoms or on boats on which it would be impractical to use the transom, to the starboard outboard side of the hull, aft, within one foot of the stern and within two inches of the top of the hull side, gunwale or hull/deck joint, whichever is lowest.

(3) On catamarans and pontoon boats which have readily replaceable hulls, to the aft crossbeam within one foot of the starboard hull attachment.

(4) If the hull identification number would not be visible, because of rails, fittings, or other accessories, the number must be affixed as near as possible to the location specified in paragraph (a) of this section.

(b) The duplicate hull identification number must be affixed in an unexposed location on the interior of the boat or beneath a fitting or item of hardware.

(c) Each hull identification number must be carved, burned, stamped, embossed, molded, bonded, or otherwise permanently affixed to the boat so that alteration, removal, or replacement would be obvious. If the number is on a separate plate, the plate must be fastened in such a manner that its removal would normally cause some scarring of or damage to the surrounding hull area. A hull identification number must not be attached to parts of the boat that are removable.

(d) The characters of each hull identification number must be no less than one-fourth of an inch high.

On a Catalina 320, the primary HIN is affixed on the starboard side aft, just below the rubrail. On the Catalina 22, it is on the transom just below the rubrail. In both cases, it was scratched into the fiberglass with an etching tool. On the 22, it was difficult to read partly because the handwriting sucked. The second HIN on the 320 is on the starboard side under the V-berth on the bulkhead, but on other boat models will be in other places.

Furthermore, § 181.27 says that:

With the exception of the characters “US-”, which constitute the country of origin code for the United States, if information is displayed on the boat within 2 inches of the 12-character hull identification number (HIN), that information must be separated from the HIN by means of borders or must be on a separate label, so that it will not be interpreted as part of the hull identification number.

HIN Formats

Since November 1, 1972 there have been three HIN formats: The Current Format, which has been used since August 1, 1984 to the present. And two older formats used between November 1, 1972 and July 31, 1984: The Straight Year Format and the Model Year Format.

The Current Format is described in § 181.25:

§ 181.25 Hull identification number format.

Each of the hull identification numbers required by § 181.23 must consist of twelve characters, uninterrupted by slashes, hyphens, or spaces, as follows:

(a) The first three characters must be a manufacturer identification code assigned under § 181.31(a) or the importer designation assigned under § 181.31(b).

(b) Characters four through eight must be a serial number assigned by the manufacturer in letters of the English alphabet, or Arabic numerals, or both, except the letters I, O, and Q.

(c) Characters nine and ten must indicate the month and year of certification when a date of certification is required. In all other cases characters nine and ten must indicate the date of manufacture. The date indicated can be no earlier than the date construction or assembly began and no later than the date the boat leaves the place of manufacture or assembly or is imported into the United States for the purposes of sale. Character nine must be indicated using letters of the English alphabet. The first month of the year, January, must be designated by the letter “A”, the second month, February, by the letter “B”, and so on until the last month of the year, December. Character ten must be the last digit of the year of manufacture or certification and must be an Arabic numeral.

(d) Characters eleven and twelve must indicate the model year using Arabic numerals for the last two numbers of the model year such as “82” for 1982 and “83” for 1983.

So, for example, a Catalina 320 HIN begins with CTY. This is followed by a serial number begins with the letter "C", then followed by a four digit sequential hull number (very early 320s used Q instead of C, but Q is not allowed in the serial number as described in the rules above because it might be confused with 0). So hull #87, would be C0087. For the Catalina 22, the HIN serial number beings with the letter "H" followed by a four digit sequential hull number. However, Catalina has made more than 20000 Catalina 22s, so this has rolled over twice. If you see H2284 as the serial number, you will need to look to the last 4 characters to determine whether the hull number is 2284, 12284, or 22284 from the HIN and doing a little research on when these hull numbers rolled over. Only a few boat models have had more than 10000 hulls built and have this issue.

The month of manufacture is then encoded with a letter A-L. This followed by the last digit of the year of manufacture. So, October of 1993 would be encoded J3 (but so would October of 2003). The last two digits are the model year of the boat. Model years typically start at some point in the previous year. For the Catalina 320, the new model year starts in June of the previous year, but many manufacturers start their model year in August. Model year 1994 would be encoded as 94, whereas model year 2004 would be encoded 04.

So putting it all together, Catalina 320 hull #87 build in October of 1993 as a 1994 model year would have a HIN CTYC0087J394.

Note that HINs can contain the letter I in the MIC and in the month of manufacture, and that is a different character than the number 1. Make sure that I, 1, L, O, Q, and 0 are recorded correctly when submitting any paperwork.

The older formats are encoded like this:

Straight Year: 3 digit MIC, 5 digit serial #, 2 digit month of production, 2 digit year. Example: CYT6A130579 for Cobalt Yachts with serial number 6A130, built in May of 1979.

Model Year: 3 digit MIC, 5 digit serial #, the letter M, 2 digit model year, 1 letter month of production. The key for the month in Model Year format is A=August, B=September, ... L=July. Example: ZVMD1769M80L for Vandestadt and McGruer with serial number D1769, built in July of 1980. Boats built a month later would have the last four characters being M81A.

What To Do When the HIN is Wrong

When both of our boats had an improper HIN on some of the paperwork, we needed to get it fixed with the Coast Guard and the state. We first needed photographs and a rubbing of the HIN on the hull. Then we needed to present that info to the state department of licensing. For the Catalina 22, after paying appropriate fees, a new registration and title was issued. For the 320, the title company got the HIN straightened out with the Coast Guard documentation, and after presenting the Coast Guard documentation to the state, the state issued a new registration with the fixed HIN. The old HIN is recorded in a comment on the registration.

The Coast Guard rules for a malformed HIN are described in this document (along with much other materials about HINs). It shows this flow chart for how to fix a HIN:

2023-05-13

Catalina 320 Hull Numbers by Build and Model Year

I did some investigating in the Coast Guard database of registered vessels, looking at the range of the Catalina 320 hull numbers versus build year and model year. I also looked at the self-reported HINs from the Catalina 320 International hull numbers. The hull numbers below are the range I found for each year, based on the HINs that were listed. The numbers between the last shown for a year and the first for the following year might be in either of them, as there was no data on those.

See the companion article to this one that talks about HINs.

Because the HINs are self-reported to both the C320 web site and the Coast Guard, this data may be not entirely accurate. People frequently mis-read their HIN. Catalina may have done some messing with numbers at the ends of build and model years, as well, so specific hull numbers may be forward or back a year. For example, hull numbers 101 and 102 were built in January of 1994, but hulls 103-105 were built in December of 1993. Hulls 101 and 102 probably had some issue that caused their completion to slip into the new year while the 103-105 hulls were completed. There are certainly some HINs in the Coast Guard database that can't be right.

Just to give you an example of how to use the table, if you know a boat is hull number 600, it would be built in 1998, but was a 1999 model year boat. It also means that you can construct all but one character of the HIN...CTYC0600?899, where the only question is what month the boat was built in. The question mark would be a letter between A and L If you search for CTYC0600 on the Coast Guard web site, you find that the letter is K, which means it was built in November.

Don't bother trying to keep your HIN secret, as it is public information. Besides being on the exterior of your boat, from the table below, someone can determine every digit of the HIN except one from just viewing your sail that says that you are on a Catalina 320 with hull number 600. The last digit, the build month, can be guessed or found on the Coast Guard database. The owner of the boat, though, is not public.

This info can be useful if you are purchasing a Catalina 320. If they tell you the hull number is 600, but that it was built in 2003, you know they are mis-informed or lying. Boats years in advertisements should list the model year, not the build year (just like with cars), so hull 600 should be listed as a 1999 Catalina 320. Catalina switched to new model years starting on June 1st of the previous year.

2022-12-31

What is a MMSI?

In boating, the term MMSI is used a lot, but what does it really mean? I'll break it down and give some references where you can get more details.

The MMSI is one of three identifying numbers on your boat. Another one is the HIN. See this article about the HIN for your boat. The third number is the Vessel Identification Number, which is the identifying number for the boat.

MMSI is an acronym for Maritime Mobile Service Identity. It is meant to be a unique identifier to identify a ship or coast guard station, and other maritime entities. It consists of a nine digit number, and specific digits in the MMSI have special meaning. The first digit indicates (with a few exceptions):

  • 0 Ship group, coast station, or group of coast stations
  • 1 Search and Rescue aircraft
  • 2-7 Individual ships, further broken by region
    • 2 Europe
    • 3 North America, Central America, and the Caribbean
    • 4 Asia (except the Southeast)
    • 5 Oceana and Southeast Asia
    • 6 Africa
    • 7 South America
  • 8 Handheld VHF transceivers
  • 9 Devices(such as EPIRBs and AtoNs)

There are three digits, usually the first three, called the MID (Maritime Identification Digits). These together identify the flag state (country) that issued the MMSI. The definitive list of these can found at the International Telecommunication Union web site. Some countries have multiple MIDs assigned to them. Some landlocked countries don't have any MIDs assigned to them. The MIDs 338 and 366-369 are assigned to the United States, but 303 is used in Alaska, 358 in Puerto Rico, 379 in the U.S. Virgin Islands, 536 Northern Mariana Islands, and 559 American Samoa. Canada is assigned 316. If the MID is the first three digits, then that leaves six digits to assign to boats. The FCC (Federal Communications Commission) only issues numbers that ends in zero (leaving five digits), but allows other entities to issue MMSIs for pleasure craft. However, the MMSIs not issued by the FCC should not be used in international waters, as the numbers are not migrated to the international databases. You can get an MMSI from these organizations in the United States:

Suppose you get a non-FCC MMSI and are cruising in Canada. You hit an iceberg in some isolated fjord, start sinking like the Titanic, and press the DSC "panic button" on your VHF radio. The Canadian Coast Guard systems will look in their database of MMSI numbers and not find your boat. This can delay rescue efforts as they try to track down info on what boat is sinking. If they do manage to rescue you, on top of your other problems you may be having a little discussion about using unauthorized communication systems in Canadian waters. If you are going outside the United States, get your MMSI from the FCC. If you do have a non-FCC MMSI, you will need to cancel it with the entity that issued it and acquire a new one from the FCC.

The MMSIs that start with digits outside 2 to 7 don't follow the same format, so if you have a handheld VHF with DSC or an EPIRB, the layout of digits is different. For example, an EPIRB has the format 98MIDxxxx.

Obviously, there are limitations on the number of MMSIs that can be issued. Canada, with a single MID, can only issue MMSIs for 10000 EPIRBs. One way that this is handled is that MMSIs are sometimes reissued. A MMSI in the U.S. issued by the FCC is valid for 10 years, after which it must be renewed or it expires. An expired MMSI can presumably be reissued. To cut down on the changing of MMSIs, the FCC does not let end-users change the MMSI on a device. After it has been entered, it must be delivered to an authorized agent of the manufacturer to change the MMSI.

The United States currently has registered about 12 million boats. The five MIDs assigned to the continental United States can allocate only 5 million MMSIs, and only 10% of them can be issued by the FCC to work internationally. However, most boats do not have a MMSI assigned, which is why the pool has not been exhausted. However, at some point, the United States will need to acquire some more MIDs. Fortunately, the ones between 380 and 399 are currently unallocated.

A MMSI in the United States is issued to a single boat licensed by a single person, company, or other organization. If the boat is sold, the FCC has a technique where the MMSI can be transferred, but it requires the cooperation of both the seller and the buyer. If you buy a boat, you might want to put into your conditions the transferring of the MMSI.

2022-12-22

Installing Raspberry Pi and SignalK on a Boat

This is a summary of all of the information necessary to install a Raspberry Pi on a boat. Although there are a lot of steps, the process is relatively straightforward, especially with the script provided.

Some pieces have been covered before on this site, but this will put it all in one place. The links to Amazon are affiliate links that will contribute a small amount to support this site.

Pre-requisites

This article makes the assumption that you already have:
  • A NMEA 2000 network. This should have at least a GPS on it.
  • A MMSI. This number identifies your boat. You can get one for free from BoatUS, but if you are going to travel internationally, you need to get one from the FCC.
  • A WiFi router with a connection to the Internet. You will need to know the router name and the password. We use a Galaxy Tab A7 Lite configured as a mobile hotspot. This adds about $20 a month to our cell phone bill, and allows constant connection of the Internet from anywhere there is a T-Mobile cell tower. T-Mobile frequently gives them away with a two year commitment. Some marina WiFi routers will not work for this as they block direct connections between devices on the router. The router should allow the laptop to connect to Raspberry Pi and both the laptop and the Raspberry Pi to reliably connect to the Internet.
  • A laptop computer with WiFi, Remote Desktop Client, and SSH. This will provide your connection into the Pi through SSH or Remote Desktop to configure it. We use an older Microsoft Surface Pro which takes up less space on the boat than most laptops. You can find them used on eBay. The laptop needs to have SSH installed on it. SSH is an optional component in the Windows operating system, so you may need to install it. Windows computers should come with Remote Desktop Client.
Gather and record this information

The Hardware

You will need the following hardware. You may have some of it on hand.

  • A Raspberry Pi. There are several models, but putting a more powerful one on the boat makes sense as you can add more monitoring.
  • A Pican-M hat board. This provides the input from the NMEA network, including the 12V power from the network.
  • A case for Pi and Pican-M. This encloses both and provides cutouts for all the necessary inputs.
  • A NMEA 2000 tee connector. This adds a drop location to the NMEA 2000 network.
  • A NMEA 2000 drop cable. These cables come in various lengths. Purchase one that is the shortest length necessary to go from your NMEA tee connector to where you are mounting the Raspberry Pi.
  • A micro SD card. Should be at least 32 GB, but more is better. We managed to accidentally completely fill a 32 GB card with log files, which made the Pi very unhappy. Note that not all SD cards are equal. For a system like this, you should get an A2 rated card.
  • A micro SD card reader. If your laptop doesn't have one built in, you can get an external one. Most micro SD cards come with an adapter that allows them to be used in full-sized SD card slots.

Make sure the NMEA 2000 network is powered off. Plug the Pican-M hat board onto the Raspberry Pi. Add the NMEA 2000 tee to the backbone. Attach the drop cable to the tee and the Raspberry Pi.

Optional Hardware

For the initial configuration of the Raspberry Pi, you may want to connect it to a keyboard, mouse, and HDMI monitor. Any USB keyboard and mouse will work. You will need a micro-HDMI to HDMI cable to connect the Raspberry Pi to the monitor. This optional hardware will allow monitoring and debugging if something goes wrong with the WiFi connection. To build a NMEA 2000 network off the boat for testing purposes, you can use this kit. To supply power, you can use a 12V power supply.You can also use a USB-C cable to power it from some other computer.

Configuring the SD Card

You will need to configure the SD card. For that, the easiest thing is to run the Raspberry Pi imager on your laptop. Follow the steps below. You can also see this video that walks through the process.

  1. Plug the micro SD card into the laptop. Make sure that there is nothing valuable on it, because this process will delete the entire content of the SD card.
  2. Download and install the imager from the Raspberry Pi web site.
  3. Run the imager.
  4. Click the "Choose OS" button and select the Raspberry Pi OS (32-bit) operating system.
  5. Click the "Choose Storage" button and select your micro SD card.
  6. Click the Gear advanced button in the lower right. Set the following options, checking the checkbox next to each one:
    1. Set Host Name. This is what you will use to connect to the Raspberry Pi. We recommend the name of your boat. The name can only contain the letters A-Z, the digits 0-9, and the hyphen (-). It cannot contain spaces, so if your boat is named The Blue Whale, use either TheBlueWhale or The-Blue-Whale. The name is actually case insensitive, so capitalization doesn't matter. The host name will have .local appended to the end. Write this down so you don't forget.
    2. Enable SSH. Use Password Authentication.
    3. Set Username and Password. Use "pi" for the username, and type a password that you can remember and easily type. You will be typing this frequently. Write this down so you don't forget.
    4. Configure Wireless LAN. Type the name of your WiFi router and its password. Set the wireless LAN country to the two letter country code of the location of the router.
      Note that the name of the WiFi router entered is case sensitive and must exactly match the given router, including capitalization. If the WiFi does not connect later, check that you got this right.
    5. Set Locale Settings. Set the Time Zone to a city in your time zone. Set the Keyboard Layout to the layout that is on your laptop.
    6. Check Play a sound when finished.
    7. Check Eject media when finished.
    8. Leave Enable telemetry unchecked.
    9. Click Save.
  7. Click the "Write" button. The program will confirm that you wish to overwrite the existing content of the card.
  8. When it shows it is complete, remove the micro SD card from the laptop.

Logging into the Raspberry Pi and Configuring It

  1. Make sure the power is off on the NMEA 2000 network.
  2. Insert the micro SD card into the Raspberry Pi.
  3. Turn the power on the NMEA 2000 network. You should see the red power LED on the Raspberry Pi inside the case through the vent holes. There will also be a green LED that shows disk activity. The first time you power it on, it will take several minutes before the operating system is fully booted as it has some configuration steps it needs to perform. This varies based on the size of the SD card. A 32 GB card took only a couple of minutes, whereas a 512 GB card took about 15 minutes. If you connect an external monitor, you can watch the progress, although much of the time the screen will be blank. The Raspberry Pi should log into the WiFi router automatically, so check the connection on the router if you can.
  4. On your laptop, connect to the same WiFi router that the Raspberry Pi is connecting to.
  5. From your laptop, create a command prompt. In Windows, you can do this by typing "cmd" in the search box on the task bar and pressing Enter.
  6. Enter the following command to log into the Raspberry Pi using SSH. You will need the Host Name and Password you assigned above. If the Host Name is The-Blue-Whale.local, type this and press Enter:

    ssh pi@The-Blue-Whale.local

    The first time you do this, it will warn that it has never seen the key before and do you want to continue. Type "yes" and Enter. It should prompt you for a password. Type the password and press Enter. If all goes well, it should log you into the Raspberry Pi. Note that entering the password does not echo or show up as asterisks.

    What if it doesn't log in?

    If it complains that SSH is not recognized as a command, you will need to install SSH as discussed above.

    If it responds that it could not resolve the host name, then you will need to connect using the IP address the WiFi router assigned to the Raspberry Pi. This can be a bit of a guessing game if you do not have access to the router or do not have the monitor and keyboard attached to the Raspberry Pi. Find the IPv4 local IP address of your laptop, then try changing the last number of the IPv4 address to others that are nearby. For example, if the laptop IPv4 address is 192.168.1.32, you should try 192.168.1.31 and other nearby numbers. Try to login with ssh pi@192.168.1.31

    If it responds that the connection timed out, then something has gone wrong with the network connection between the laptop and the Raspberry Pi and you will need to debug where the connection is breaking down. Debugging that is beyond what we can cover here.
  7. Download a script that we created that configures the Raspberry Pi and installs SignalK. Type this command that downloads the current script from the Internet:

      curl -O http://www.xoc.net/downloads/installpi.sh

    This command downloads the file and places it into the current directory.
  8. Run the script as "root". Type

    sudo bash piinstall.sh

    This script performs the following tasks. After each one, it will pause and have you press Enter before continuing with the next one.
    1. Change the pi to boot to a command prompt instead of to the desktop.
    2. Updates all the packages on the Raspberry Pi to the latest versions
    3. Installs nodejs and npm. These are a JavaScript library and a package manager for node packages.
    4. Installs xrdp packages that allows remote desktop into the Raspberry Pi.
    5. Fixes a problem with the xrdp packages.
    6. Installs and configures CanBus packages. CanBus is the protocol that NMEA 2000 is built on.
    7. Installs SignalK. The SignalK packages provides a services that turns NMEA 2000 information into easier to understand XML. It also installs a local web server that allows management of SignalK applications. The SignalK installer will ask you several questions:
      1. Where you want the SignalK configuration installed. You can just press Enter to place them in /home/pi/.signalk.
      2. The name of your boat.
      3. Your MMSI.
      4. Whether you want to use port 80 or port 3000 for the SignalK web site. You just just press Enter to use port 3000.
      5. If you want to enable SSL (Secure Socket Layer). You can just press Enter to leave SSL disabled.
    8. Reboots the Raspberry Pi.

Logging in to SignalK

  1. From the laptop, search for and run the Remote Desktop Connection app.
  2. Enter the Host Name or IP address of the Raspberry Pi in the Computer textbox. Click the Connect button.
  3. You may get a warning about the certificate. You can check the box for "Don't ask me again" and click the Yes button.
  4. The Remote Desktop program will show the Raspberry Pi login screen. The session should be Xorg, the username Pi, and the password the password you assigned to the Raspberry Pi. Click OK.
  5. The Raspberry Pi will show its Desktop. On the top bar click, the "World" icon that brings up the Chrome web browser.
  6. In the URL line on the browser, enter "127.0.0.1:3000" and press Enter. 127.0.0.1 is the IP address of the local computer, and 3000 is the port number that SignalK listens on for a web connection. This will bring up the SignalK configuration web page."
  7. In the upper right is the menu icon. From here you can create a login to SignalK and log in. From here you can install SignalK applications that work with your boat.

2022-09-28

Wiring the Instruments on a Catalina 320

We are getting close to finishing the update to our wiring on our 1994 Catalina 320 Achernar. As the boat came, it had the original Raymarine depth, wind, speed, and autopilot devices at the binnacle. It also came with an approximately ten-year-old AIS, antenna splitter, AM/FM radio, and chart plotter, as well as an ancient VHF radio, and Garmin radar dome on the mast. The chart plotter supports NMEA 2000, but the AIS only supports NMEA 0183 (see the other posts we have done about these technologies). The NMEA 2000 network on the boat only had three drops: 12V in, a Garmin 17X GPS antenna, and the Garmin 4212 chart plotter. The chart plotter showed radar and GPS, but none of the info from the devices at the binnacle, nor the AIS info. The AIS broadcasted the info about the location of our boat, but didn't have any way to show the location of any other boats.

Our goals:

  • A VHF radio that supports DSC
  • A VHF remote handset accessible from the cockpit
  • A chart plotter showing depth, wind, speed, autopilot, and AIS info
  • Saillogger recording the info on our travels with a reliable Internet connection
  • Replace as few of the instruments and devices as possible

Eventually, we'd like to replace all the instruments and devices with state-of-the-art equipment. But this will take a considerable amount of time and we'd rather be out cruising.

Since the VHF radio didn't support DSC, that required a replacement. We consider DSC to be a critical safety system on the boat as it provides a panic button that alerts the Coast Guard to our exact location should we run into problems. We replaced the VHF with a new Standard Horizon GX6000 (in retrospect, we could have gone with a cheaper radio and still met our goals). We also acquired the RAM4 wired remote microphone. We considered the wireless remote microphone, but the reviews we read said that the wireless version was unreliable. Unfortunately, the squelch on the radio failed shortly after we installed it, causing the radio to blast static at full volume. We had to send it in for warranty repair, which required almost six weeks to turn around, plus the cost of shipping it to them.

We ran new wires between the "garage" (the large locker on the port side of the Catalina 320) and the panel to the right of the chart table in the cabin. The two wires we ran were a NMEA 2000 backbone cable and the cable to support the RAM4 microphone. There is a channel for wires that runs across the top behind the galley cabinets. We opened the panel on the right side of the top right cabinet that allowed a fish tape to be extended from the electrical panel, through the channel, to the garage. This made fishing the new cables relatively easy. There is lots of room for cables in the channel.

Wires run under the pedestal in the aft cabin

In the garage, we added two blocks that provide the connection of the NMEA 2000 backbone to the devices at the binnacle. The ST60+ depth, ST 30 wind, ST 30 speed, and ST4000+ autopilot were all connected to each other with a SeaTalk1 network. However, the network did not extend anywhere else. We ran a new SeaTalk1 cable from the garage to the port aft lazarette, then under the pedestal in the aft cabin and up the stanchion to the devices. This required taking off the cover from under the pedestal in the aft cabin, which was held in place with bunch of screws. We removed two cables that ran up to the instrument panel: an obsolete and unused depth cable and a power cable. This freed space inside the port-side stainless steel pedestal support stanchion. We pulled the SeaTalk1 cable by taping it to one of the cables we were removing. We had to cut the SeaTalk1 cable to pull it, then splice the cable back together because the cable end was too large to fit down the stanchion. Because the SeaTalk1 cable provides power, we no longer needed the separate power cable and removed it.

The SeaTalk1 cable is attached to a small block that just allows another SeaTalk1 cable to be plugged in. That then connects to the SeaTalk1 to SeaTalk NG Converter. This block converts SeaTalk1 to SeaTalk NG (which is the same protocol as NMEA 2000, but with proprietary connectors). This then has a cable that has a SeaTalk NG connector on one end and NMEA 2000 connector on the other. This connects to the NMEA 2000 backbone. As soon as this was connected, the chart plotter started showing wind speed, wind direction, and depth. This info was also passed to saillogger, so shows up on the monitor page.

Achernar Wiring Block Diagram

The other end of the NMEA 2000 backbone runs into the cabin. This is connected to the Standard Horizon GX6000 VHF. Although the radio has an AIS receiver (but not transmitter) built in, we are not using it, instead using the West Marine AIS 1000 transceiver that came with the boat. (For the last five years Standard Horizon has described a GX6500 model that has an AIS transceiver built in, but the rumor is they have had trouble getting it certified by the FCC.) While we could receive AIS on the GX6000 and transmit with the AIS 1000, we run into a little problem with the antenna.

On a sloop sail boat, you only have one mast, but you need two antennas: one for VHF transmissions and one for AIS transmissions. They need to be separated by several feet. On a power boat, you can just fix two antennas to the top of the cabin in different places. On a sail boat, the workaround is something called an antenna splitter. You put up one antenna, but plug the VHF and the AIS into the antenna splitter and connect that to the antenna. (It can also handle AM/FM.) VHF is considered a safety system. If you push the DSC panic button, you cannot have the AIS transmitting, so when the VHF is being used, the splitter gives it priority. But if you have two AIS units, you will need two splitters, which would theoretically work, but asking for trouble. (Why the GX6000 doesn't have an antenna splitter built-in is a mystery.)

Instead, we just ignored the fact that the radio has an AIS receiver and used the West Marine AIS 1000 transceiver that came with the boat. That came with its own can of worms, the first of which was that we changed the MMSI associated with the boat. The MMSI that came with the boat was likely issued by BoatUS or the US Power Squadron. These free numbers only work in the United States. We plan on going to Canada on our boat, so the MMSI needs to be issued by the FCC. An FCC MMSI (which you can identify because it ends in zero) is exchanged with other countries, including Canada. This allows you to push the DSC panic button in Canadian waters and the Canadian Coast Guard will come rescue you. We applied for and received our new MMSI.

However, the FCC does not let end users of electronic equipment arbitrarily change the MMSI on equipment. Our new radio lets you put the number in once, but you have to send it back to Standard Horizon to change it thereafter. Our West Marine AIS already had a MMSI inputted, so it could not be changed. We contacted West Marine, but of course they are not the manufacturer, no longer sell it, and don’t really support it any more. West Marine emailed back some minimally helpful information that eventually led to getting it changed.

The wiring in the garage. Not as beautiful as we would like, but better than it was.

The next challenge was that for the chart plotter to get the AIS info. We needed the AIS to be on the NMEA 2000 network. That is all well and good, except the AIS 1000 only does NMEA 0183. We bought a Digital Yachts iKonvert unit that converts 0183 to 2000. While relatively expensive, it still was much cheaper than buying a new NMEA 2000 compatible AIS transceiver. The iKonvert little box has a NMEA 0183 connector on one side and a NMEA 2000 connector on the other. There are also DIP switches that control what messages should get passed through and the speed of the connection, which we set to AIS and GPS transmitting at 38400 baud. As soon as it was connected, the AIS info from other boats started showing on the chart plotter. A friend confirmed that we were transmitting our location, but that was always working.

But then a new problem started happening: The chart plotter was getting GPS info unreliably. The AIS 1000 has its own GPS antenna, separate from the one on NMEA 2000 network. The iKonvert was passing GPS info through from the AIS 1000 to the NMEA 2000 network, and the Garmin 4212 chart plotter was prioritizing the AIS 1000 GPS info. For whatever reason, this info was coming through intermittently and causing an error. We finally found the setting in the chart plotter to prioritize the Garmin X17 GPS antenna, which solved the problem.

We mounted the external connection for the RAM4 microphone on the port side, just below the propane locker. The boat came with about an inch diameter of broken fiberglass at exactly this spot which needed to be repaired, so drilling it out solved two problems. The one drawback to this location is that the aft locker door will run into the microphone if it is fully opened. So we will be attaching a cable to limit the distance the door will open by a couple of inches.

The last thing we needed was for the Raspberry Pi that saillogger runs on to have a reliable Internet connection. For that we acquired a Galaxy pad A7 Lite with a SIM card from T-Mobile. This runs a wi-fi hotspot that the Pi connects to. The monthly cost is relatively cheap, and the device was free after paying tax and a connection charge.

All of the equipment is now connected and working. Our next step is to make it all pretty, but that’s a topic for another day.

2022-09-24

Don't Use 5200 On Your Boat

This is going to be a rant about 3M Marine Adhesive Sealant 5200 and why you shouldn't use it on your boat. If you are not a boat builder, you have no reason to use it. The problem is that 5200 creates a permanent bond between two surfaces. There is that word "permanent". What, exactly, is permanent on a boat? Is a port-light permanent? Or a winch? How about combing? A stanchion? A bow roller? None of these are permanent. All of them will need to be serviced and replaced at some point. It might be 10 years, or it might be 20. If you use 5200, you, or the person who eventually owns your boat, will swear at that idiot who used 5200.

Okay, there are a few reasons to use 5200. If you are putting a new thru-hull below the waterline, that might be a reason. I think we used 5200 to fasten down the mast step on our Catalina 22 that was loose because that has a seriously long lever trying to pry it up from the deck. But almost anything that you think you should 5200 for could also be done with 4200 or even 4000.

Some people will use debonding agents, or have a scheme with a guitar E string for getting 5200 separated. But why do that when you could have used 4200.

Captain Boomies did a cool demo on why 5200 is the wrong product for anything you can think of on a boat. When you think of something that you might want to use 5200 on, ask yourself "can I use 4200 or even 4000 for that thing".

2022-07-25

Installing the Raspberry Pi and Using Saillogger

A new addition to our boat is the ability to log all of our travels. To do so, we added a Raspberry Pi powered by the boat's 12V system, connected to the NMEA 2000 backbone, and running a program called Saillogger. See our article on boat networking.

We started by buying a Raspberry Pi. This is a single-board small computer. It has most of the functionality of a large desktop on a tiny board. The specs: 1.5 GHz 64-bit quad core ARM Cortex-A72 processor, on-board 802.11ac Wi-Fi, Bluetooth 5, full gigabit Ethernet (throughput not limited), two USB 2.0 ports, two USB 3.0 ports, 8 GB of RAM, and dual-monitor support via a pair of micro HDMI (HDMI Type D) ports for up to 4K resolution. It runs a version of Linux.

Raspberry Pi 4 B

The Raspberry Pi then has added the PICAN-M hat board. This plugs into it and provides NMEA 2000 and NMEA 0183 connections, as well as providing power from the NMEA 2000 connection. It takes in 12V and steps it down to 5V.

PICAN-M hat board that plugs into the Pi

This entire setup is then enclosed into a nifty little case. It is about the same size and somewhat thicker than a pack of playing cards.

Case for the Pi, plus the PICAN-M

You can test the whole setup by using a micro HDMI cable, monitor, USB keyboard, USB mouse, and either a wired or wireless Ethernet connection. The Pi will need a micro SD card. If you want to power the board at home for testing purposes, you will need a 120V to 12V converter to power the NMEA 2000 backbone. You may also need a USB adapter for your computer to transfer the operating system onto the card. We did all our initial setup at home, then moved to the boat where we remotely log in using a laptop via WiFi with both devices connected to a phone hotspot.

Our setup required that we pull a NMEA 2000 backbone cable from the "garage" lazerette where our existing backbone was located to the panel to the right of where the AC/DC distribution is located in the cabin of the Catalina 320. The boat's existing cables feed above and behind the cabinets in the galley. We unscrewed the wood panel on the rightmost cabinet, then easily used an electrical fish wire to pull it from the garage. (Make sure to disconnect from shore power before doing this as there is live AC back there.) This is then fed down behind the AC/DC panel. Power is provided by the 12V on the NMEA 2000. We already have a Garmin 17X GPS antenna on the boat hooked to the backbone to feed GPS info to the chart plotter. We put a "T" on the backbone and installed the terminator. Then we attached a drop cable to the PICAN-M NMEA 2000 socket. This kit will provide all the basic NMEA 2000 hardware.

We installed the Debian and SignalK software onto the Pi. We found this page provided really excellent instructions on the install. If you are not familiar with Linux, you may need a friend to help you. We then installed Saillogger.

Sailogger is a program written by a friend of ours. It consists of two parts: a program installed on the Raspberry Pi through SignalK and a web site to which it uploads the information. It automatically records every time you leave a marina and where you have gone, pulling the info from the GPS (and other devices) on the NMEA 2000 network. The next time the Pi gets an internet connection either through a marina wifi or a phone hotspot, it uploads it to the Saillogger web site. There is very little configuration necessary and virtually no information that needs to be added to the logs. You don't need to remember to start something or end it...it is all automatic as long as the NMEA 2000 backbone is powered.

After installing it, we went out for a day sail on Lake Washington.

One image from the Sailogger upload

Detail of performing Man-Overboard drills

2022-07-19

Cutting Board for Stove Top

We found a perfect cutting board to go onto the stove top of the Seaward Hillerange Model 2172 stove that came with our 1994 Catalina 320. It is a Bisetti Walnut cutting board. If the front bracket wasn't on the stove top, this would drop right in. However, we needed to pry the Bisetti logo off the front (it is a friction fit into two holes, so comes right off), then sand it down where the bracket and screws on the side goes. Then we applied some food grade mineral oil. It is a beautiful addition to the galley. The board has two sides, one with a groove, and either side can be up.

To hold the board perfectly level, we added two brackets to the lower screw on each side of the front fiddle. These are Everbilt 547 475 one inch stainless steel corner brackets. We lightly filed the corner so it wasn't knife sharp.

Cutting board
Corner that had to be sanded down
L Bracket to hold up edge

2022-07-15

ASA Certification on a Bavaria 41

Most places that you charter a boat, you need to get a certification to show that you are qualified. The two organizations that provide the the most widely recognized certification organizations in the United States are US Sailing and American Sailing Association (ASA). Our plan was to get our certifications so we could fly somewhere else, such as the Caribbean, and charter a boat there.

Just before Covid hit, we were on our way to getting certifications with US Sailing, having completed our Basic Keelboat certification. Covid put a hold on completing the certifications. When we decided to upgrade our own boat, we were initially looking at larger boats, but we chose to go somewhat smaller at 32 feet to leave budget to charter boats elsewhere (and budget for upgrades, as well). As we revisited certifications this year, we found an ASA course that met our needs. We booked a week-long trip through San Juan Sailing that covered ASA 101 Basic Keelboat Sailing, ASA 103 Basic Coastal Cruising, and ASA 104 Bareboat Cruising. This allows us to charter monohull boats up to 45 feet anywhere in the world.

San Juan Sailing has a fleet of about 60 boats mostly sailing out of Bellingham, Washington. We got booked onto a three-cabin, two head, Bavaria 41, Fresh Aire. The cruise had five crew: Sandi and Greg, Mark and Jessica, and the instructor, Bob. Bob has been sailing for 30 years and knows his stuff. Mark and Jessica have been power boaters on lakes and rivers, but are new to sailing.

The Bavaria 41, Fresh Air Mediterranean docked at Stuart Island.
The course ran from Saturday, July 9 to Friday, July 15, 2022. We checked in by 11 a.m. and brought our stuff down to the boat. The first test was finding all of the safety equipment on the boat. We drew straws for cabins, and got the starboard aft cabin. This cabin has the feet at the aft of the boat, which turns out requires more gymnastics than the aft cabin on the Catalina 320 that has the feet pointed at the port side.
San Juan Islands
(by Pfly, CC BY-SA 3.0)

Saturday, July 9: We got lunch ashore, then prepared to leave dock. Our first stop was Sucia Island, on the north side of the San Juan Islands. We left the marina in Bellingham and raised sail, headed north of Lummi Island. At Sucia, we tied up to a linear mooring system in Echo Bay and spent the night.

Sunday, July 10: We sailed to Stuart Island and Mediterranean docked. We hiked to the T-shirt place.

Monday, July 11: In the morning, we did docking training against the line linear docks at Stuart. We sailed to Roche Harbor and docked at the marina.

Tuesday, July 12: We sailed all the way around the south end of San Juan Island, up the east side of Shaw Island, and anchored in Blind Bay. The seas in Harro Strait were four feet. Winds in San Juan Channel were 29 kts sustained, gusting to 32 kts. Sailed very reefed in using the furling mainsail and genoa.

Wednesday, July 13: We sailed to Rosario Resort on Orcas Island and docked at the marina.

Thursday, July 14: We sailed back to Bellingham and docked at the marina. We refueled and pumped out, performing docking training.

Friday, July 15: We did some docking practice in the marina in the morning.

All in all, a successful week. We learned some new techniques and got much better at sail trim. We got a lot of docking practice in. We did lots of man-overboard drills. These drills are not just good for emergencies, but practice in handling the boat.

Sandi at the wheel

2022-06-15

Boat Networking

This is a brain dump of what I've figured out about boat networks.

There are devices on a boat that need to talk to each other, needing protocols and physical connections. This is on a boat which is a physically demanding harsh environment. There is little space, frequently not easy wiring runs, sharp corners (both radius and cutting), and salt water and salty air. They are making some wireless devices now, but I don't trust them to provide a reliable connection in wireless saturated areas (and near military bases), and you still frequently have to get power there anyway so you still need wires.

There are some industry standards:

On our boat, we have to deal with another proprietary physical connection/protocol called Raymarine SeaTalk 1.

The NMEA 0183 physical connection is essentially a RS422 serial connection (an old computer standard that was used to connect computers to modems, among other devices). It is point-to-point...two devices that want to talk to each other need two wires running between them, but one transmitter can have several listeners. While this standard is obsolete, it is still used in many older devices, and newer devices sometimes still support it for backwards compatibility. On Fantasia, we used NMEA 0183 to feed GPS data from the chart plotter to the VHF radio. If you hit the DSC (Digital Selective Calling) panic button on the VHF radio, it would transmit the GPS data to the Coast Guard in a digital format, broadcasting the MMSI (a primary key number into a Coast Guard boat database) and GPS coordinates and saying "come get me". The protocol is expressed essentially in text "sentences" like $GPAAM,A,A,0.10,N,WPTNME*32. It is very low bandwidth, 4800 baud normally. You must run an extra two wires for power, so normally there are four thin wires between devices.

NMEA 2000 is essentially CAN Bus, a standard used in cars, airplanes, and manufacturing. There is a backbone cable that stretches on the boat that is terminated on each end. Various devices plug into this backbone cable, and the drop cable going to the device can be 27 feet. The protocol is 8 byte packets. Most devices produced in the last 10-20 years use this protocol. Bandwidth is 250kbs--good enough for most data, but not for radar/sonar/video. It has power up to 25 watts per device on the wire.

Example of a NMEA 2000 backbone similar to ours.

Our NMEA 2000 backbone on Achernar is literally about 1 foot long (this will be changing soon), with the drop cables running to different points. As we bought Achernar, there were three drops to the NMEA backbone: 12V power in, a Garmin 17X GPS antenna, and a Garmin 4212 chart plotter. Significantly missing is information from the West Marine 1000 AIS transceiver, which has NMEA 0183 (only) output that currently goes nowhere.

NMEA OneNet is essentially Ethernet, with a custom protocol sitting on top of IPv6. The standard took about 10 years to produce, and was published about two years ago. As near as I can tell, no manufactured devices actually use it yet. It should be able to handle radar/sonar/video. It does power with PoE (power over Ethernet), with all the strengths and limitations that has.

The wind, depth, speed over water, water temperature, and autopilot on Achernar don't use any of these to communicate to the displays at the helm...it uses a proprietary protocol called Raymarine SeaTalk 1. (This is not to be confused with SeaTalk NG or several other similarly named protocols. SeaTalk NG is a rebranded NMEA 2000 using proprietary cables.) The details of this SeaTalk 1 have been reverse engineered. You can get SeaTalk 1 devices to talk to a NMEA 2000 network by converting SeaTalk 1 to SeaTalk NG, then connecting SeaTalk NG to NMEA 2000. With this translation, we should be able to see wind, depth, speed, and water temperature on the chart plotter without having to replace all the devices.

Sometimes you want to get the info on the NMEA 2000 backbone in a format that can be interpreted by a computer. With OneNet, that would be easy, you just get a device driver for the OneNet packets, but with NMEA 2000, that's trickier. There is a device called iKommunicate that convert NMEA 2000 packets into Ethernet packets. It basically plugs into the NMEA 2000 backbone and dumps out Ethernet packets in HTTP SignalK format on an Ethernet port. (It also accepts a couple NMEA 0183 devices.)

SignalK is an open source JSON protocol for understanding NMEA 2000 data. The output from the iKommunicate device can be fed to the Ethernet input on a computer or a Raspberry Pi. There are various programs that interpret the SignalK format and produce displays of instruments and log where you have been. Another alternative is there is hat board that fits onto a Raspberry Pi unit called PICAN-M. This board performs the same task as iKommunicate, except it only works with a Raspberry Pi.

Our friend Ilker has written a Signal K logging program that's pretty nice: https://saillogger.com. I will write up our use of this program later.

Our Garmin radar uses an Ethernet cable for talking to our Garmin chart plotter. The cable is run point to point from the radar dome to the chart plotter. It uses a proprietary Garmin protocol.

2022-05-04

Opening Day Raft-Up

Tyee Yacht Club raft up. We are the third boat from the left...the small one.

Only three days after making our way down from Anacortes, we headed back out to join Tyee Yacht Club's raft-up at the Montlake Cut for Opening Day. We tied up with 13 other boats (two more joined after the photo was taken) just north of Marsh Island at the Seattle Arboretum for five days. Opening Day is the official start of Seattle's boating season. On the north side of the cut is a log boom where hundreds of boats tie up. We tied up on the south side where only the yacht clubs get to tie up. Pot luck dinners, drink, and other events happen on the boats.

It was cold and rainy most of the days, but brightened up just in time for the boat parade down the cut.