Every sentence the simulator emits, grouped by instrument. Each entry lists the registry
identifier used in profiles, the default talker, the field layout and an example line
produced from the standard test fixture (a vessel off Athens at 12:34:56.78 UTC on
22 September 2026, making 6.5 knots on course 047.3, with two engines and a destination named
AEGINA). The examples are the golden values the test suite checks; a change to any example is
a change to the output.
A sentence starts with $ (parametric) or ! (encapsulated, used by AIS) followed by a
two-character talker ID and a three-character sentence formatter.
Fields are separated by commas. Empty fields are permitted and mean no data.
The checksum is the XOR of every byte between the start delimiter and *, written as two
upper-case hexadecimal digits.
The total length including $, checksum and the terminating <CR><LF> is at most
82 bytes. When a sentence would exceed this, the number of decimals in latitude and
longitude is reduced, one digit at a time down to two. Every built-in sentence fits with
two decimals and its default talker; a sentence that still does not fit (possible only
with an unusually long talker) is sent as it is rather than dropped.
Numbers never carry a leading +, never render negative zero and use a fixed number of
decimals per field. Positions use four decimal minutes by default (0.19 m resolution).
Talker IDs are configurable per sentence; the tables show the defaults.
Text fields, such as the waypoint name, never contain the characters NMEA 0183 reserves
(,*$!\^~), control characters or bytes outside ASCII: they are
removed before the sentence is framed.
When an output enables TAG blocks each sentence on that output is preceded
by a TAG block of the form \s:<source>,c:<unix time>*hh\.
The autopilot sentences APB, RMB and XTE are sent only while a destination is set; the
propulsion sentences RPM and XDR only for the engines configured. When there is nothing to
report the sentence is skipped for that round rather than sent with empty fields.
The AIS sentences VDO and VDM, which carry a six-bit encoded payload rather than fields, are
described on the AIS reference page.
When the simulated receiver has no fix, RMC and GLL report status V, mode N and empty
position, speed and course fields; GGA reports quality 0, zero satellites and empty
position and altitude; GSA reports fix type 1 with no satellites; VTG has empty values with
mode N; GSV reports zero satellites in view. Sentences that do not depend on the receiver
(heading, depth, wind, rudder) are unaffected.
The three sentences describe the leg from the point where the destination was set (the
origin) to the destination waypoint. The cross-track error is the vessel's distance from
that leg, with the side to steer towards to regain it; bearings are true; the arrival flag is
set inside the arrival circle around the destination and the perpendicular flag once the
vessel has passed the destination along the leg. See the
simulation model for the geometry.
Waypoint ids are sent as configured after removing characters that NMEA 0183 reserves
(,, *, $, !, \, ^, ~), spaces and control characters, and truncating to 16
characters; an id that ends up empty is sent as WPT.
One sentence per configured engine, in profile order. A stopped engine reports zero
revolutions. Engines are numbered from 1 in RPM and their XDR transducers are named
ENGINE#0, ENGINE#1, ... following the convention Signal K and common gateways expect.
The operator can add sentences of their own to the schedule, each with an id, a body and a
period. The body is written as it should appear on the wire without the checksum, for
example $PXYZ,1,2,3 or !AIVDM,1,1,,A,13aEOK?P00PD2wVMdLDRhgvL289?,0; the leading $ may
be left out, an old *hh and line terminator are ignored, and the checksum is computed
when the sentence is sent. A body is refused when it is empty, carries characters outside
printable ASCII or one of $ ! \ ^ ~ inside, has no address of at least three letters or
digits, or would exceed 80 characters with its checksum (82 with the line terminator).
Custom sentences are emitted after the registry sentences of the same round, filtered by
their id like any other sentence (CUSTOM-1, CUSTOM-2, ... when no id is given, numbered
by position in the list) and recorded like them. An id equal to a registry id is refused,
and so is an id that another custom sentence already uses, including an explicit
CUSTOM-2 when the second sentence has no id.