Exodus
The whole point

Getting instruments from
different brands to talk.

Your wind gear, your chartplotter, your autopilot and your radar were probably made by people who would rather you bought everything from them. They still have to talk over something. Here's what that something is, what it actually looks like on the wire, and where open source gets you past the fences.

Before anything else

None of what follows would be possible without Kees Verruijt. He reverse engineered NMEA 2000 from scratch and gave it away as CANboat — one man cracked it open for everybody. If you run Signal K or OpenCPN, you are using his work right now.

Sponsor Kees CANboat Everyone else we lean on

Three languages, three kinds of cable

Everything on a boat is one of these

What it carriesSpeed The cableOpen?
NMEA 0183 text sentences 4,800 baud two wires Yes
NMEA 2000 small binary messages 250 kbit/s one shared backbone Mostly
Ethernet radar and sonar pictures 100 Mbit/s + ordinary Cat5 No

Every argument about marine electronics compatibility comes down to which of those three a thing uses, and whether anyone has written down the format.

NMEA 0183 — the one you can read

1983, and still going

0183 is plain text. No decoding, no tooling. If you can see the wire, you can read the data.

$GPVTG,164.0,T,175.2,M,0.0,N,0.0,K,A
$WIMWV,274.1,R,11.7,N,A
$SDDBT,,f,,M,,F

Each line is a sentence. The first two letters after the $ say who is talking — GP is GPS, WI is wind, SD is a sounder. The next three say what kind of message it is. Then comma-separated fields, and a checksum on the end so the listener can tell if it arrived intact.

How it works: one device talks, and anything wired to it listens. That's the whole model. It's a one-way conversation down a pair of wires at 4,800 bits a second — about 40 sentences a second if you push it.

The catch: one talker per wire. Want your GPS heard by three things? You wire it to three things, or buy a multiplexer. It's slow, it's clumsy, and it is still on almost every boat afloat because it is dead simple and it never stops working.

NMEA 2000 — the shared bus

A network instead of a wire per device

N2K fixed the one-talker problem. Everything hangs off one backbone and everything hears everything.

Underneath, it is CAN bus — the same technology your car uses to let the engine talk to the dashboard. 250 kilobits a second, shared by every instrument aboard. Messages are tiny: eight bytes at a time.

Here is the depth sounder on this boat, as it actually appears:

0DF50B05#FF19020000000099
|        |  |        |  |
|        |  |        |  +-- max range
|        |  |        +----- transducer offset
|        |  +-------------- 537 x 0.01 m = 17.6 ft
|        +----------------- sequence tag (unused)
+-------------------------- priority 3, PGN 128267, from device 5

That PGN — Parameter Group Number — is the key. 128267 means "water depth" on every N2K boat in the world, regardless of who built the sensor. 127250 is heading. 130306 is wind. It is a shared dictionary, and that is why a Garmin display can read a Airmar sensor.

And they really are all just cables

This part costs people money. Raymarine sell SeaTalkNG. Simrad and B&G sell SimNet. Furuno have CAN bus. They come in different colours with different plugs and they are sold as if they were different systems.

They are all NMEA 2000. Same two signal wires, same power pair, same 250 kbit CAN bus, same PGNs. What differs is the connector moulded on the end. An adapter cable — which every one of those manufacturers will happily sell you — makes them the same network, because they always were.

If someone tells you their kit "needs" a particular brand of backbone, what they mean is it needs a particular plug.

Ethernet — where the pictures go

Ordinary network cable, extraordinary secrecy

Radar and sonar imagery will not fit on NMEA 2000. Not even close. So manufacturers run a second network: plain ethernet, the same Cat5 cable as a home router.

On this boat the radar streams to one multicast address and the fishfinder to another. Any machine on that network can ask for a copy — which is exactly how our Raspberry Pi gets them.

StreamAddressRate
Quantum radar232.1.216.1:2574250 spokes/rev
Axiom fishfinder226.192.224.0:322171 pings/sec, 157 kB/s

The cable is standard. The connectors are standard. Only the format is secret, and only because nobody published it. That is the one real wall left, and it is made of paperwork rather than technology.

Which is why we sat down and read the bytes.

Eight bytes, or a hundred and fifty thousand

Why one is open and the other isn't

The depth number is eight bytes once a second, and it is open to everyone. The sonar picture is 150,000 bytes a second, and it is locked. That is not a conspiracy, it is arithmetic: one sonar channel is about five times the entire capacity of an NMEA 2000 network. It was never going to fit, so it never got standardised, so it never got opened.

One is eight bytes. The other is a hundred and fifty thousand. The small one fits on an open standard somebody reverse-engineered in an attic. The big one never did.

The decoding work in detail →

So what does open source actually buy you?

The reason any of this matters

A translator in the middle, that speaks all three and belongs to nobody.

On this boat that translator is Signal K, running on a Raspberry Pi. It reads 0183. It reads NMEA 2000. It listens on the ethernet. And it turns all of it into one common set of names that any program can ask for.

What that means in practice:

None of this requires throwing away your marine electronics. We run Raymarine gear and we are glad of it. The open-source layer sits alongside, reads the same wires, and removes the part where one company decides what your own data is allowed to do.

Signal K OpenPlotter Who built all this →