Difference between revisions of "AIS-Decoding"

From wiki.opennauticalchart.org
Jump to: navigation, search
(Papers)
Line 1: Line 1:
 
This paper focuses on NON Position-Report (1,2,3,18,19) / Static-Data (5/24) messages.
 
This paper focuses on NON Position-Report (1,2,3,18,19) / Static-Data (5/24) messages.
 +
 +
== AIS-Decoders ==
 +
 +
=== Ais Decoder ===
 +
* https://arundaleais.github.io/docs/ais/ais_decoder.html (WIN)
 +
 +
=== gpsdecode ===
 +
* https://gpsd.gitlab.io/gpsd/gpsdecode.html
 +
* <code>nc 153.44.253.27 5631 | gpsdecode | grep '"type":8'</code>
 +
<pre>
 +
{"class":"AIS","device":"stdin","type":8,"repeat":0,"mmsi":257057800,"scaled":true,
 +
"dac":200,"fid":10,"vin":"00000000","length":215,"beam":60,"shiptype":8440,"shiptype_text":"Illegal ship type value.",
 +
"hazard":5,"hazard_text":"Unknown","draught":0,"loaded":0,"loaded_text":"N/A (default)",
 +
"speed_q":false,"course_q":false,"heading_q":false}
 +
</pre>
 +
<pre>
 +
{"class":"AIS","device":"stdin","type":8,"repeat":0,"mmsi":215349000,"scaled":true,"dac":1,"fid":27,"linkage":90,"sender":0,"rtype":5,"rtype_text":"Ship route plan","start":"00-00T24:60Z","duration":262143,"waypoints":[{"lon":7.107972,"lat":62.844255},{"lon":7.112132,"lat":62.848032}]}
 +
</pre>
 +
<pre>
 +
{"class":"AIS","device":"stdin","type":8,"repeat":0,"mmsi":215349000,"scaled":true,"dac":1,"fid":29,"linkage":90,"text":"LESSREMMAN - ELNES (VIA RORVIK; OUTSIDE) CAPT YURI"}
 +
</pre>
 +
* <code>nc ssia-ais.erau.edu 4000 | gpsdecode | grep -e '"type":8' -e '"type":27'</code>
 +
<pre>
 +
{"class":"AIS","device":"stdin","type":27,"repeat":0,"mmsi":368429323,"scaled":true,"status":"Not defined","accuracy":true,"lon":-81.0,"lat":29.2,"speed":0,"course":511,"raim":true,"gnss":false}
 +
</pre>
 +
<pre>
 +
{"class":"AIS","device":"stdin","type":8,"repeat":0,"mmsi":369493715,"scaled":true,"dac":366,"fid":56,"data":"256:a83746ce99bb9edbd3eebb88bb7dcecba01df41d94f9397136c0c97eb4af8d69"}
 +
</pre>
 +
<pre>
 +
{"class":"AIS","device":"stdin","type":8,"repeat":0,"mmsi":369493715,"scaled":true,"dac":366,"fid":57,"data":"512:bf68e50cc47b8ae14771ed1a0c075bfb60f82bb9ffec80211e4aad32b4edac38b33a6b4280f403d0dff4069a452f9cd51dfc44285226e53d7f337377f15829d6"}
 +
</pre>
 +
==== missing/problems ====
 +
* Text Telegram does not decode!
 +
<code>
 +
{"class":"AIS","device":"stdin","type":6,"repeat":0,"mmsi":538007497,"scaled":true,"seqno":1,"dest_mmsi":212848000,"retransmit":false,"dac":1,"fid":0,"data":"96:8040494e05054d48120d612e"}
 +
</code>
 +
* also valid, 'Illegal ship type' decoded! see https://unece.org/fileadmin/DAM/trans/doc/2013/sc3wp3/ECE-TRANS-SC3-WP3-2013-05e.pdf
 +
<code>
 +
{"class":"AIS","device":"stdin","type":8,"repeat":0,"mmsi":257303700,"scaled":true,"dac":200,"fid":10,"vin":"00000000","length":114,"beam":36,"shiptype":8450,"shiptype_text":"Illegal ship type value.","hazard":5,"hazard_text":"Unknown","draught":150,"loaded":0,"loaded_text":"N/A (default)","speed_q":false,"course_q":false,"heading_q":false}
 +
</code>
 +
* does not decode!
 +
<code>
 +
{"class":"AIS","device":"stdin","type":8,"repeat":0,"mmsi":257605000,"scaled":true,"dac":265,"fid":1,"data":"512:02017cf22f19aa2bc00f83af410ade2bc2dffbf6bff7822bc50fd3bbbffee02bc00f9874c049812bc140019c3ffd542bc0a017a6fee9842bc0787ea28bd27600"}
 +
</code>
 +
 +
=== Maritec online AIS decoder ===
 +
* https://www.maritec.co.za/aisvdmvdodecoding
 +
 +
=== pyais ===
 +
* https://github.com/M0r13n/pyais
 +
* <code>pipx install pyais</code>
 +
* <code>pipx ensurepath</code>
 +
* <code>nc 153.44.253.27 5631 | ais-decode --json | grep '"msg_type": 8'</code>
 +
==== missing/problems ====
 +
* poor Msg:8 decoding. Only DAC:200 FI:10
 +
<pre>
 +
{"msg_type": 8, "repeat": 0, "mmsi": 257057800, "dac": 200, "fid": 10, "vin": "00000000", "length": 21.5, "beam": 6.0, "shiptype": 8440, "hazard": 5, draught": 0.0, "loaded": 0, "speed_q": false, "course_q": false, "heading_q": false}
 +
</pre>
 +
<pre>
 +
{"msg_type": 8, "repeat": 0, "mmsi": 215349000, "dac": 1, "fid": 27, "data": "FwFAGPP//3ggjnij9kTwQREIR+t9QIGPWI/RpYEAV0kfnN4B/oNCP0lbA/56ZH7oMAfMqQkAPXgPnOUSBujgIEAnJCF1QEOc0Uhdt0CLKQCQxYXBGjYZIXqkAkLbgkK4VwS3FHSHEE4JngLpEMz8"}
 +
</pre>
 +
<pre>
 +
{"msg_type": 8, "repeat": 0, "mmsi": 215349000, "dac": 1, "fid": 29, "data": "FwUw4VOC2BYVIQEyChYkGAdIlCnI"}
 +
</pre>
 +
 +
=== others===
 +
* https://github.com/tbsalling/aismessages
 +
* https://github.com/bcl/aisparser
 +
* https://github.com/schwehr/libais
 +
* https://github.com/dma-ais/AisLib
 +
 +
=== aisdecode ===
 +
* https://github.com/madpsy/aisdecode/
 +
* <code>./aisdecode-linux-amd64 -log-all-decodes decoded</code>
 +
 +
=== AIS-catcher ===
 +
* input: https://docs.aiscatcher.org/configuration/input/tcp/
 +
* output: https://docs.aiscatcher.org/configuration/output/console/
 +
* web view: https://docs.aiscatcher.org/configuration/output/web-viewer/
 +
* <code>AIS-catcher -t txt://153.44.253.27:5631 -o 5 -N 8101 GEOJSON false MESSAGE true REALTIME false</code>
  
 
=== Papers ===
 
=== Papers ===

Revision as of 07:57, 12 October 2025

This paper focuses on NON Position-Report (1,2,3,18,19) / Static-Data (5/24) messages.

AIS-Decoders

Ais Decoder

gpsdecode

{"class":"AIS","device":"stdin","type":8,"repeat":0,"mmsi":257057800,"scaled":true,
"dac":200,"fid":10,"vin":"00000000","length":215,"beam":60,"shiptype":8440,"shiptype_text":"Illegal ship type value.",
"hazard":5,"hazard_text":"Unknown","draught":0,"loaded":0,"loaded_text":"N/A (default)",
"speed_q":false,"course_q":false,"heading_q":false}
{"class":"AIS","device":"stdin","type":8,"repeat":0,"mmsi":215349000,"scaled":true,"dac":1,"fid":27,"linkage":90,"sender":0,"rtype":5,"rtype_text":"Ship route plan","start":"00-00T24:60Z","duration":262143,"waypoints":[{"lon":7.107972,"lat":62.844255},{"lon":7.112132,"lat":62.848032}]}
{"class":"AIS","device":"stdin","type":8,"repeat":0,"mmsi":215349000,"scaled":true,"dac":1,"fid":29,"linkage":90,"text":"LESSREMMAN - ELNES (VIA RORVIK; OUTSIDE) CAPT YURI"}
  • nc ssia-ais.erau.edu 4000 | gpsdecode | grep -e '"type":8' -e '"type":27'
{"class":"AIS","device":"stdin","type":27,"repeat":0,"mmsi":368429323,"scaled":true,"status":"Not defined","accuracy":true,"lon":-81.0,"lat":29.2,"speed":0,"course":511,"raim":true,"gnss":false}
{"class":"AIS","device":"stdin","type":8,"repeat":0,"mmsi":369493715,"scaled":true,"dac":366,"fid":56,"data":"256:a83746ce99bb9edbd3eebb88bb7dcecba01df41d94f9397136c0c97eb4af8d69"}
{"class":"AIS","device":"stdin","type":8,"repeat":0,"mmsi":369493715,"scaled":true,"dac":366,"fid":57,"data":"512:bf68e50cc47b8ae14771ed1a0c075bfb60f82bb9ffec80211e4aad32b4edac38b33a6b4280f403d0dff4069a452f9cd51dfc44285226e53d7f337377f15829d6"}

missing/problems

  • Text Telegram does not decode!

{"class":"AIS","device":"stdin","type":6,"repeat":0,"mmsi":538007497,"scaled":true,"seqno":1,"dest_mmsi":212848000,"retransmit":false,"dac":1,"fid":0,"data":"96:8040494e05054d48120d612e"}

{"class":"AIS","device":"stdin","type":8,"repeat":0,"mmsi":257303700,"scaled":true,"dac":200,"fid":10,"vin":"00000000","length":114,"beam":36,"shiptype":8450,"shiptype_text":"Illegal ship type value.","hazard":5,"hazard_text":"Unknown","draught":150,"loaded":0,"loaded_text":"N/A (default)","speed_q":false,"course_q":false,"heading_q":false}

  • does not decode!

{"class":"AIS","device":"stdin","type":8,"repeat":0,"mmsi":257605000,"scaled":true,"dac":265,"fid":1,"data":"512:02017cf22f19aa2bc00f83af410ade2bc2dffbf6bff7822bc50fd3bbbffee02bc00f9874c049812bc140019c3ffd542bc0a017a6fee9842bc0787ea28bd27600"}

Maritec online AIS decoder

pyais

missing/problems

  • poor Msg:8 decoding. Only DAC:200 FI:10
{"msg_type": 8, "repeat": 0, "mmsi": 257057800, "dac": 200, "fid": 10, "vin": "00000000", "length": 21.5, "beam": 6.0, "shiptype": 8440, "hazard": 5, draught": 0.0, "loaded": 0, "speed_q": false, "course_q": false, "heading_q": false}
{"msg_type": 8, "repeat": 0, "mmsi": 215349000, "dac": 1, "fid": 27, "data": "FwFAGPP//3ggjnij9kTwQREIR+t9QIGPWI/RpYEAV0kfnN4B/oNCP0lbA/56ZH7oMAfMqQkAPXgPnOUSBujgIEAnJCF1QEOc0Uhdt0CLKQCQxYXBGjYZIXqkAkLbgkK4VwS3FHSHEE4JngLpEMz8"}
{"msg_type": 8, "repeat": 0, "mmsi": 215349000, "dac": 1, "fid": 29, "data": "FwUw4VOC2BYVIQEyChYkGAdIlCnI"}

others

aisdecode

AIS-catcher

Papers

NMEA Examples

Samples are taken from AIS-Sources

Message type 1 (out of scope)

Message type 2 (out of scope)

Message type 3 (out of scope)

Message type 4

Message type 5 (out of scope)

Message type 6

DAC:0
  • 6/0/54: !AIVDM,1,1,,,6@28nOP0R=Wr03H9q=6e2000,0*7F
DAC:1
DAC:200
  • 6/200/3: !AIVDM,1,1,,A,602E3TprE>Mv<P<j00,4*4C
DAC:232
  • 6/232/1: !AIVDM,1,1,,A,63P:`4l0SJP@>P7g6PGIGSjPJ0,4*4E
DAC:235
DAC:440
  • 6/440/40 !AIVDM,1,1,,A,603l90P0u2@8KRPh<=m8ADQcf@:e9N@PwP0wP008000080000000,0*75
DAC:990
  • 6/990/3 !AIVDM,1,1,,A,6>l4vWh0??VQurKe1?au8=jp1hU@@00010,4*1D

Message type 7

Message type 8

DAC:1
DAC:103
  • 8/103/56: !AIVDM,1,1,,,8000000Iv?JmFqtQ<6WvDdm4HwwhalETq?2Gq:wQ03,4*55
DAC:200
DAC:265
DAC:316
  • 8/316/0: !AIVDM,2,1,2,A,8000wQA?0000AkDp3@@i3kPC180TRA1iH=L;,0*6C !AIVDM,2,2,2,A,8888880,2*26
    • FI:0=?
  • 8/316/1/3: !AIVDM,2,1,6,,8030osA?0@>U:jPPPB38jnsuPTt6m2Oa@02U:jPPPB38knsvSTt0DRnA@02U:,0*55 !AIVDM,2,2,6,,jPPPB38nnsvA4so@Soi@02U:jPPP<<F<nsUvTr?DT?0@00,2*4C
  • 8/316/2/1: !AIVDM,2,1,7,,8h3Owj1?0P6U:eC<CO<hknsuq4t54P2222222220<DhTp7BVp004hLtl60MD5,0*23 !AIVDM,2,2,7,,8@T4qBbTP0HD@E84j0dUH4hTsBbg00,2*35
    • Lockage Order Message (Seaway)
  • 8/316/2/2:
    • Estimated Lock Times Message (Seaway)
  • 8/316/32/1: !AIVDM,1,1,,,8030osA?80440@0,2*44
DAC:366
DAC:755
  • 8/755/43: !AIVDM,1,1,,B,8i2r`;Btrpk:58a34`8,1*38

Message type 9

Message type 10

Message type 11

Message type 12

Message type 13

Message type 14

Message type 15

Message type 16

Message type 17

Message type 18 (out of scope)

Message type 19 (out of scope)

Message type 20

  • https://www.e-navigation.nl/content/data-link-management-message
  • !AIVDM,1,1,,,D01tMD@FLNfr<`f017@O6D8PN00,2*1A
  • !AIVDM,1,1,,,D05J8jP?TN?`fpNfp0,4*6E
  • !AIVDM,1,1,,,D030osj<TvfqsINfqt1N9ItaN96,2*21
  • !AIVDM,1,1,,,D030ow03Hg6D>e?6DF8g6D0,2*19
  • !AIVDM,1,1,,A,D7OertARHNfp00O6EPlNfqmtO6D,2*05
  • !AIVDM,1,1,,,D02Q:dQRpNfp00N000,4*7F
  • !AIVDM,1,1,,,D01vI7iGtS6EHpS6EI<S6D0,2*2E

Message type 21

  • https://www.e-navigation.nl/content/aids-navigation-report
  • !AIVDM,1,1,,,E>jN6L<Sc;pP000000000000000@7ctH>fwT000003iP10,4*09
  • !AIVDM,1,1,,,ENjNi4pV7ab@294V64W3h84`2P0@=3n;?R3t@00003vN10,4*61
  • !AIVDM,1,1,,,ENjAaDG2d:9@9ba@Fh24`bRh22hOmq?2:OvK@<7hGkP>2S1EPCU1KChr<JAh,0*6A
  • !AIVDM,1,1,,,ENjOsr0tg@6a9Qh;2W4QRP000000L;g4<wpI000000N010,4*68
  • !AIVDM,1,1,,,ENk`snv`5@@@@@@@@@@@@@@@@@@=Hbqv;fPcH00003vP000,2*48
  • !AIVDM,1,1,,,E>nlfRNQRW:97h=3h0W:2`:Ra:7erKB:n6Veh00003W010,4*77 !AIVDM,2,2,6,,jPPPB38nnsvA4so@Soi@02U:jPPP<<F<nsUvTr?DT?0@00,2*4C
  • !AIVDM,1,1,,B,ENk`sE<Hph@@@@@@@@@@@@@@@@@=7UIQ8889h00003vP000,2*36
  • !AIVDM,1,1,,A,E>lt;w9QRc11W00000000000000Dten:n39q@00003vP10,4*43
  • !AIVDM,1,1,,,ENj7=GrPV0R=40gQ0W5PP000000A0@2w<HI=000003v000,4*35
  • !AIVDM,1,1,,,ENj7=IaWR0ah;0a70hI00000000104rL<Fe0000003v000,4*31
  • !AIVDM,1,1,,,ENj7=IIWR0ah;0a70hHP00000000wu3N<Fqth00003v000,4*34
  • !AIVDM,1,1,,,ENj7=JqWR0ah2VTW2P0000000000wo`V<=kUP00003v000,4*3E

Message type 22

Message type 23

Message type 24 (out of scope)

Message type 25

Message type 26

Message type 27