AIS Receiver - Universita Politecnica delle Marche

AIS Receiver at Università Politenica delle Marche

DII - Information Engineering Department - Telecommunication System Team


AIS system (stands for Automatic Identification System ) was developed to increase safety at sea. Ships broadcast their position automatically on a periodical time base and all vessels equipped with an AIS receiver or transponder, are able to plot other ship position, course and other information.

Data are transmitted on VHF Maritime band using GMSK modulation scheme, and are easy to receive using a special pourpose equipment or a common marine RTX with an external data demodulator (a PC and a soundcard will work great).

We are involved in AIS data receiving and analysis in order to carry out some scientific research in the field of electromagnatic wave propagation over sea water. We aim to find a correlation between distance of received ships and propagation in the 2m hamradio band. This is only the first "step" of a biggest project aimed to extract a model of propagation from data provided by the AIS system and from a beacon receiver

If you have an question, please contuct us on: this address

Tecnical Information

AIS Receiver has been provided from Marine Traffic in order to extend coverage of the network on Ancona area.

Atenna system is installed on the top of the "tower" of Faculty of Engineering , at 205 meters above sea level. The location is very good for wireless installation as there are no obstacles for many kilometers all around the tower.

Horizon clearance from antenna site.

Antenna is a very small HamRadio Antenna which is fed using a low loss foam cable.

Given a value of -120dBm for the receiver sensitivity (as claimed from the manufacturer) and a transmitting power of 12.5 w, we are able to simulate system's coverage using Radio Mobile .

Coverage map
coverage map
Coverage Map color scale

Decoding Engine

Data provided from AIS are in the form of an ASCII string like following: !AIVDM,1,1,,B,13cita001N0uC7\

AIS protocol decoder has been developed using php language, in order to make it really "platform independent". PHP language provides a lot of functions for string manupulation, which are very usefull in the decoding process.

Many different message types are decoded using our engine, out effort is to add even more decodinf function to the software. Information retrived from protocol's payload are displayed on screen and stored in a mysql database for further "off-line" analysis.

Due to the large number of packets received, data are inserted in mysql tables according to followin rule: we store information about a particural MMSI only if the last update is older than 5 minutes. In this way we can "decimate" information stored on table without loosing too much information: ship speed is so low that we can tolerate a low sampling period

Further processing of data stored is done using a bash/php script which is run every minute. Data processed from the script are fed to MRTG system which takes care of displaying results.

Following graphs are generated (time-window is 1 hour):

Accessing data

We require you to register to our site before accessing data. Registration is mandatory for statistical pourposes only. Email addresses will not be published. Ocasionally we may send you a newsletter, to inform about site or code improvements.

If you have any question about registration form and data contact us.

Not Yet registered? - REGISTER NOW!

Username or Password Lost? - RECOVER NOW!

To Do List and changelog

As a part of a research program, this site and related scripts and program are subjected to evolve and change frequently. In this section we'll try to keep a updated changelog. Please feel free to contact us.

Obtaining the Code

Please don't waste your time re-inventing the wheel. Access our code (Released as GPL v3) and use it for your needs. Feel free to help us developing new code, adding more functionalities and making it even faster. Code can be accessed usgin SVN on our "Google Code" repository: Google Code: ais-decoder-php

Due to google code shutdown, the project will be hosted at iz6cus site


April 05 2012
Initial release of site and program, only for testing.
April 24 2012
Added registration to site.
Added statistics for site
Added capability to decode messages of type 24 and 5 (partial)
New map features: displaying vessel name and callsign
New search features: MMSI, Vessel Name and Callsign search
May 24 2012
Added capability to decode messages of type 18 and 19.
Bug correction on message type 24.
New method to dispatch messages, bug free!
June 08 2012
Added Fixed station analysis
Added new features in decoder (message type 21 and 27)
August 02 2012
Google Code StartUp
April 08 2013
Minor bug correction. New code to take care of errored checksums
New page added to site: error.php to analize errored checksum distribution
Now running code v1.7 and site v1.6
July 2013
Insert bug correction. Version 1.8
September 2013
Insertname bug correction. Changed development platform.
Version 1.9
November 03 2013
Major changes in decoding engine and web-site code.
Decoder: a new function was added to calculate maxima and populate a new table in the dB
Decoder: in this way I hope the site will be quicker in answering.
Decoder: Decoded data are copied in a new table in order to make map drwawing quicker.
Web-Site: Maxima are taken from a table. No need to scan the whole database.
Web-Site: Map is now plotted using a shorter table which is cleaned every day in order to keep it very compact.
Now Running code v1.91 and site v1.8
November 06 2013
Change of calendar page layout and presentation.
Now Running code v1.91 and site v1.8
Novembre 11 2013
Very strong winds have broken our antenna system. Now the station is running on a spare antenna.
January 10 2014
Now Running code v2 and site v2


Connection Failure