Complete AIS Message JSON Documentation
Below documents the JSON format used for decoding AIS messages. Depending on the settings for JSON decoding fields may or may not be included in the outcome.
With format JSON_NMEA only the common fields will be included in the JSON package. The AIS message details are still included in the NMEA array embedded in the JSON. With format JSON_FULL the program will perform a full decoding of the AIS messages and include in the JSON. The output format is largely compatible with gpsdecode.
Message types index
Position reports
1, 2, 3 — Class A ·
4 — Base Station ·
9 — SAR Aircraft ·
11 — UTC Response ·
18 — Class B ·
19 — Extended Class B ·
27 — Long-Range
Static / voyage
5 — Static and Voyage ·
24 — Static Data Report
Binary / safety / text
6 — Binary Addressed ·
7, 13 — Binary / Safety Ack ·
8 — Binary Broadcast ·
12 — Safety Addressed ·
14 — Safety Broadcast ·
25, 26 — Single/Multi Slot Binary
Network management
10 — UTC Inquiry ·
15 — Interrogation ·
16 — Assignment Mode ·
17 — DGNSS ·
20 — Data Link Mgmt ·
22 — Channel Mgmt ·
23 — Group Assignment
Aids to navigation
21 — Aid-to-Nav Report ·
28 — AtoN Report (single-slot)
Other
Common fields ·
ASM payloads (Type 6 / 8) ·
Notes
Common Fields
These fields are present in every emitted message:
| Field |
Type |
Description |
Example |
| class |
String |
Always "AIS" |
"AIS" |
| device |
String |
Always "AIS-catcher" |
"AIS-catcher" |
| version |
String |
AIS-catcher version that produced this output |
"v0.68" |
| driver |
Integer |
Numeric device driver identifier |
3 |
| hardware |
String |
Hardware/device product name reported by the driver |
"RTL-SDR" |
| scaled |
Boolean |
Values scaled to engineering units |
true |
| channel |
String |
VHF channel (A or B) |
"A" |
| nmea |
Array of String |
Original NMEA sentence(s) |
["!AIVDM,1,1,,A,13...,0*5C"] |
| type |
Integer |
AIS message type number (1–28) |
1 |
| repeat |
Integer |
Repeat indicator (0..3; 3 = do not repeat) |
0 |
| mmsi |
Integer |
MMSI number |
123456789 |
Optional fields, added depending on input mode and message contents:
| Field |
Type |
Unit |
Description |
| rxtime |
String |
UTC |
Host receive time (YYYYMMDDHHMMSS), always set from the local clock when AIS-catcher decoded the message. Added when timestamping is enabled (-M T). |
| rxuxtime |
Float |
seconds |
Same instant as rxtime, expressed as Unix epoch with microsecond fraction. Added with rxtime. |
| signalpower |
Float |
dB |
Signal power level. Added when stats are enabled (-M D). |
| ppm |
Float |
ppm |
Estimated frequency offset of the receiver during decoding. Added with signalpower. |
| toa |
Float |
seconds |
Upstream time of arrival, if the input carried one. For JSON input that is the source's toa or rxuxtime field (toa wins when both are present); for NMEA it is the tag-block c: timestamp. Omitted when the input had no upstream time. |
| station_id |
Integer or String |
– |
Station identifier (numeric, or 7-char ASCII for SLS). |
| error |
Integer |
– |
Decode error code (only present when a decode error was flagged). |
| country |
String |
– |
Flag country name derived from MMSI MID. Added with -M M. |
| country_code |
String |
– |
ISO-3166 alpha-2 country code derived from MMSI MID. Added with -M M. |
Type 1, 2, 3: Position Report Class A
| Field |
Type |
Range/Units |
Description |
| status |
Integer |
0–15 |
Navigation status |
| status_text |
String |
See note 1 |
Navigation status description |
| turn |
Integer |
±720 °/min |
Rate of turn (scaled). 128 = N/A; ±127 = >5°/30s |
| turn_unscaled |
Integer |
-128..127 |
Raw ROT field (-128 = N/A) |
| speed |
Float |
0–102.2 knots |
Speed over ground |
| accuracy |
Boolean |
– |
Position accuracy flag (1 = DGPS <10 m) |
| lon |
Float |
±180° |
Longitude |
| lat |
Float |
±90° |
Latitude |
| course |
Float |
0–359.9° |
Course over ground |
| heading |
Integer |
0–359° |
True heading (511 = N/A) |
| second |
Integer |
0–59 |
UTC second (60 = N/A; 61 = manual; 62 = dead reckoning; 63 = inoperative) |
| maneuver |
Integer |
0–2 |
Maneuver indicator |
| spare |
Integer |
– |
Spare/reserved bits |
| power |
Boolean |
– |
Transmit power flag (M.1371-6 Table 46; 0 = high, 1 = low). Was part of spare in pre-M.1371-6 revisions. |
| raim |
Boolean |
– |
RAIM flag |
| radio |
Integer |
– |
Radio status (19-bit SOTDMA/ITDMA state). When non-zero, sub-fields are also decoded — see note 5. |
Type 4, 11: Base Station Report / UTC Date Response
| Field |
Type |
Range |
Description |
| timestamp |
String |
ISO-8601 |
UTC timestamp (YYYY-MM-DDTHH:MM:SSZ) |
| year |
Integer |
YYYY |
UTC year |
| month |
Integer |
1–12 |
UTC month |
| day |
Integer |
1–31 |
UTC day |
| hour |
Integer |
0–23 |
UTC hour |
| minute |
Integer |
0–59 |
UTC minute |
| second |
Integer |
0–59 |
UTC second |
| accuracy |
Boolean |
– |
Position accuracy flag |
| lon |
Float |
±180° |
Longitude |
| lat |
Float |
±90° |
Latitude |
| epfd |
Integer |
0–8 |
EPFD type |
| epfd_text |
String |
See note 2 |
EPFD description |
| transmission_control |
Boolean |
– |
Transmission control for satellite broadcast (M.1371-6 Table 49; 0 = stop msg 27 within base coverage, 1 = transmit msg 27). Was part of spare in pre-M.1371-6 revisions. |
| spare |
Integer |
– |
Spare/reserved bits |
| raim |
Boolean |
– |
RAIM flag |
| radio |
Integer |
– |
Radio status. See note 5 for sub-fields. |
Type 5: Static and Voyage Related Data
| Field |
Type |
Range |
Description |
| ais_version |
Integer |
0–3 |
AIS version |
| imo |
Integer |
1–999999999 |
IMO number |
| callsign |
String |
7 chars |
Radio callsign |
| shipname |
String |
20 chars |
Vessel name |
| shiptype |
Integer |
0–99 |
Ship type code |
| shiptype_text |
String |
See note 3 |
Ship type description |
| to_bow |
Integer |
0–511 m |
Dimension to bow |
| to_stern |
Integer |
0–511 m |
Dimension to stern |
| to_port |
Integer |
0–63 m |
Dimension to port |
| to_starboard |
Integer |
0–63 m |
Dimension to starboard |
| epfd |
Integer |
0–8 |
EPFD type |
| epfd_text |
String |
See note 2 |
EPFD description |
| eta |
String |
MM-DDTHH:MMZ |
Estimated time of arrival (UTC) |
| month |
Integer |
1–12 |
ETA month (also exposed individually) |
| day |
Integer |
1–31 |
ETA day |
| hour |
Integer |
0–23 |
ETA hour |
| minute |
Integer |
0–59 |
ETA minute |
| draught |
Float |
0–25.5 m |
Draught in metres |
| destination |
String |
20 chars |
Destination port |
| dte |
Boolean |
– |
Data terminal equipment ready (0 = ready) |
| spare |
Integer |
– |
Spare/reserved bit |
Type 6: Binary Addressed Message
| Field |
Type |
Range |
Description |
| seqno |
Integer |
0–3 |
Sequence number |
| dest_mmsi |
Integer |
9 digits |
Destination MMSI |
| retransmit |
Boolean |
– |
Retransmit flag |
| spare |
Integer |
– |
Spare bit |
| dac |
Integer |
– |
Designated Area Code |
| fid |
Integer |
– |
Functional Identifier |
| data |
String |
hex |
Raw binary payload (only when no decoder matched) |
When the (DAC, FID) pair is recognised, the payload is decoded into structured fields instead of data — see ASM payloads (Type 6 / Type 8) below.
Type 7, 13: Binary / Safety Acknowledge
| Field |
Type |
Range |
Description |
| spare |
Integer |
– |
Spare bits |
| mmsi1 |
Integer |
9 digits |
MMSI number 1 |
| mmsiseq1 |
Integer |
0–3 |
Sequence for MMSI 1 |
| mmsi2 |
Integer |
9 digits |
MMSI number 2 (if present) |
| mmsiseq2 |
Integer |
0–3 |
Sequence for MMSI 2 |
| mmsi3 |
Integer |
9 digits |
MMSI number 3 (if present) |
| mmsiseq3 |
Integer |
0–3 |
Sequence for MMSI 3 |
| mmsi4 |
Integer |
9 digits |
MMSI number 4 (if present) |
| mmsiseq4 |
Integer |
0–3 |
Sequence for MMSI 4 |
Type 8: Binary Broadcast Message
| Field |
Type |
Range |
Description |
| dac |
Integer |
– |
Designated Area Code |
| fid |
Integer |
– |
Functional Identifier |
| data |
String |
hex |
Raw binary payload (only when no decoder matched) |
When the (DAC, FID) pair is recognised, the payload is decoded into structured fields — see ASM payloads (Type 6 / Type 8) below.
Type 9: Standard SAR Aircraft Position Report
| Field |
Type |
Range |
Description |
| alt |
Integer |
0–4095 m |
Altitude (4095 = N/A) |
| speed |
Integer |
0–1023 knots |
Speed over ground |
| accuracy |
Boolean |
– |
Position accuracy |
| lon |
Float |
±180° |
Longitude |
| lat |
Float |
±90° |
Latitude |
| course |
Float |
0–359.9° |
Course over ground |
| second |
Integer |
0–59 |
UTC second |
| alt_sensor |
Boolean |
– |
Altitude sensor (M.1371-6 Table 57; 0 = GNSS, 1 = barometric). Was part of regional in pre-M.1371-6 revisions. |
| spare |
Integer |
– |
Spare bits |
| dte |
Boolean |
– |
DTE flag |
| assigned |
Boolean |
– |
Assigned mode flag |
| raim |
Boolean |
– |
RAIM flag |
| radio |
Integer |
– |
Radio status. See note 5 for sub-fields. |
Type 10: UTC/Date Inquiry
| Field |
Type |
Range |
Description |
| dest_mmsi |
Integer |
9 digits |
Destination MMSI |
Type 11: UTC/Date Response
Same fields as Type 4.
Type 12: Addressed Safety Related Message
| Field |
Type |
Range |
Description |
| seqno |
Integer |
0–3 |
Sequence number |
| dest_mmsi |
Integer |
9 digits |
Destination MMSI |
| retransmit |
Boolean |
– |
Retransmit flag |
| text |
String |
– |
Safety related text |
Type 13: Safety Related Acknowledge
Same fields as Type 7.
Type 14: Safety Related Broadcast Message
| Field |
Type |
Range |
Description |
| text |
String |
– |
Safety related text |
Type 15: Interrogation
| Field |
Type |
Range |
Description |
| mmsi1 |
Integer |
9 digits |
Interrogated MMSI 1 |
| type1_1 |
Integer |
1–27 |
First message type requested from station 1 |
| offset1_1 |
Integer |
– |
Reply slot offset for first request |
| type1_2 |
Integer |
1–27 |
Second message type requested from station 1 (if present) |
| offset1_2 |
Integer |
– |
Reply slot offset for second request |
| mmsi2 |
Integer |
9 digits |
Interrogated MMSI 2 (if present) |
| type2_1 |
Integer |
1–27 |
First message type requested from station 2 |
| offset2_1 |
Integer |
– |
Reply slot offset for first request |
Type 16: Assignment Mode Command
| Field |
Type |
Range |
Description |
| mmsi1 |
Integer |
9 digits |
First MMSI |
| offset1 |
Integer |
– |
First offset |
| increment1 |
Integer |
– |
First increment |
| mmsi2 |
Integer |
9 digits |
Second MMSI (if present) |
| offset2 |
Integer |
– |
Second offset |
| increment2 |
Integer |
– |
Second increment |
Type 17: DGNSS Binary Broadcast Message
| Field |
Type |
Range |
Description |
| lon |
Float |
±180° |
Longitude (1/600 degree resolution) |
| lat |
Float |
±90° |
Latitude (1/600 degree resolution) |
| data |
String |
hex |
DGNSS data |
Type 18: Standard Class B CS Position Report
| Field |
Type |
Range |
Description |
| reserved |
Integer |
– |
Reserved |
| speed |
Float |
0–102.2 knots |
Speed over ground |
| accuracy |
Boolean |
– |
Position accuracy |
| lon |
Float |
±180° |
Longitude |
| lat |
Float |
±90° |
Latitude |
| course |
Float |
0–359.9° |
Course over ground |
| heading |
Integer |
0–359° |
True heading |
| second |
Integer |
0–59 |
UTC second |
| power |
Boolean |
– |
Transmit power flag (M.1371-6 Table 68; 0 = high, 1 = low). Was part of regional in pre-M.1371-6 revisions. |
| spare |
Integer |
– |
Spare bit |
| cs |
Boolean |
– |
Class B unit type flag (false = SOTDMA, true = Carrier Sense) |
| display |
Boolean |
– |
Display flag |
| dsc |
Boolean |
– |
DSC flag |
| band |
Boolean |
– |
Band flag |
| msg22 |
Boolean |
– |
Message 22 flag |
| assigned |
Boolean |
– |
Assigned mode flag |
| raim |
Boolean |
– |
RAIM flag |
| radio |
Integer |
– |
Radio status. See note 5 for sub-fields. |
Type 19: Extended Class B CS Position Report
Aligned to M.1371-6 Table 69: the 8-bit reserved and 4-bit regional fields are now spare per spec.
| Field |
Type |
Range |
Description |
| spare |
Integer |
– |
Spare bits |
| speed |
Float |
0–102.2 knots |
Speed over ground |
| accuracy |
Boolean |
– |
Position accuracy |
| lon |
Float |
±180° |
Longitude |
| lat |
Float |
±90° |
Latitude |
| course |
Float |
0–359.9° |
Course over ground |
| heading |
Integer |
0–359° |
True heading |
| second |
Integer |
0–59 |
UTC second |
| shipname |
String |
20 chars |
Vessel name |
| shiptype |
Integer |
0–99 |
Ship type code |
| shiptype_text |
String |
See note 3 |
Ship type description |
| to_bow |
Integer |
0–511 m |
Dimension to bow |
| to_stern |
Integer |
0–511 m |
Dimension to stern |
| to_port |
Integer |
0–63 m |
Dimension to port |
| to_starboard |
Integer |
0–63 m |
Dimension to starboard |
| epfd |
Integer |
0–8 |
EPFD type |
| epfd_text |
String |
See note 2 |
EPFD description |
| raim |
Boolean |
– |
RAIM flag |
| dte |
Boolean |
– |
DTE flag |
| assigned |
Boolean |
– |
Assigned mode flag |
Type 20: Data Link Management
| Field |
Type |
Range |
Description |
| offset1 |
Integer |
– |
Offset number 1 |
| number1 |
Integer |
– |
Reserved slots 1 |
| timeout1 |
Integer |
minutes |
Timeout 1 |
| increment1 |
Integer |
– |
Increment 1 |
| offset2 |
Integer |
– |
Offset number 2 (if present) |
| number2 |
Integer |
– |
Reserved slots 2 |
| timeout2 |
Integer |
minutes |
Timeout 2 |
| increment2 |
Integer |
– |
Increment 2 |
| offset3 |
Integer |
– |
Offset number 3 (if present) |
| number3 |
Integer |
– |
Reserved slots 3 |
| timeout3 |
Integer |
minutes |
Timeout 3 |
| increment3 |
Integer |
– |
Increment 3 |
| offset4 |
Integer |
– |
Offset number 4 (if present) |
| number4 |
Integer |
– |
Reserved slots 4 |
| timeout4 |
Integer |
minutes |
Timeout 4 |
| increment4 |
Integer |
– |
Increment 4 |
Type 21: Aid-to-Navigation Report
| Field |
Type |
Range |
Description |
| aid_type |
Integer |
0–31 |
Aid type |
| aid_type_text |
String |
See note 4 |
Aid type description |
| name |
String |
20 chars |
Name of aid |
| accuracy |
Boolean |
– |
Position accuracy |
| lon |
Float |
±180° |
Longitude |
| lat |
Float |
±90° |
Latitude |
| to_bow |
Integer |
0–511 m |
Dimension to bow |
| to_stern |
Integer |
0–511 m |
Dimension to stern |
| to_port |
Integer |
0–63 m |
Dimension to port |
| to_starboard |
Integer |
0–63 m |
Dimension to starboard |
| epfd |
Integer |
0–8 |
EPFD type |
| epfd_text |
String |
See note 2 |
EPFD description |
| second |
Integer |
0–59 |
UTC second |
| off_position |
Boolean |
– |
Off position indicator |
| aton_status |
Integer |
0–255 |
AtoN status bits (M.1371-6 Table 71, 8-bit, AtoN-specific status per IALA R0126). Was named regional in pre-M.1371-6 revisions. |
| raim |
Boolean |
– |
RAIM flag |
| virtual_aid |
Boolean |
– |
Virtual aid flag |
| assigned |
Boolean |
– |
Assigned mode flag |
Type 22: Channel Management
| Field |
Type |
Range |
Description |
| channel_a |
Integer |
– |
Channel A number |
| channel_b |
Integer |
– |
Channel B number |
| txrx |
Integer |
– |
Tx/Rx mode |
| power |
Boolean |
– |
Transmit power flag (0 = high, 1 = low) |
| addressed |
Boolean |
– |
Addressed flag |
| band_a |
Boolean |
– |
Channel A band (0 = default, 1 = 12.5 kHz allowed) |
| band_b |
Boolean |
– |
Channel B band |
| zonesize |
Integer |
– |
Size of transitional zone |
If addressed = true:
| Field |
Type |
Range |
Description |
| dest1 |
Integer |
9 digits |
Destination MMSI 1 |
| dest2 |
Integer |
9 digits |
Destination MMSI 2 |
If addressed = false:
| Field |
Type |
Range |
Description |
| ne_lon |
Float |
±180° |
NE longitude |
| ne_lat |
Float |
±90° |
NE latitude |
| sw_lon |
Float |
±180° |
SW longitude |
| sw_lat |
Float |
±90° |
SW latitude |
Type 23: Group Assignment Command
| Field |
Type |
Range |
Description |
| ne_lon |
Float |
±180° |
NE longitude |
| ne_lat |
Float |
±90° |
NE latitude |
| sw_lon |
Float |
±180° |
SW longitude |
| sw_lat |
Float |
±90° |
SW latitude |
| station_type |
Integer |
– |
Station type |
| shiptype |
Integer |
0–99 |
Ship type code |
| shiptype_text |
String |
See note 3 |
Ship type description |
| txrx |
Integer |
– |
Tx/Rx mode |
| interval |
Integer |
– |
Reporting interval |
| quiet |
Integer |
minutes |
Quiet time |
Type 24: Static Data Report
Message Type 24 Part A:
| Field |
Type |
Range |
Description |
| partno |
Integer |
0 |
Part number, always 0 for Part A |
| shipname |
String |
20 chars |
Name of the vessel |
Message Type 24 Part B:
| Field |
Type |
Range |
Description |
| partno |
Integer |
1 |
Part number, always 1 for Part B |
| shiptype |
Integer |
0–99 |
Type of ship and cargo |
| shiptype_text |
String |
See note 3 |
Description of ship type |
| vendorid |
String |
3 chars |
Manufacturer's ID |
| model |
Integer |
0–15 |
Equipment model code |
| serial |
Integer |
0–999999 |
Unit serial number |
| callsign |
String |
7 chars |
Vessel radio callsign |
| to_bow |
Integer |
0–511 m |
Distance from GPS to bow |
| to_stern |
Integer |
0–511 m |
Distance from GPS to stern |
| to_port |
Integer |
0–63 m |
Distance from GPS to port |
| to_starboard |
Integer |
0–63 m |
Distance from GPS to starboard |
| mothership_mmsi |
Integer |
9 digits |
MMSI of mothership (only for auxiliary craft, MMSI prefix 98) |
| epfd |
Integer |
0–8 |
EPFD type (M.1371-6 extended Part B; only when message length ≥ 168 bits) |
| epfd_text |
String |
See note 2 |
EPFD description (only when epfd is present) |
| vdes_capabilities |
Integer |
0–3 |
VDES capabilities (M.1371-6; 0 = AIS only, 1 = VDES ASM, 2 = +VDE-TER, 3 = +VDE-SAT). Only when message length ≥ 168 bits. |
Type 25, 26: Single Slot / Multi Slot Binary Message
The envelope is decoded; when binary_data_flag = 1 the payload follows the same (dac, fid) layout as msg 6 (addressed) or msg 8 (broadcast) and is dispatched to the same ASM decoders — see ASM payloads below.
| Field |
Type |
Range |
Description |
| addressed |
Boolean |
– |
Addressed flag (0 = broadcast, 1 = addressed to a specific MMSI) |
| ai_available |
Boolean |
– |
Application Identifier available flag (1 = ASM application data follows) |
| dest_mmsi |
Integer |
9 digits |
Destination MMSI (only when addressed = true) |
| dac |
Integer |
– |
Designated Area Code (only when ai_available = true) |
| fid |
Integer |
– |
Functional Identifier (only when ai_available = true) |
When the (dac, fid) pair is recognised the structured ASM fields are emitted in addition (see ASM payloads). For msg 26 the trailing 20-bit communication-state block (1-bit selector followed by the 19-bit SOTDMA/ITDMA state) is decoded into the standard radio sub-fields — see note 5.
Type 27: Long-Range AIS Broadcast
| Field |
Type |
Range |
Description |
| accuracy |
Boolean |
– |
Position accuracy (true if <10 m) |
| raim |
Boolean |
– |
RAIM flag |
| status |
Integer |
0–15 |
Navigation status |
| status_text |
String |
See note 1 |
Navigation status description |
| lon |
Float |
±180° |
Longitude (1/600 degree resolution) |
| lat |
Float |
±90° |
Latitude (1/600 degree resolution) |
| speed |
Integer |
0–62 knots |
Speed over ground |
| course |
Integer |
0–359° |
Course over ground |
| gnss |
Boolean |
– |
Position latency (M.1371-6; 0 = reported position latency <5 s, 1 = ≥5 s, default). Was named "GNSS position status" in pre-M.1371-6 revisions; field name kept for backward compatibility. |
Type 28: AtoN Report (single-slot)
ITU-R M.1371-6 §A7-3.26, Table 84.
| Field |
Type |
Range |
Description |
| second |
Integer |
0–59 |
UTC second |
| lon |
Float |
±180° |
Longitude (1/600000° resolution) |
| lat |
Float |
±90° |
Latitude (1/600000° resolution) |
| restricted_use |
Integer |
0–3 |
Restricted use flag (0 = default; 1..3 reserved for restricted use) |
| aton_station_type |
Integer |
0–7 |
AtoN station type (3-bit; lookup) |
| virtual_aid |
Boolean |
– |
Virtual AtoN flag — true when aton_station_type == 4 |
| aid_type |
Integer |
0–31 |
Type of Aid to Navigation |
| aid_type_text |
String |
See note 4 |
Aid type description |
| iala_mrn |
Integer |
0–131071 |
IALA AtoN Maritime Resource Name (17-bit identifier) |
| dim_type |
Integer |
0–15 |
AtoN Dimensions Type — defines what to_bow/to_stern represent (Table 84) |
| to_bow |
Integer |
0–511 m |
Dimension to bow (interpretation depends on dim_type) |
| to_stern |
Integer |
0–2047 m |
Dimension to stern (interpretation depends on dim_type) |
| additional_flag |
Boolean |
– |
Additional information flag |
| charted_status |
Boolean |
– |
Charted status (0 = not charted, 1 = charted) |
| on_station_status |
Integer |
0–15 |
On-station status (4-bit; lookup) |
| aton_status |
Integer |
0–255 |
AtoN status bits (8-bit, AtoN-specific status per IALA R0126) |
| spare |
Integer |
– |
Spare bit |
| auth_flag |
Boolean |
– |
Authentication flag (1 = transmission authenticated) |
ASM payloads (Type 6 / Type 8)
For Type 6 and Type 8 messages, AIS-catcher decodes selected Application-Specific Messages (ASMs) identified by the (dac, fid) pair. When a decoder matches, the structured fields below are emitted in addition to the per-type fields (dac, fid, etc.); when no decoder matches, the raw payload is emitted as data (hex string).
Jump to:
IMO/ITU-R (DAC=1) ·
IALA Zeni Lite Buoy (DAC=0) ·
Flag-state text (DAC=210/248/353) ·
Inland AIS (DAC=200) ·
IALA AtoN monitoring (DAC=235/250/366) ·
Sweden STM (DAC=265) ·
St Lawrence Seaway (DAC=316/366) ·
US Environmental (DAC=367)
IMO / ITU-R M.1371 (DAC = 1)
FID = 0: Text using 6-bit ASCII (msg 6 and 8)
| Field |
Type |
Description |
| ack_required |
Boolean |
Acknowledgement required |
| text_sequence |
Integer |
Sequence number for multi-part text |
| text |
String |
Text payload |
FID = 2: Interrogation for a specified FMS (msg 6)
| Field |
Type |
Description |
| requested_dac |
Integer |
Designated Area Code requested |
| requested_fid |
Integer |
Functional Identifier requested |
FID = 3: Extended interrogation (msg 6)
| Field |
Type |
Description |
| requested_dac |
Integer |
Designated Area Code requested |
| spare |
Integer |
Spare bits |
FID = 4: Capability reply (msg 6)
| Field |
Type |
Description |
| ai_available |
String |
128-bit AI-available bitstring (ASCII '0'/'1') |
FID = 11: Legacy meteorological/hydrological (msg 8, IMO SN/Circ.236)
Same fields as FID = 31 below (legacy encoding; superseded by FID = 31).
FID = 16: Persons on board (msg 6) / VTS targets (msg 8)
The same (DAC=1, FID=16) slot is reused for two different payloads depending on message type.
In msg 6 (number of persons on board, also FID = 40):
| Field |
Type |
Description |
| persons |
Integer |
Number of persons on board |
In msg 8 (VTS targets, IMO Circ.289 §6):
| Field |
Type |
Unit |
Description |
| vts_target_id_type |
Integer |
– |
Target ID type |
| vts_target_id |
Integer or String |
– |
Target identifier (string when id_type = 2; numeric otherwise) |
| spare |
Integer |
– |
Spare bits |
| vts_target_lat |
Float |
degrees |
Target latitude |
| vts_target_lon |
Float |
degrees |
Target longitude |
| vts_target_cog |
Integer |
degrees |
Target course over ground |
| vts_target_timestamp |
Integer |
seconds |
UTC second of report |
| vts_target_sog |
Integer |
knots |
Target speed over ground |
FID = 17: VTS-generated/synthetic targets (msg 8, IMO Circ.289 §6 Table 6.1/6.2)
Up to four synthetic targets (120 bits each) are decoded and packed into a single string.
| Field |
Type |
Description |
| targets |
String |
id,lat,lon,cog,sog;… per target. id is 7-char ASCII; lat/lon in degrees; cog in degrees; sog in tenths of a knot. |
FID = 19: Marine traffic signal (msg 8, IMO Circ.289 §8 Table 8.1)
| Field |
Type |
Unit |
Description |
| linkage_id |
Integer |
– |
Message linkage ID |
| station_name |
String |
– |
Signal station name |
| lon |
Float |
degrees |
Signal station longitude |
| lat |
Float |
degrees |
Signal station latitude |
| traffic_signal |
Integer |
– |
Current marine traffic signal in service (Table 8.2) |
| hour |
Integer |
– |
UTC hour of next change |
| minute |
Integer |
– |
UTC minute of next change |
| next_signal |
Integer |
– |
Expected next signal |
FID = 20: Berthing data / port operations (msg 6 and 8, ITU-R M.1371-5)
| Field |
Type |
Unit |
Description |
| berth_type |
Integer |
– |
Berthing/mooring facility type |
| berth_number |
Integer |
– |
Berth/mooring number |
| berth_name |
String |
– |
Berth/mooring name |
| berth_arrival_time |
Integer |
UTC |
Estimated arrival time |
| berth_departure_time |
Integer |
UTC |
Expected departure time |
| berth_lon |
Float |
degrees |
Berth longitude |
| berth_lat |
Float |
degrees |
Berth latitude |
| spare |
Integer |
– |
Spare bit |
FID = 22 / 23: Area notice — broadcast (msg 8, FID 22) and addressed (msg 6, FID 23) — ITU-R M.1371-5
Both FIDs share the same payload layout (header + axis-aligned bounding box). The per-shape sub-area entries that may follow are not currently expanded.
| Field |
Type |
Unit |
Description |
| area_notice_type |
Integer |
– |
Area notice type |
| area_notice_duration |
Integer |
minutes |
Notice duration |
| area_notice_priority |
Boolean |
– |
Priority (0 = default, 1 = urgent) |
| area_notice_lon1 |
Float |
degrees |
NE corner longitude |
| area_notice_lat1 |
Float |
degrees |
NE corner latitude |
| area_notice_lon2 |
Float |
degrees |
SW corner longitude |
| area_notice_lat2 |
Float |
degrees |
SW corner latitude |
| area_notice_name |
String |
– |
Notice name/description (when present) |
The 52-bit SOLAS equipment-status block is not decoded.
| Field |
Type |
Unit |
Description |
| linkage_id |
Integer |
– |
Message linkage ID |
| air_draught |
Float |
metres |
Maximum present static air draught (0.1 m resolution) |
| last_port |
String |
– |
Last port of call (UN/LOCODE) |
| next_port |
String |
– |
Next port of call (UN/LOCODE) |
| second_port |
String |
– |
Second next port of call (UN/LOCODE) |
FID = 25: Dangerous cargo / IMDG (msg 6 and 8, ITU-R M.1371-5)
| Field |
Type |
Unit |
Description |
| cargo_hazard_report_type |
Integer |
– |
Report type |
| cargo_hazard_class |
Integer |
– |
IMDG hazard class |
| cargo_hazard_category |
Integer |
– |
IMDG sub-class category |
| cargo_hazard_id |
Integer |
– |
UN hazmat ID number |
| cargo_hazard_quantity |
Float |
tonnes |
Total hazard quantity on board |
| spare |
Integer |
– |
Spare bit |
FID = 21: Weather observation from ship (msg 8, IMO Circ.289 §10)
Only the non-WMO variant (variant 0) is decoded.
| Field |
Type |
Unit |
Description |
| weather_report_type |
Integer |
– |
Variant indicator (0 = non-WMO, 1 = WMO BUFR — not decoded) |
| station_name |
String |
– |
Reporting station name |
| lon |
Float |
degrees |
Longitude |
| lat |
Float |
degrees |
Latitude |
| day |
Integer |
– |
UTC day |
| hour |
Integer |
– |
UTC hour |
| minute |
Integer |
– |
UTC minute |
| present_weather |
Integer |
– |
Present weather code |
| visgreater |
Boolean |
– |
Visibility-greater-than flag |
| visibility |
Float |
nm |
Horizontal visibility |
| humidity |
Integer |
percent |
Relative humidity |
| wspeed |
Integer |
knots |
Wind speed |
| wdir |
Integer |
degrees |
Wind direction |
| pressure |
Integer |
hPa |
Atmospheric pressure |
| pressuretend_wmo |
Integer |
– |
Pressure tendency (WMO FM-13) |
| airtemp |
Float |
°C |
Air temperature |
| watertemp |
Float |
°C |
Water temperature |
| waveperiod |
Integer |
seconds |
Wave period |
| waveheight |
Float |
metres |
Wave height |
| wavedir |
Integer |
degrees |
Wave direction |
| swellheight |
Float |
metres |
Swell height |
| swelldir |
Integer |
degrees |
Swell direction |
| swellperiod |
Integer |
seconds |
Swell period |
FID = 26: Environmental (msg 8, IMO Circ.289 §12)
Only the first sensor report's common header is decoded; per-sensor bodies are not.
| Field |
Type |
Description |
| sensor_report_type |
Integer |
Sensor report type (Table 12.4) |
| day |
Integer |
UTC day |
| hour |
Integer |
UTC hour |
| minute |
Integer |
UTC minute |
| site_id |
Integer |
Site identifier |
Both FIDs share the same payload layout.
| Field |
Type |
Unit |
Description |
| linkage_id |
Integer |
– |
Message linkage ID |
| sender_classification |
Integer |
– |
Sender classification |
| route_type |
Integer |
– |
Route type |
| month |
Integer |
– |
UTC month |
| day |
Integer |
– |
UTC day |
| hour |
Integer |
– |
UTC hour |
| minute |
Integer |
– |
UTC minute |
| duration_minutes |
Integer |
minutes |
Route validity duration |
| waypoint_count |
Integer |
– |
Number of waypoints |
| waypoints |
String |
– |
Waypoint list as lat,lon[;lat,lon]… |
FID = 29: Text description, broadcast (msg 8, IMO Circ.289 §14)
| Field |
Type |
Description |
| linkage_id |
Integer |
Message linkage ID |
| text |
String |
Text description |
FID = 30: Text description, addressed (msg 6, IMO Circ.289 §14)
| Field |
Type |
Description |
| linkage_id |
Integer |
Message linkage ID |
| text |
String |
Text description |
FID = 31: Meteorological/hydrological data (msg 8, IMO Circ.289 §11)
| Field |
Type |
Unit |
Description |
| lon |
Float |
degrees |
Longitude |
| lat |
Float |
degrees |
Latitude |
| accuracy |
Boolean |
– |
Position accuracy |
| day |
Integer |
– |
UTC day |
| hour |
Integer |
– |
UTC hour |
| minute |
Integer |
– |
UTC minute |
| wspeed |
Integer |
knots |
Wind speed |
| wgust |
Integer |
knots |
Wind gust |
| wdir |
Integer |
degrees |
Wind direction |
| wgustdir |
Integer |
degrees |
Wind gust direction |
| airtemp |
Float |
°C |
Air temperature |
| humidity |
Integer |
percent |
Relative humidity |
| dewpoint |
Float |
°C |
Dew point |
| pressure |
Integer |
hPa |
Atmospheric pressure |
| pressuretend |
Integer |
– |
Pressure tendency |
| visgreater |
Boolean |
– |
Visibility-greater-than flag |
| visibility |
Float |
nm |
Horizontal visibility |
| waterlevel |
Float |
metres |
Water level (deviation from chart datum) |
| leveltrend |
Integer |
– |
Water level trend |
| cspeed |
Float |
knots |
Surface current speed |
| cdir |
Integer |
degrees |
Surface current direction |
| cspeed2 |
Float |
knots |
Current speed at depth #2 |
| cdir2 |
Integer |
degrees |
Current direction at depth #2 |
| cdepth2 |
Integer |
metres |
Measurement depth #2 |
| cspeed3 |
Float |
knots |
Current speed at depth #3 |
| cdir3 |
Integer |
degrees |
Current direction at depth #3 |
| cdepth3 |
Integer |
metres |
Measurement depth #3 |
| waveheight |
Float |
metres |
Wave height |
| waveperiod |
Integer |
seconds |
Wave period |
| wavedir |
Integer |
degrees |
Wave direction |
| swellheight |
Float |
metres |
Swell height |
| swellperiod |
Integer |
seconds |
Swell period |
| swelldir |
Integer |
degrees |
Swell direction |
| seastate |
Integer |
– |
Sea state (Beaufort 0–12; 13 = not available, sentinel-suppressed) |
| watertemp |
Float |
°C |
Water temperature |
| preciptype |
Integer |
– |
Precipitation type |
| salinity |
Float |
percent |
Salinity (0.0–50.9, 0.1 resolution). Omitted when the raw field is set to "not available". |
| ice |
Integer |
– |
Ice indicator |
FID = 32: Tidal window (msg 6, IMO Circ.289 §3)
Three current-prediction points are packed into a compact string. Each point gives latitude, longitude, current direction (degrees, or -1 when not available), and current speed (knots, one decimal; -1 when not available). Points whose latitude/longitude are out of range are skipped.
| Field |
Type |
Description |
| month |
Integer |
UTC month |
| day |
Integer |
UTC day |
| tidal |
String |
lat,lon,dir_deg,speed_kn;… per point |
IALA Zeni Lite Buoy (DAC = 0, FID = 0, msg 6)
| Field |
Type |
Unit |
Description |
| asm_sub_app_id |
Integer |
– |
ASM sub-application ID |
| asm_voltage_data |
Float |
V |
Voltage sensor data |
| asm_current_data |
Float |
A |
Current sensor data |
| asm_power_supply_type |
Boolean |
– |
Power supply type |
| asm_light_status |
Boolean |
– |
Light status |
| asm_battery_status |
Boolean |
– |
Battery status |
| asm_off_position_status |
Boolean |
– |
Off-position status |
| spare |
Integer |
– |
Spare bits |
Flag-state text telegrams (DAC = 210 / 248 / 353)
Several national / flag-state ASMs reuse the IMO Circ.236 6-bit ASCII text payload (the same encoding as DAC = 1, FID = 0). The following allocations are decoded with the same fields:
- DAC = 210 (Cyprus), FID = 0 — text telegram
- DAC = 248 (Malta), FID = 0 — text telegram
- DAC = 353 (Liberia), FID = 0 — text telegram
| Field |
Type |
Description |
| linkage_id |
Integer |
Message linkage ID |
| text |
String |
Free-text payload (6-bit ASCII) |
Sweden STM — Sea Traffic Management route (DAC = 265)
FID = 1: STM route message (msg 8)
Broadcast on msg 8, up to 3 slots. The route is reconstructed from a delta-encoded chain of legs (first waypoint, 0–6 delta legs, then an absolute final leg). Header-only / cancellation messages produce no fields.
| Field |
Type |
Unit |
Description |
| waypoints |
String |
– |
Reconstructed waypoints as lat,lon[;lat,lon]… |
| planned_speed |
Float |
knots |
Planned speed for the final leg |
| steering_mode |
Integer |
– |
Steering mode (0 = manual, 1 = heading, 2 = track) |
Spec reference: https://www.e-navigation.nl/content/route-message-0
Inland AIS — CCNR VTT 1.2 (DAC = 200)
Inland AIS DAC = 200 messages follow the CCNR/UNECE Vessel Tracking and Tracing Standard for Inland Navigation, Edition 1.2.
FID = 10: ERI ship static voyage data (msg 8, Table 2.7)
| Field |
Type |
Unit |
Description |
| vin |
String |
– |
European Number of Vessel (ERI ENI) |
| length |
Float |
metres |
Overall length of vessel |
| beam |
Float |
metres |
Beam |
| shiptype |
Integer |
– |
ERI ship type |
| hazard |
Integer |
– |
Hazardous cargo code |
| draught |
Float |
metres |
Draught |
| loaded |
Integer |
– |
Loaded/unloaded |
| speed_q |
Boolean |
– |
Speed quality |
| course_q |
Boolean |
– |
Course quality |
| heading_q |
Boolean |
– |
Heading quality |
FID = 21: ETA at lock/bridge/terminal (msg 6, Table 2.8)
| Field |
Type |
Unit |
Description |
| un_country |
String |
– |
UN country code (2-char ISO 3166-1 alpha-2) |
| un_locode |
String |
– |
UN/LOCODE (3-char ASCII) |
| fairway_section |
String |
– |
Fairway section identifier |
| terminal_code |
String |
– |
Terminal code |
| fairway_hectometre |
String |
– |
Fairway hectometre |
| eta |
String |
UTC |
Estimated time of arrival (MM-DD HH:MM) |
| tugboats |
Integer |
– |
Number of assisting tugboats (0–6) |
| air_draught |
Float |
metres |
Maximum present static air draught |
FID = 22: RTA at lock/bridge/terminal (msg 6, Table 2.9)
| Field |
Type |
Unit |
Description |
| un_country |
String |
– |
UN country code |
| un_locode |
String |
– |
UN/LOCODE |
| fairway_section |
String |
– |
Fairway section identifier |
| terminal_code |
String |
– |
Terminal code |
| fairway_hectometre |
String |
– |
Fairway hectometre |
| rta |
String |
UTC |
Recommended time of arrival (MM-DD HH:MM) |
| lock_status |
Integer |
– |
Lock/bridge/terminal status (0 = operational, 1 = limited, 2 = out of order) |
FID = 23: EMMA safety warning, broadcast (msg 8, Table 2.11)
| Field |
Type |
Unit |
Description |
| start_date |
String |
– |
Start date (YYYYMMDD) — omitted when not set in the payload |
| end_date |
String |
– |
End date (YYYYMMDD) — omitted when not set in the payload |
| start_time |
String |
– |
Start time (HHMM UTC) — omitted when not set |
| end_time |
String |
– |
End time (HHMM UTC) — omitted when not set |
| start_lon |
Float |
degrees |
Start longitude of the affected area |
| start_lat |
Float |
degrees |
Start latitude of the affected area |
| end_lon |
Float |
degrees |
End longitude of the affected area |
| end_lat |
Float |
degrees |
End latitude of the affected area |
| emma_warning_type |
Integer |
– |
Warning type (0 = unknown … 9 = forest fire) |
| emma_warning_type_text |
String |
– |
Warning type description (when defined) |
| min_value |
Integer |
– |
Minimum parameter value (signed; units depend on warning type). Omitted when set to the "not available" sentinel. |
| max_value |
Integer |
– |
Maximum parameter value (signed). Omitted when set to "not available". |
| emma_severity |
Integer |
– |
Severity (0 = unknown, 1 = slight, 2 = medium, 3 = strong/heavy) |
| emma_severity_text |
String |
– |
Severity description (when defined) |
| wind_direction |
Integer |
– |
Wind direction (4-bit code per Table 2.11) |
FID = 24: Water level data (msg 8, Table 2.15)
Up to four water-level gauges are decoded per message. Each gauge appears only when its station ID is non-zero.
| Field |
Type |
Unit |
Description |
| un_country |
String |
– |
UN country code (2-char ISO 3166-1 alpha-2) |
| gauge1_id |
Integer |
– |
Gauge station 1 ID |
| gauge1_level |
Integer |
cm |
Water level at gauge 1 (signed, relative to datum) |
| gauge2_id |
Integer |
– |
Gauge station 2 ID |
| gauge2_level |
Integer |
cm |
Water level at gauge 2 |
| gauge3_id |
Integer |
– |
Gauge station 3 ID |
| gauge3_level |
Integer |
cm |
Water level at gauge 3 |
| gauge4_id |
Integer |
– |
Gauge station 4 ID |
| gauge4_level |
Integer |
cm |
Water level at gauge 4 |
FID = 25: Bridge clearance (msg 8)
| Field |
Type |
Unit |
Description |
| asm_version |
Integer |
– |
ASM version indicator |
| un_country |
String |
– |
UN country code |
| fairway_section |
Integer |
– |
Fairway section number |
| object_code |
String |
– |
Object code |
| fairway_hectometre |
Integer |
– |
Fairway hectometre |
| bridge_clearance |
Integer |
cm |
Bridge clearance from water surface |
| measurement_age |
Integer |
minutes |
Age of measurement |
| clearance_accuracy |
Integer |
cm |
Bridge clearance accuracy (±cm) |
FID = 40: Signal station status (msg 8, Table 2.16)
Status of a fairway signal station (lock, bridge, terminal entry signal).
| Field |
Type |
Unit |
Description |
| lon |
Float |
degrees |
Signal station longitude |
| lat |
Float |
degrees |
Signal station latitude |
| signal_form |
Integer |
– |
Signal light configuration form |
| signal_orientation |
Integer |
degrees |
Orientation of the signal station |
| signal_impact |
Integer |
– |
Direction of impact of the signal |
| signal_status |
Integer |
– |
Raw signal light status (30-bit, multiple lights packed) |
FID = 55: Persons on board, detailed (msg 6, Table 2.10)
| Field |
Type |
Description |
| crew_count |
Integer |
Number of crew |
| passenger_count |
Integer |
Number of passengers |
| shipboard_personnel_count |
Integer |
Other shipboard personnel |
IALA AtoN monitoring (DAC = 235 / 250 / 366)
FID = 10: Aid-to-navigation monitor (msg 6/8/26)
Used by IALA UK & NI (235), IALA ROI (250), and the US St Lawrence Seaway / USCG (366).
| Field |
Type |
Unit |
Description |
| ana_int |
Float |
V |
Internal analogue voltage |
| ana_ext1 |
Float |
V |
External analogue input 1 |
| ana_ext2 |
Float |
V |
External analogue input 2 |
| racon |
Integer |
– |
RACON status |
| health |
Integer |
– |
Health status |
| stat_ext |
Integer |
– |
External digital input status (8-bit) |
| off_position |
Boolean |
– |
Off-position flag |
FID = 20: Trinity House buoy position monitoring (msg 6, DAC = 235 only)
| Field |
Type |
Unit |
Description |
| station_name |
String |
– |
Station name |
| utc_day |
Integer |
– |
UTC day |
| utc_hour |
Integer |
– |
UTC hour |
| utc_minute |
Integer |
– |
UTC minute |
| lon |
Float |
degrees |
Longitude |
| lat |
Float |
degrees |
Latitude |
| off_position |
Boolean |
– |
Off-position flag |
| spare |
Integer |
– |
Spare bits |
St Lawrence Seaway (DAC = 316 CA / 366 US)
FID = 1: Meteorological/hydrological (msg 6 and 8)
message_id selects the sub-payload (1 = weather, 2 = wind, 3 = water level, 6 = water flow). All variants share a common header.
Common header (all variants):
| Field |
Type |
Unit |
Description |
| message_id |
Integer |
– |
Sub-message identifier |
| month |
Integer |
– |
UTC month |
| day |
Integer |
– |
UTC day |
| hour |
Integer |
– |
UTC hour |
| minute |
Integer |
– |
UTC minute |
| station_id |
String |
– |
Station identifier (7-char ASCII) |
| lon |
Float |
degrees |
Longitude |
| lat |
Float |
degrees |
Latitude |
message_id = 1 (weather) adds:
| Field |
Type |
Unit |
Description |
| wspeed |
Float |
m/s |
Wind speed |
| wgust |
Float |
knots |
Wind gust |
| wdir |
Integer |
degrees |
Wind direction |
| barometric_pressure |
Integer |
hPa |
Barometric pressure |
| air_temperature |
Float |
°C |
Air temperature |
| dew_point |
Float |
°C |
Dew point |
| visibility_km |
Float |
km |
Horizontal visibility |
| watertemp |
Float |
°C |
Water temperature |
message_id = 2 (wind) adds:
| Field |
Type |
Unit |
Description |
| wind_speed_avg |
Float |
knots |
Average wind speed |
| wind_gust_speed |
Float |
knots |
Wind gust speed |
| wind_direction_avg |
Integer |
degrees |
Average wind direction |
| spare |
Integer |
– |
Spare bits |
message_id = 3 (water level) adds:
| Field |
Type |
Unit |
Description |
| water_level_type |
Integer |
– |
Water level type |
| waterlevel |
Float |
metres |
Water level |
| reference_datum |
Integer |
– |
Reference datum |
| reading_type |
Integer |
– |
Reading type |
| spare |
Integer |
– |
Spare bits |
message_id = 6 (water flow) adds:
| Field |
Type |
Unit |
Description |
| water_flow |
Integer |
– |
Water flow |
| spare |
Integer |
– |
Spare bits |
FID = 2 (lock scheduling) and FID = 32 (specific): only message_id is decoded.
US Environmental Sensor Report (DAC = 367, FID = 33, msg 8)
Common header:
| Field |
Type |
Description |
| report_type |
Integer |
Sensor report type (selects body fields) |
| day |
Integer |
UTC day |
| hour |
Integer |
UTC hour |
| minute |
Integer |
UTC minute |
| site_id |
Integer |
Site identifier |
Only the first sensor report body is decoded.
report_type = 0 (location) body adds:
| Field |
Type |
Unit |
Description |
| version |
Integer |
– |
Sensor version |
| lon |
Float |
degrees |
Longitude |
| lat |
Float |
degrees |
Latitude |
| precision |
Integer |
– |
Position precision |
| alt |
Integer |
metres |
Altitude |
report_type = 1 (station identification) body adds:
| Field |
Type |
Description |
| name |
String |
Station name |
report_type = 2 (wind) body adds:
| Field |
Type |
Unit |
Description |
| wspeed |
Integer |
knots |
Wind speed |
| wgust |
Integer |
knots |
Wind gust |
| wdir |
Integer |
degrees |
Wind direction |
| wgustdir |
Integer |
degrees |
Wind gust direction |
| sensor_description |
Integer |
– |
Sensor description code |
| forecast_wspeed |
Integer |
knots |
Forecast wind speed |
| forecast_wgust |
Integer |
knots |
Forecast wind gust |
| forecast_wdir |
Integer |
degrees |
Forecast wind direction |
| forecast_day |
Integer |
– |
Forecast UTC day |
| forecast_hour |
Integer |
– |
Forecast UTC hour |
| forecast_minute |
Integer |
– |
Forecast UTC minute |
| forecast_duration |
Integer |
minutes |
Forecast validity duration |
report_type = 3 (water level) body adds:
| Field |
Type |
Unit |
Description |
| water_level_type |
Integer |
– |
Water level type |
| waterlevel |
Float |
metres |
Water level |
| leveltrend |
Integer |
– |
Water level trend |
| reference_datum |
Integer |
– |
Reference datum |
Notes
Note 1: Navigation Status Values
| Value |
Description |
| 0 |
Under way using engine |
| 1 |
At anchor |
| 2 |
Not under command |
| 3 |
Restricted maneuverability |
| 4 |
Constrained by her draught |
| 5 |
Moored |
| 6 |
Aground |
| 7 |
Engaged in fishing |
| 8 |
Under way sailing |
| 9 |
Reserved for HSC |
| 10 |
Reserved for WIG |
| 11 |
Towing astern (regional) |
| 12 |
Pushing ahead or towing alongside (regional) |
| 13 |
Reserved |
| 14 |
AIS-SART is active |
| 15 |
Not defined |
Note 2: EPFD Type Values
| Value |
Description |
| 0 |
Undefined |
| 1 |
GPS |
| 2 |
GLONASS |
| 3 |
Combined GPS/GLONASS |
| 4 |
Loran-C |
| 5 |
Chayka |
| 6 |
Integrated navigation system |
| 7 |
Surveyed |
| 8 |
Galileo |
Note 3: Ship Type Values
| Value |
Description |
| 0 |
Not available |
| 1-19 |
Reserved |
| 20 |
Wing in ground (WIG) - all ships of this type |
| 21 |
Wing in ground (WIG) - Hazardous category A |
| 22 |
Wing in ground (WIG) - Hazardous category B |
| 23 |
Wing in ground (WIG) - Hazardous category C |
| 24 |
Wing in ground (WIG) - Hazardous category D |
| 25-29 |
Wing in ground (WIG) - Reserved |
| 30 |
Fishing |
| 31 |
Towing |
| 32 |
Towing: length exceeds 200m or breadth exceeds 25m |
| 33 |
Dredging or underwater ops |
| 34 |
Diving ops |
| 35 |
Military ops |
| 36 |
Sailing |
| 37 |
Pleasure Craft |
| 38-39 |
Reserved |
| 40 |
High speed craft (HSC) - all ships of this type |
| 41 |
High speed craft (HSC) - Hazardous category A |
| 42 |
High speed craft (HSC) - Hazardous category B |
| 43 |
High speed craft (HSC) - Hazardous category C |
| 44 |
High speed craft (HSC) - Hazardous category D |
| 45-48 |
High speed craft (HSC) - Reserved for future use |
| 49 |
High speed craft (HSC) - No additional information |
| 50 |
Pilot Vessel |
| 51 |
Search and Rescue vessel |
| 52 |
Tug |
| 53 |
Port Tender |
| 54 |
Anti-pollution equipment |
| 55 |
Law Enforcement |
| 56-57 |
Spare - Local Vessel |
| 58 |
Medical Transport |
| 59 |
Noncombatant ship according to RR Resolution No. 18 |
| 60 |
Passenger - all ships of this type |
| 61 |
Passenger - Hazardous category A |
| 62 |
Passenger - Hazardous category B |
| 63 |
Passenger - Hazardous category C |
| 64 |
Passenger - Hazardous category D |
| 65-68 |
Passenger - Reserved for future use |
| 69 |
Passenger - No additional information |
| 70 |
Cargo - all ships of this type |
| 71 |
Cargo - Hazardous category A |
| 72 |
Cargo - Hazardous category B |
| 73 |
Cargo - Hazardous category C |
| 74 |
Cargo - Hazardous category D |
| 75-78 |
Cargo - Reserved for future use |
| 79 |
Cargo - No additional information |
| 80 |
Tanker - all ships of this type |
| 81 |
Tanker - Hazardous category A |
| 82 |
Tanker - Hazardous category B |
| 83 |
Tanker - Hazardous category C |
| 84 |
Tanker - Hazardous category D |
| 85-88 |
Tanker - Reserved for future use |
| 89 |
Tanker - No additional information |
| 90 |
Other Type - all ships of this type |
| 91 |
Other Type - Hazardous category A |
| 92 |
Other Type - Hazardous category B |
| 93 |
Other Type - Hazardous category C |
| 94 |
Other Type - Hazardous category D |
| 95-98 |
Other Type - Reserved for future use |
| 99 |
Other Type - no additional information |
Note 4: Aid to Navigation Type Values
| Value |
Description |
| 0 |
Default, Type of Aid to Navigation not specified |
| 1 |
Reference point |
| 2 |
RACON (radar transponder marking a navigation hazard) |
| 3 |
Fixed offshore structure |
| 4 |
Spare, Reserved for future use |
| 5 |
Light, without sectors |
| 6 |
Light, with sectors |
| 7 |
Leading Light Front |
| 8 |
Leading Light Rear |
| 9 |
Beacon, Cardinal N |
| 10 |
Beacon, Cardinal E |
| 11 |
Beacon, Cardinal S |
| 12 |
Beacon, Cardinal W |
| 13 |
Beacon, Port hand |
| 14 |
Beacon, Starboard hand |
| 15 |
Beacon, Preferred Channel port hand |
| 16 |
Beacon, Preferred Channel starboard hand |
| 17 |
Beacon, Isolated danger |
| 18 |
Beacon, Safe water |
| 19 |
Beacon, Special mark |
| 20 |
Cardinal Mark N |
| 21 |
Cardinal Mark E |
| 22 |
Cardinal Mark S |
| 23 |
Cardinal Mark W |
| 24 |
Port hand Mark |
| 25 |
Starboard hand Mark |
| 26 |
Preferred Channel Port hand |
| 27 |
Preferred Channel Starboard hand |
| 28 |
Isolated danger |
| 29 |
Safe Water |
| 30 |
Special Mark |
| 31 |
Light Vessel / LANBY / Rigs |
Note 5: Radio status sub-fields
When radio is non-zero on a Type 1/2/3/4/9/11/18 message, AIS-catcher decodes the SOTDMA/ITDMA state into additional fields:
| Field |
Type |
Description |
| sync_state |
Integer |
Sync state (0–3) |
| slot_timeout |
Integer |
Frames until new slot (0 = next frame) |
| slot_offset |
Integer |
Slot offset (only when slot_timeout = 0) |
| utc_hour |
Integer |
UTC hour from sync (only when slot_timeout = 1) |
| utc_minute |
Integer |
UTC minute from sync (only when slot_timeout = 1) |
| slot_number |
Integer |
TDMA slot number used (only when slot_timeout ∈ {2, 4, 6}) |
| received_stations |
Integer |
Stations received in last frame (only when slot_timeout ∈ {3, 5, 7}) |