Ais Decoder by Neal Arundale

Decodes All 27 AIS message types
Decodes Binary Data too
Introduction
The decoder will decode all the NMEA content of all 27 AIS mesage types and its Free. The NMEA messages must be in !AIVDM or !AIVDO format.
The decoder has been tested on an XP PC, and believe it should work on all Windows PC's after 98. Other users report it works on Vista, Win 7, Win 7-64 and Linux (Wine).
The maximum speed messages will be decoded depends of the information you are requesting and how the NMEA sentences are being received. From disk it will read, filter and list the last 10k valid sentences at around 500k sentences/min on my XP PC.
I would be very interested in any comments, suggestions or bugs. If you find any bugs, please email me the nmea.log file which is located in Documents and Settings\User\Application Data\Arundale\Ais Decoder\. This holds all nmea messages received since the decoder was last started (or the log was last read), so, to prevent the message triggering the error being overwritten, please rename it before you restart the decoder. I have intentionally not included any "blanket" error traps so that any bugs are not silently ignored, so it is very likely any bugs will crash the program.
 

Installation
The decoder comes as a self-extracting executable aisdecoder_setup.exe
Click here to Download AIS Decoder 
When run it will display a setup installer. The decoder will be installed on your start menu > Arundale > Ais Decoder
Each time the decoder is started, it will check my website to see if there is a later version available for download.
As I am still developing the program, these could be quite frequent.

AIS Data
The decoder expects NMEA AIS data on a dedicated UDP port 29421 (on the local PC), so you will probably need to convert the output from your receiver into UDP packets. IP address 127.0.0.1 is always the local machine.

If you are running ShipPlotter, it has a UDP output option.

You can also use Ais Dispatcher , which will convert tcp, udp or serial input into UDP.
If using Ais Server Lite see these additional instructions Interfacing with SiiTech Ais Server Lite
.
If your receiver output is USB, you probably already have installed a virual COM port driver so you will need to use this virtual com port as the input to AisDispatcher or ShipPlotter.
If your receiver outputs serial data to a serial-to-network adaptor (such as a Digi One) and the adaptor supports udp multicasting, you can forward udp packets to the network ip address of your pc, port 29421.
For more information on receiving AIS see Rene's excellent site at http://www.discriminator.nl/ais/index.html and Marine Traffic's FAQ
For details of all 27 AIS message types click here
For details of AIS Binary messages click here

Decoder



To start decoding click the start button. The top pane will display the raw NMEA messages as they are received, the decoded list is displayed below. To view the entire message detail, click the required message in the lower pane.

If you wish to view the detail as the messages are received, click the Detail On button. To stop the detail, click the same button again.
If you wish to scroll back, click the pause button. Messages will continue to be received, but will not be decoded into the lower pane. To continue decoding (including the buffered NMEA messages) click the same button again. There is a limit of 20,000 messages in the nmea buffer, after which only the last 20,000 will be visible. There is also a limit of 10,000 messages in the decoded buffer.
Ship names are intentionally not cached, they are "back-filled" as the appropriate message is received. This ensures you see the actual data being transmitted.





Filter
If you click the filter button you can apply a filter to the incoming NMEA sentences so only the ones you wish to receive are transferred to the decoded list. You can either type in the requires sentences or pick from the drop down boxes. Separating your selection with commas allows multiple selection. For example selecting 6 and 8 below, selects binary messages only. If you select a binary message format (and click OK) the DAC & FI boxes will appear, allowing a more specific selection.


Binary Messages

The International Binary Messages are still evolving, all the common ones I believe I have decoded.  St Lawrence Seaway, Inland Waterways and most ITU/IMO will be decoded by the program. To see which, click here.

Many binary messages are subject to local interpretation. Potentially there are many thousands of different binary messages possible. I have decoded many of the more common ones, where I can find the requisite information. If you have details of any of the DAC/FI messages types where I do not display at least some of the information, I would be pleased to receive more details.
For further details of binary message decoding click here


Log File
All received NMEA sentences are written to nmea.log as mentioned above. This is a plain text file so an nmea log file created from another source can be read if you rename the file you wish to display to nmea.log and then press the "Read Log" button. The filter will be applied to this file, if you set the filter before reading the file. Because the log file can get very large, it is re-created each time you start the program, if you wish to keep a copy, rename the file before restarting the program.

Command line switches

To automatically start decoding on startup add ' start' at the end of the command line
For example:
"C:\Program Files\Arundale\Ais Decoder\AisDecoder.exe" start
Note there is a space between exe" and start.
You will not be prompted if there is a new version on the server, instead you will see a download button.


Glossary
ITU
International Telecommunication Union
Allocates the radio spectrum and sets standards
IALA
International Association of Lighthouse Authorities Standards for navigation and pilotage
AIS
Automatic Identification of Ships

UAIS
Universal AIS
Extended AIS - principally binary mesages
NMEA
National Marine Electronics Association
Standands for communication between wired electonic ship devices
RAIM
Receiver Autonomous Integrity Monitoring
AIS Receiver monitors electronic position fixing device
DSC
Digital Selective Calling
Selectively call one (or many) station from another station
TDMA
SOTDMA
ITDMA
CSTDMA
RATDMA
FATDMA
Time Division Multiple Access
Self Organising TDMA
Incremental
TDMA
Carrier Sense TDMA
Random Access TDMA
Fixed Access TDMA
It allows for large numbers of transmitters to share one single narrow band radio channel, by synchronizing their data transmission to an exact timing standard (GPS)
There are a number of different methods used to allocate and synchronise "slots".
A Slot is a time slice used by the transmitter and receiver of the data.
GNSS
Global Navigation Satellte System

MMSI
Maritime Mobile Service Identifier Unique number to identify a ship or coast radio station
EPFD
Electronic Position Fixing Device

DTE
Data Terminal Equipment
Ais tx/rx & associated equipment
SAR
Search and Rescue

SART
Search and Rescue Transponder
Automatic Emergency Beacon
CRC
Cyclic Redundancy Check
Checks integrity of Nmea messages
MID
Maritime Identification Digits
The part of the MMSI identifying the home Country or base area. For an up to list see here
tx/rx
Transmitter/Receiver

IAI
International Application Identifier
Binary Message header consisting of the DAC and the FI
DAC
Designated Area Code
Geographic area for the binary application (1=international, normally the MID)
FI
Function Identifier
Type of binary message
IEC
International Electrotechnical Commission Electrical Standards, in particular for AIS inter-equipment NMEA formatted messages
ENI

European Vessel Identification Number
Unique European inland waterways vessel identification number (similar to MMSI)
EMMA
European Multiservice Meteorological Awareness system
Standards for weather warnings & symbols