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.
Everything on a boat is one of these
| What it carries | Speed | The cable | Open? | |
|---|---|---|---|---|
| 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.
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.
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.
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.
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.
| Stream | Address | Rate |
|---|---|---|
| Quantum radar | 232.1.216.1:2574 | 250 spokes/rev |
| Axiom fishfinder | 226.192.224.0:3221 | 71 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.
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 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.