I wanted to try out something unique with my RTL-SDR on my cruise around the Azores Islands. The Azores are an archipelago about 500 miles off the coast of Portugal in the Atlantic Ocean. They were an important stop for trans-Atlantic sailors, as it was a convenient rest between Europe and the new world. Many sailors including Christopher Columbus and Henry the Navigator used the Azores resupply point. After the advent of engines, the Azores have been bypassed, much like Route 66. Now they serve only for destination for trans-atlantic sport sailing, and tourists.

I had an RTL-SDR and a laptop on my cruise around the Azores, and wanted to participate in this maritime culture. Ships use the Automatic Identification System (AIS) to beacon their location to other ships in the area. This beacon is used to track ships for the Vessel Traffic Services (VTS) and avoid collisions.

The two frequencies commonly used in the AIS protocol are 161.975 MHz and 162.025 MHz. Transponders use time division multiple access algorithms to organize when they transmit. This means ships share the same frequency and only transmit during their timeslot. AIS uses Gaussian Minimum Shift Keying (GMSK), to transmit packets.

rtl-ais

I used the command line tool, rtl-ais to capture AIS data using my software defined radio. I built rtl-ais by cloning from their website, and running make. Then the command ./rtl-ais -n will use the default settings, and print to screen.

RTL-AIS Example of rtl-ais displaying packets

Here is an example of what an AIS packet looks like after rtl-ais decodes it:

!AIVDM,1,1,,A,1D`UvF@02SMgTH@EjwqaW7b606j8,0*19

AIVDM: NMEA message type for a message received from a different ship.
1: Number of sentances.
1: Sentance Number.
A: AIS Channel (AKA which frequency used).
1D`UvF...: The encoded AIS data.
0*19: The checksum

rtl-ais by default will send the AIS packet on UDP port 10110.

OpenCPN

Now that there are AIS packets flowing, I used OpenCPN to view the beacons on a map. OpenCPN, I went to Tools->Options->Connections. Next, I clicked “Add Connection” and added the UDP socket.

OpenCPN Setup for AIS

Now that the socket is setup, the AIS beacons started to flow in. They appeared on the screen as little arrows, reminiscent of the game “Asteroids”. When you click on the arrow, it shows more information about the ship.

OpenCPN More Info

  • THOR B: The Name of the ship.
  • CSGE3: The call sign
  • MMSI: Maritime Mobile Service Identity, a unique ID for each vessel.
  • Class: A is large ship, B is small ship.
  • IMO: A unique ID that remains for the lifetime of the ship.
  • Flag: The nationality of the flight.
  • Tug, Moored: “Navigation Status”, other options are: At anchor, Under way using
  • engine, etc.
  • Position: Latitude and Longitude Coordinates
  • Report Age: When the last AIS message was received
  • Destination: The destination port. In this case the town of Horta on Faial Island.
  • ETA: When the ship expects to get to its destination.
  • Speed: How fast its going.
  • Course: The direction the ship is moving.
  • Heading: The direction the ship is facing.
  • Range: Distance to the ship from your ship.
  • Bearing: Direction to the ship from your ship.
  • Turn Rate: How fast the ship is turning.

OpenCPN

Example of OpenCPN plotting the AIS beacons in the Horta Marina

OpenCPN

Zoomed out, I received a message from 142 Nautical Miles away! (I think there maybe a repeater somewhere because that is a long range)

Conclusion

With a software defined radio and a few open source programs I was able to visualise the locations of different ships in the Azores. Participating in the Nautical tradition of the Azorean people, albeit in a small way, made me feel connected with centuries of sailors that passed through these islands.

-E

Extra - Graffiti

Graffiti

Part of the sailing tradition in Horta is to paint graffiti of your ship on the dock. This is supposed to bring good luck for your voyage. There are hundreds of these paintings depicting brave seamen on their trans-Atlantic voyages. Here are some of my favorites:

Graffiti

Graffiti