Automotive CAN Bus

CAN stands for (Controller Area Network) and is a data protocol for connecting and communicating among automotive ECUs.

It uses the SAE J1939 protocol.

PGN = Parameter Group Number

OBD= On-Board Diagnostics. Of course Wikipedia explains it all.

Kvaser has products to interface with CAN and a tutorial about the technology in general.

NMEA2000 - Marine Applications

NMEA is the National Marine Electronics Association. (Not to be confused with NEMA, the National Electrical Manufacturers Association, which standardizes things like electrical boxes.)


NMEA 2000 is based on CAN bus electricals as found in cars but with its own codes, not SAE J1939.

250kbit/s (31kB/s) max low level throughput.


This is an older communication specification. It seems to be serial text as opposed to (perhaps more efficient but complex) binary frames. Eric Raymond has a very helpful document on the NMEA 0183 protocol.

The Yacht Devices USB<→NMEA2k converter can do a live conversion to 0183 which may make it easier to see what’s going on.

sudo bash -c 'echo "YDNU MODE 0183" > /dev/ttyACM0'


Physical cabling and hardware must be DeviceNet compliant. This is a standard from equipment like industrial controllers.

There are two sizes of cabling, "mini" and "micro"; these are sometimes referred to as "thick" and "thin" respectively. Vendor complications such as Simrad’s SimNet and Raymarine’s SeaTalk NG are essentially NMEA2k with different cabling (adaptors exist).