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.