Skip to content

Complete AIS Message JSON Documentation

AIS decoding

NMEA input

AIS-catcher can print AIS messages in JSON. The output format is specified with the -o switch. As an example to show a full decoding of JSON messages use -o 5:

echo '!AIVDM,1,1,,B,3776k`5000a3SLPEKnDQQWpH0000,0*78'  | AIS-catcher -r txt . -o 5
which produces
{"class":"AIS","device":"AIS-catcher","scaled":true,"channel":"B","nmea":["!AIVDM,1,1,,B,3776k`5000a3SLPEKnDQQWpH0000,0*78"],"type":3,"repeat":0,"mmsi":477213600,"status":5,"status_text":"Moored","turn":0,"speed":0.000000,"accuracy":true,"lon":126.605469,"lat":37.460617,"course":39.000000,"heading":252,"second":12,"maneuver":0,"raim":false,"radio":0}

JSON Format

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.

Common Fields

These fields are present in all AIS messages:

Field Type Description Example
class String Always "AIS" "AIS"
device String Always "AIS-catcher" "AIS-catcher"
type Integer Message type number 1
scaled Boolean Values scaled to real units true
channel String AIS channel "A"
nmea String Original NMEA sentence "!AIVDM,1,1,,A,13..."
mmsi Integer MMSI number 123456789

Optional configuration-dependent fields:

Field Type Description
version String Software version
driver Integer Driver identifier
hardware String Hardware identifier
signal_power Float Signal strength in dB
ppm Float Frequency error in ppm
rxtime String Reception timestamp
country String Country name from MMSI
country_code String Two-letter country code

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 Float ±720°/min Rate of turn
turn_unscaled Integer Raw Unscaled turn value
speed Float 0-102.2 knots Speed over ground
accuracy Boolean - Position accuracy flag
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 Second of timestamp
maneuver Integer 0-2 Maneuver indicator
raim Boolean - RAIM flag
radio Integer - Radio status

Type 4: Base Station Report

Field Type Range Description
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
raim Boolean - RAIM flag
radio Integer - Radio status
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-511m Dimension to bow
to_stern Integer 0-511m Dimension to stern
to_port Integer 0-63m Dimension to port
to_starboard Integer 0-63m Dimension to starboard
epfd Integer 0-8 EPFD type
epfd_text String See note 2 EPFD description
eta String ISO8601 Estimated time of arrival
draught Float 0-25.5m Draft in meters
destination String 20 chars Destination port
dte Boolean - Data terminal flag

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
dac Integer - Designated Area Code
fid Integer - Function ID
data String - Binary data

Type 7: Binary Acknowledge

Field Type Range Description
mmsi1 Integer 9 digits MMSI number 1
mmsiseq1 Integer 0-3 Sequence for MMSI 1
mmsi2 Integer 9 digits MMSI number 2
mmsiseq2 Integer 0-3 Sequence for MMSI 2
mmsi3 Integer 9 digits MMSI number 3
mmsiseq3 Integer 0-3 Sequence for MMSI 3
mmsi4 Integer 9 digits MMSI number 4
mmsiseq4 Integer 0-3 Sequence for MMSI 4

Type 8: Binary Broadcast Message

Field Type Range Description
dac Integer - Designated Area Code
fid Integer - Function ID
data String - Binary data

Type 9: Standard SAR Aircraft Position Report

Field Type Range Description
alt Integer 0-4095 Altitude in meters
speed Integer 0-1023 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
regional Integer - Regional reserved
dte Boolean - DTE flag
assigned Boolean - Assigned mode flag
raim Boolean - RAIM flag
radio Integer - Radio status

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

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

Same fields as Type 7

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
offset1_1 Integer - First slot offset
type1_2 Integer 1-27 Second message type
offset1_2 Integer - Second slot offset
mmsi2 Integer 9 digits Interrogated MMSI 2
type2_1 Integer 1-27 First message type
offset2_1 Integer - First slot offset

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
offset2 Integer - Second offset
increment2 Integer - Second increment

Type 17: DGNSS Binary Broadcast Message

Field Type Range Description
lon Float ±180° Longitude
lat Float ±90° Latitude
data String - 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
regional Integer - Regional reserved
cs Boolean - Carrier sense unit flag
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

Type 19: Extended 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
regional Integer - Regional reserved
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-511m Dimension to bow
to_stern Integer 0-511m Dimension to stern
to_port Integer 0-63m Dimension to port
to_starboard Integer 0-63m 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
Field Type Range Description
offset1 Integer - Offset number 1
number1 Integer - Reserved slots 1
timeout1 Integer - Timeout 1
increment1 Integer - Increment 1
offset2 Integer - Offset number 2
number2 Integer - Reserved slots 2
timeout2 Integer - Timeout 2
increment2 Integer - Increment 2
offset3 Integer - Offset number 3
number3 Integer - Reserved slots 3
timeout3 Integer - Timeout 3
increment3 Integer - Increment 3
offset4 Integer - Offset number 4
number4 Integer - Reserved slots 4
timeout4 Integer - 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-511m Dimension to bow
to_stern Integer 0-511m Dimension to stern
to_port Integer 0-63m Dimension to port
to_starboard Integer 0-63m 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
regional Integer - Regional reserved
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 - Power level
addressed Boolean - Addressed flag
band_a Boolean - Channel A band
band_b Boolean - Channel B band
zonesize Integer - Zone size
If addressed = true:
dest1 Integer 9 digits Destination MMSI 1
dest2 Integer 9 digits Destination MMSI 2
If addressed = false:
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
ship_type Integer - Ship type
txrx Integer - Tx/Rx mode
interval Integer - Reporting interval
quiet Integer - Quiet time

Type 24: Static Data Report

Message Type 24 Part A Fields

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 Fields

Field Type Range Description
partno Integer 1 Part number, always 1 for Part B
callsign String 7 chars Vessel radio callsign
shiptype Integer 0-99 Type of ship and cargo
shiptype_text String See note 1 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
to_bow Integer 0-511 Distance from GPS to bow in meters
to_stern Integer 0-511 Distance from GPS to stern in meters
to_port Integer 0-63 Distance from GPS to port in meters
to_starboard Integer 0-63 Distance from GPS to starboard in meters
mothership_mmsi Integer 9 digits MMSI of mothership for auxiliary craft

Message Type 25 Fields

Field Type Range Description
addressed Boolean true/false Message has specific destination
structured Boolean true/false Message contains structured data
dest_mmsi Integer 9 digits Destination MMSI if addressed
data String - Binary payload data

Message Type 26 Fields

Field Type Range Description
addressed Boolean true/false Message has specific destination
structured Boolean true/false Message contains structured data
dest_mmsi Integer 9 digits Destination MMSI if addressed
radio Integer 0-3 Radio status
data String - Binary payload data

Message Type 27 Fields

Field Type Range Description
accuracy Boolean true/false Position accuracy: true if < 10m
raim Boolean true/false RAIM flag: Receiver Autonomous Integrity Monitoring
status Integer 0-15 Navigation status
status_text String See note 1 Navigation status description
lon Float ±180° Longitude in decimal degrees
lat Float ±90° Latitude in decimal degrees
speed Integer 0-62 Speed over ground in knots
course Integer 0-359 Course over ground in degrees
gnss Boolean true/false GNSS position status

Notes

Navigation Status Values:

Value Description
0 Under way using engine
1 At anchor
2 Not under command
3 Restricted manoeuverability
4 Constrained by draught
5 Moored
6 Aground
7 Engaged in fishing
8 Under way sailing
9 Reserved for HSC
10 Reserved for WIG
11-13 Reserved
14 AIS-SART is active
15 Not defined