GNU AIS - Automatic Identification System for Linux

This program contains algorithms to demodulate and decode AIS messages sent by ships and coast stations. You will need to connect it to the discriminator output of a VHF receiver to make it work.

The source code for gnuais is maintained on Github. You can clone the repository by running:

git clone

If you are an Ubuntu user, you can add the PPA ppa:saltmakrell/gnuais by running:
sudo add-apt-repository ppa:saltmakrell/gnuais
sudo apt-get update
and then you can easily install gnuais with
sudo apt-get install gnuais
or via Ubuntu Software Center and it will get updated automatically whenever there are new updates are available.

You can also install the GUI by running:
sudo apt-get install gnuaisgui
(remember that you need to have gnuais running in the background before you start the GUI)

Download as tar.gz:    Source

In the picture below, three different kinds of packets can be seen, type 1, type 4 and type 5. Type 4 are packets that are sent from base stations on shore. They usually send at a regular interval quite often. The first number, 002573325 is the MMSI. This is a unique id for identifying the base station. The numbers 0 0 0 24 60 60, are supposed to be date and time, but it seems like that this base station has not got the time correct or something. The two last numbers are latitude and longitude.

For message type 1, the first number is the MMSI, the two next numbers are latitude and longitude. Then there is a number which is heading in degrees. 220 means that the ship is heading south-west. 0 degrees is north. The next number is speed in knots. For ships you can check up the MMSI at and find out some extra data about it. For example is the one with MMSI 565427000 called ARWEN and a Singapore based ship.

It is able to decode packets with name and destination data too, but these are so long and since the signal path still is not very good, most of these don't get through error-free. Those packets are of type 5, and if you are lucky you will get some of them decoded too. Below there is one type 5 packet which says that the ship with MMSI 257347700 is called LISE and is heading for Trondheim, it is 15 meters long, 4 meters wide and the height is 1.5 meters.

If you have a computer running mysql or access to a mysql-server elsewhere you can configure GNU AIS to save data to this server. Then you will be able to query information about ships with other software. You can for example make queries which provide detailed info about where and when a ship have been, what speed it had etc. You can also make software which makes the MySQL data available for Google Earth. Then you can get a graphical view of the ships and boats sailing in your area.

If you are interested in GNU Radio, you will find a GNU Radio version of AIS decoding and demodulating at: Logo

GNU AIS at sourceforge