Go to content

AIS Receiver - SARCNET

School Amateur Radio Club Network
School Amateur Radio Club Network
School Amateur Radio Club Network
School Amateur Radio Club Network
Skip menu
Title
Skip menu
Skip menu
AIS Receiver Mk3
New for December 2025
This project comprises a system for the reception of Automatic Identification System (AIS) messages. AIS messages are transmitted by many vessels on 162 MHz in the marine band. AIS messages may include the ship's MMSI (Maritime Mobile Service Identity), it's name, type, latitude, longitude, course and speed. This AIS Receiver, sends these AIS messages to multiple AIS Servers around the world. It connects via a local WiFi network and an Internet router. Most AIS Servers typically provide a real-time map display for registered users and some also archive this information, which can be used by maritime authorities for accident investigations. By doing so, this AIS Receiver contributes in some small way, to the Safety of Life at Sea. The new version of this AIS Receiver has a built-in web server, which provides the user with a local map display of the ships it receives. It also speeds up the identification of unknown vessels by maintaining its own vessel database and by querying AIS Hub.

This project was designed exclusively for the Raspberry Pi Zero 2W and the RTL-SDR Blog V3 and V4 dongles. However, in response to many builder's queries, we have tested it and it works fine on the Raspberry Pi 3B+ and RTL-SDR V2 dongles, provided you select the correct device when imaging the Micro SDHC card. The CPU load average on both devices was around 0.20.
History
  1. Our original article, published in the May 2016 edition of Amateur Radio magazine, describing the inspiration and operation of our AIS Receiver Mk1 is here.
  2. We also presented our AIS Receiver Mk1 at GippsTech, in June 2016, here.
  3. In January 2025 we released our AIS Receiver Mk2 with updated software.
  4. In December 2025 we released our AIS Receiver Mk3 exclusively for the Raspberry Pi Zero 2W RTL-SDR Blog V3 and V4 dongles. It includes an integrated web server for map display, a vessel database and AIS Hub integration.
Parts List
For the Mk3 AIS Receiver:
  • RTL-SDR dongle (V3 or V4) See: here.
  • Raspberry Pi Zero 2W single board computer. See: here.
  • 8GB or larger micro SDHC card.
  • 5 V 2 A USB Plug Pack
  • USB A Male to USB Micro Male Power Cable
  • USB A Female to USB Micro Male OTG Cable (OTG pin enabled - not just a USB Cable)
  • A suitable enclosure
For the Mk3 AIS Flower Pot Antenna:
  • Antenna mast - high enough to mount the antenna within line-of-sight of ships.
  • PVC Pipe mounting hardware for mast: U-Bolts and Brackets etc.
  • PVC Pressure Pipe: 15 mm Class 18, 21.2 mm OD, length 3m
  • PVC Pipe Cap for above
  • RG-58 Coaxial Cable with SMA Connector
For operation and maintenance:
  • WiFi Internet Router
  • PC with USB Micro SDHC card adapter and the following software
    • Raspberry Pi Installer
    • SSH Terminal Window (WinSCP recommended)
Construction
  1. Strip 414 mm of the sheath and braid off the end of RG-58 Coaxial Cable.
  2. Strip 10 mm of the dielectric off the end of RG-58 Coaxial Cable.
  3. Make a 3 mm loop at the end of the centre conductor. Solder the loop to secure it.
  4. Attach a short length of Poly Cord to the loop.
  5. The length of the exposed dielectric and loop should now be 407 mm.
  6. Drill 8 mm holes in the PVC Pipe: 800 mm from the top and 900 mm from the top.
  7. Feed the Poly Cord through the top hole and out the end of the PVC Pipe.
  8. With the loop level with the end of the PVC Pipe secure it using the PVC Pipe Cap.
  9. Pull the Coaxial Cable tight out of the top hole and wind 13 close-space turns around the outside of the PVC Pipe.
  10. Pass the Coaxial Cable back into the centre of the PVC Pipe and pull it out the end of the PVC Pipe.
  11. Attach an SMA Male connector to the end of the Coaxial Cable.
  12. Connect the SMA Male connector to the RTL-SDR USB Dongle.
  13. Connect the RTL-SDR USB Dongle to a USB A Female to USB Micro Male OTG cable.
  14. Connect the USB A Female to USB Micro Male OTG cable to the Raspberry Pi Zero 2W USB Micro socket.
  15. Connect the USB A Male to USB Micro Power Cable to the Raspberry Pi Zero 2W Power socket.
  16. Connect the USB A Male to USB Micro Power cable to the 5 V 2 A Plug Pack.

Mk3 AIS Receiver Assembly


Mk3 AIS Flower Pot Antenna Assembly
Create a Micro SDHC Card Image
Download the latest Raspberry Pi OS for the Raspberry Pi Zero 2W (Note: A Raspberry Pi 3B+, or later, should work too, but is not covered here) and write it to an micro SDHC card using the Raspberry Pi Imager software as follows:

  1. Insert the micro SDHC card into your PC (via a USB adapter if necessary).
  2. Download and install the Raspberry Pi Imager on your PC from here.
  3. Start the Raspberry Pi Imager.
  4. Select your Raspberry Pi device: Raspberry Pi Zero 2W. Press Next.
  5. Choose OS: Raspberry Pi OS (other). Raspberry Pi OS Lite (64 Bit) Debian Trixie with no desktop environment. Press Next.
  6. Choose Storage: Select the Micro SDHC Card storage device. Press Next.
  7. Customisation: Choose hostname: ais. Press Next.
  8. Customisation: Localisation. Set your Capital city, Time zone and Keyboard layout. Press Next.
  9. Customisation: Choose Username. Username: pi. Password: ? - It is very important to use a strong password! Press Next.
  10. Customisation: Choose Wi-Fi. SSID and Password for access to your WiFi router. Press Next.
  11. Customisation: SSH authentication. Enable SSH. Use password authentication. Press Next.
  12. Customisation: Raspberry Pi Connect. Deselect Enable Raspberry Pi Connect. Press Next.
  13. Write image. Review your choises. Press Write.
  14. Press I UNDERSTAND, ERASE AND WRITE.
  15. Remove the micro SDHC card from the PC when advised.
Start your Raspberry Pi Zero 2W
Insert the SDHC card into the Raspberry Pi and connect all required devices as follows:

  1. Power off the Raspberry Pi
  2. Insert the micro SDHC card into the Raspberry Pi Zero 2W.
  3. Connect the USB RTL-SDR Blog V3 or V4 dongle to the Raspberry Pi Zero 2W USB port using the USB OTG cable.
  4. Connect the USB Plug Pack to the Raspberry Pi Zero 2W PWR IN port using the USB A to USB Micro cable.
  5. Connect a 162 MHz marine band antenna to the USB RTL-SDR dongle using coaxial cable with an SMA connector.
  6. Power up the Raspberry Pi. Wait for it to boot.
  7. On your PC:
    1. Make sure your PC is connected to your local WiFi network.
    2. Log into your WiFi Router and check that it sees the Raspberry Pi and note it's IP address.
    3. Log in to the Raspberry Pi via SSH over the WiFi network: We recommend using WinSCP on Windows/Linux and iTerm2 on MacOS.
    4. Log in with username pi and your password.
Install our AIS Messenger Software
  1. Request a link to our AIS Messenger install script here and follow the instructions therein to download it.
  2. After installation, check that the AIS Receiver is operating, by viewing the text and map displays as shown below.
  3. If it isn't, re-check all the connections, re-boot, re-connect and log in as follows.
  4. Later, you will need to optionally calibrate your AIS Receiver frequency, register your AIS Receiver with AIS Servers, configure your AIS Receiver and operate your AIS Receiver.
Text display
You can monitor the operation of your AIS Receiver on a PC using SSH over your Wi-Fi network as follows:

  1. Use PuTTY or other SSH terminal emulator to connect to your AIS Receiver
  2. Use an SSH connection type with the IP address of your AIS Receiver as the Host Name and use Port 22
  3. When connected, log in to your AIS Receiver:
    1. Type: pi
    2. Type: Your password
    3. Type: sudo journalctl -f -u ais-messenger.service -o cat
  4. You will see a list of time-stamped, colour-coded, AIS messages scrolling up the screen as follows.
Display format
The display provides decoded ship data and system information separated by commas. Two consecutive commas indicates that there was no data to display. The display format is divided into 13 fields as follows:
  1. Date/Time in UTC. Format: YYYYMMDDhhmmss.
  2. Channel: Message received on Channel A = 161.975 MHz or channel B = 162.025 MHz
  3. Maritime Mobile Service Identity MMSI or International Maritime Organization IMO number
  4. Ship name
  5. Ship type:
    1. N/A, Ground Effect, Fishing, Towing, Dredging, Diving, Military, Sailing, Reserved,
    2. Speedboat, Pilot, Search and Rescue, Tug, Port Tender, Anti-pollution equipment, Law Enforcement,
    3. Local, Medical, Noncombatant, Passenger, Cargo, Tanker, Unknown, NavAid, Station
  6. Latitude - Decimal degrees. + = North, - = South
  7. Longitude - Decimal degrees. + = East, - = West
  8. Altitude - Feet AMSL - Search and Rescue aircraft mainly
  9. Course or Heading - Course if speed is greater than 1 knots, otherwise heading
  10. Speed - Knots
  11. Channel utilization ratio: -100 % = All received on channel A, 100 % = All received on channel B. 0 % is optimal.
  12. Total number of ships being tracked at present. Note: System automatically restarts at midnight local time.
  13. Operation - None, Sent, Found, Saved, Deleted, Fetched

Display background highlighting
  • Black: New message - Not sent to any servers. Message sent already in timeout period.
  • Green: New message - Sent to all servers
  • Yellow: New message - Found missing ship data in local database and sent it to all servers
  • Light Blue: New ship - Saved ship data in local database and sent it to all servers
  • Dark Blue: Deleted ship - Not seen for timeout period and deleted
  • Red: New ship - Fetched missing ship data from AIS-Hub, saved it in local database and sent it to all servers
Display example
pi@ais:~ $ sudo journalctl -f -u ais-messenger.service -o cat

20251126122451,B,5030280  ,VTS WILLIAMSTOWN,Station,-37.866873,144.904053,,,,-8%,36
20251126122452,B,5030230  ,VTS BELLARINE,Station,-38.163303,144.605043,,,,-8%,36
20251126122459,A,995036193,INDIA,NavAid,-38.448333,144.543333,,,,-8%,36
20251126122503,B,503000169,LIEKUT,Cargo,-37.842625,144.90697,,154,0.0,-8%,36 SENT
20251126122507,B,503046320,IMOGEN ALICE,Sailing,-37.907178,144.98147,,332.7,0.0,-8%,37 FOUND
20251126122512,A,503000169,LIEKUT,Cargo,-37.842627,144.906968,,154,0.0,-8%,37 SENT
20251126122517,B,563201800,CNC JAWA,Cargo,-37.814252,144.912563,,181,0.3,-8%,37 FETCHED
20251126122521,A,563026200,RONG LIN WAN,Tanker,-38.22138,144.912318,,180.6,14.3,-8%,37 SAVED
20251126122529,A,311001600,ICS TENACIOUS,Tanker,-37.88934,144.910952,,272,0.3,-8%,37 SENT
20251126122530,B,995036196,ECC-1,NavAid,-38.30333,144.633332,,,,-8%,37
20251126122531,B,5030280  ,VTS WILLIAMSTOWN,Station,-37.866873,144.904053,,,,-8%,37
20251126122532,B,5030230  ,VTS BELLARINE,Station,-38.163303,144.605043,,,,-8%,37
20251126122533,-,636025367,BASIC PASSION,Cargo DELETED
20251126122533,A,563026200,RONG LIN WAN,Tanker,-38.222113,144.912305,,180.7,14.3,-8%,36 SENT
20251126122534,A,503084570,RUM JUNGLE,Sailing,-37.943948,144.993813,,360.0,0.0,-8%,36 FOUND
20251126122539,A,563280400,SEASPAN HAMBURG,Cargo,-37.81643,144.912593,,181,0.0,-8%,36 SAVED
20251126122540,B,503084570,RUM JUNGLE,Sailing,-37.943958,144.993803,,360.0,0.0,-8%,36 SENT
20251126122541,B,5030229  ,VTS WILLIAMSTOWN,Station,-37.866873,144.904053,,,,-8%,36
20251126122542,A,5030230 ,VTS BELLARINE,Station,-38.163303,144.605043,,,,-8%,36
20251126122547,A,563201800,CNC JAWA,Cargo,-37.81426,144.912537,,184,0.0,-8%,36 SENT

Note that this AIS Receiver only queries the online AIS Hub database no more than once per minute, to comply with their fair-use agreement. Fixed station messages are only sent after a sent timeout. Ships are deleted after their seen timeout. These items are configured in then ais_messenger.txt file.
Map display
To display the map, type the IP address of your AIS Receiver into a web browser connected to the same WiFi network. An Open Street Map is displayed, showing icons to represent the home station, other fixed stations, navigation aids and ships.


The colour of the ship icons represent the ship type and the point of the ship icon represents the ship’s course or heading. The icons used are as follows:

Home station Fixed station Navigation aid TankerTugUnknown vessel Cargo vessel
Fishing vessel Passenger vessel Pleasure craft Speedboat Search and rescue vessel/aircraft

The latitude and longitude of the map centre, the initial map zoom level and the map refresh period are set in the ais_messenger.txt file. The name, icon, latitude and longitude of the home station are also set in the ais_messenger.txt file.

AIS messages received from ships, all contain the ship's MMSI number, but they may only contain partial information about the ship. The ship's name, type, latitude, longitude, altitude, course, speed and heading may all arrive over different messages, transmitted over a period of time. When you first activate your AIS Receiver you will probably see a large number of unknown ships, all with grey icons. They will generally be sorted out over the next 30 minutes or so. However, to speed up this process, AIS Messenger keeps a local database of ships already seen and can optionally query the AIS Hub database for more information. The later requires user registration with AIS Hub and setting the username in the ais_messenger.txt file. We highly recommend it!
Map controls

  • Left-click and drag to reposition the map centre
  • Use the on-screen + and - buttons, or the mouse wheel, to zoom
  • Use the refresh button to update the map and to save the current map centre and zoom level
  • The map will aromatically refresh after the refresh period.
  • Left-click on an icon to display a pop-up information box
Calibrate your AIS Receiver (Optional)
The operating frequency of the USB RTL-SDR Dongle's internal Temperature Controlled Crystal Oscillator (TCXO) may not be precisely on frequency, depending on its quality and other factors. Note: The frequency offset of the AIS Receiver is measured in Parts Per Million (ppm). For new 1ppm RTL-SDRs you would assume that calibration is hardly necessary as the frequency should only be off by +/- 162Hz.

However, to investigate calibration issues, first check the Channel Utilisation Ratio on the text display. It indicates any imbalance in the number of messages received on channel A as opposed to channel B. Note that it is reset to 0 % at midnight, every night. Since ships always use both channels equally, it should be sitting around 0 % after only a few hundred messages have been received. If many more A messages are received than B messages, say -50%, you could increase the AIS Receiver ppm offset. If many more B messages are received then A messages, say +50%, decrease the AIS Receiver ppm offset. You could do this until there is a general balance of A and B messages. The AIS Receiver ppm offset can be set by editing the ais_messenger.txt file as shown below.

Note: This is not a fool-proof approach, however, as either channel could be subject to local interference - A strong possibility in some areas. Our advice would be to check out AIS reception in your area using your RTL-SDR dongle with free Airspy SDR# software (see guide) tuned to 162 MHz. We were surprised when our AIS Receiver worked well on our Yagi antenna, but did not receive any A messages at all on our colinear antenna. The two antennas were only 1 metre apart!  The following images show that the colinear antenna was receiving continuous, strong pager interference right next to the A channel:

If you are not receiving any messages and you suspect a gross calibration problem, you can use the RPi internal clock to approximately measure the AIS Receiver frequency offset in PPM. To do this use the following procedure:

1. Login to the Raspberry Pi Zero 2W using SSH and a terminal window from your PC (With WinSCP or PuTTY):
    1. Type: pi
    2. Type: Your password
2. Stop the AIS Messenger service and run the RTL test utility
    1. Type: sudo systemctl stop ais_messenger.service
    2. Type: rtl_test -p60
    3. Wait until the cumulative error value (in PPM) remains more-or-less the same for three consecutive minutes
    4. Note the last cumulative error value (in PPM). As shown below it is -3 PPM in this case.

pi@AIS:~ $ rtl_test -p60
Found 1 device(s):
 0:  Realtek, RTL2838UHIDIR, SN: 00000001

Using device 0: Generic RTL2832U OEM
Detached kernel driver
Found Rafael Micro R820T tuner
Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6
[R82XX] PLL not locked!
Sampling at 2048000 S/s.
Reporting PPM error measurement every 60 seconds...
Press ^C after a few minutes.
Reading samples in async mode...
Allocating 15 zero-copy buffers
lost at least 64 bytes
real sample rate: 2048000 current PPM: 0 cumulative PPM: 0
real sample rate: 2047993 current PPM: -3 cumulative PPM: -1
real sample rate: 2047989 current PPM: -5 cumulative PPM: -3
real sample rate: 2047994 current PPM: -3 cumulative PPM: -3
real sample rate: 2047995 current PPM: -2 cumulative PPM: -3
3. Update the ais_messenger.txt file with the required correction value in PPM (+3 in this case), which is the opposite of the error value in PPM (-3 in this case) as determined above. Use the AIS Receiver configuration process below to edit the file.
4. Restart the AIS Messenger service and monitor the text display:
a. Type: sudo systemctl restart ais-messenger.service
b. Type: sudo journalctl -f -u ais-messenger.service -o cat
Register your AIS Receiver
By default, the AIS Receiver software will upload the received AIS station data, anonymously, to AIS Hub, Vessel Finder, Pocket Mariner and Ship Finder AIS servers. However, we recommend that your station be registered to upload station-specific data to AIS Hub, Vessel Finder, Marine Traffic, Shipping Explorer, AIS Friends and MyShipTracking servers. Register with them to get a unique Upload IP Address and Port Number for your AIS station. Some AIS servers provide significant benefits to registered AIS station operators, like free premium membership for the use of their AIS data and AIS station upload statistics, area coverage, online availability and email alerts. If you only upload anonymously, your data will be mixed with data from stations all over the world. Since AIS servers don't all share your data, please upload to as many as possible. It will make the world a safer place for vessels! Here are the links to some AIS service providers including their IP Address and Port Numbers for anonymous upload:
Configure your AIS Receiver
You will need to configure your AIS Receiver to suite your location as follows. The configuration file is at /home/pi/env/ais_messenger.txt, which can be edited as follows:

  1. Login to the Raspberry Pi over SSH using PuTTY:
    1. Type: pi
    2. Type: Your password
  2. Edit the file as shown below.
    1. Type: nano env/ais_messenger.txt
    2. Enter your own station and map centre coordinates.
    3. Add your registered AIS Hub username.
    4. Add your registered AIS Server IP addresses and ports.
    5. Note: A # at the start of a line is a comment. Do not change the word in [ ] or before an = sign.
    6. Type: <Ctrl> O to save.
    7. Type: <Ctrl> X to exit.

#ais_messenger.txt - AIS Messenger configuration file for ais_messenger.py
#Copyright (c) 2025, Julie VK3FOWL and Joe VK3YSP.
#For The School Amateur Radio Club Network (r) VK3SRC.
#Version 1.0 - 1 December 2025

[AIS Receiver]
#Note: AIS Receiver (RTL-SDR USB Dongle) frequency offset in parts per million (ppm).
ppm = 0
#RF Gain 0 - 49.6
gain = 49.6
#Automatic Gain Control. On if agc = yes, but works in conjunction with gain
agc = yes
#Print raw messages. On if verbose = yes
verbose = no
#Print decoded messages. On if decode = yes
decode = no
#Note: AIS Receiver Bias T control is provided in the ais_messenger.sh installer script

[AIS Messages]
#Hide ships not seen after seen minutes
seen = 30
#Fixed stations sent every sent minutes
sent = 30

[AIS Servers]
#Register your AIS Receiver with AIS Servers. Add the upload IP Address and Port Numbers here:  
#AIS server list. Format: IP Address:Port Number
#Anonymous Ports
144.76.105.244:2222
195.201.71.220:5964
54.225.113.225:5322
109.200.19.151:4001
#Registered Ports

[AIS Hub]
#Enable AIS Hub lookups if aisenable = yes
aisenable = no
#The AIS Hub web service url and username
aishub = https://data.aishub.net/ws.php
aisname = ENTER_YOUR_AIS_HUB_USERNAME_HERE

[Map]
#Enable the webserver and map display if mapenable = yes
mapenable  = yes
#The initial centre coordinates and zoom level for the OpenStreetMap
latitude = -38.09191
longitude = 144.77832
zoom = 10
#Auto map update time in seconds. 0 = No auto update.
update = 60

[Home]
#The home station's name, icon filename and coordinates
name = Home
icon = home.ico
latitude = -37.90748
longitude = 145.09225
Operate your AIS Receiver
Operating your AIS Receiver station is easy. Just switch it on, let it connect to the Internet and it will receive and upload AIS traffic to the AIS Servers, 24/7. You can monitor the text or map display over your WiFi network. To get the most out of operating your AIS Receiver you should consider the following:

  1. Make a backup copy of the RPi micro SDHC card using Win32diskimager. If it ever gets corrupted you won't have to start installation from scratch.
  2. Use WinSCP to make a backup copy of the /home/pi/env/ais_ships.csv file on your PC. This file contains a list of all the ships you have seen. Open it in a spreadsheet app on your PC. You will be amazed how many different ships visit your area.
  3. Monitor your AIS Receiver regularly. Check it if ever an AIS Server notifies you that it is off-line.
  4. Your AIS Receiver will reboot automatically every night at midnight. This few minutes of outage will greatly improving its reliability.
  5. Open a port on your WiFi router or use a VPN to access your AIS Receiver text and map displays remotely.
  6. Check your AIS Servers regularly. Some provide useful AIS Receiver station statistics and on-line maps.
  7. Useful AIS Messenger command summary:
    1. Stop: sudo systemctl stop ais-messenger.service
    2. Edit: nano env/ais_messenger.txt
    3. Restart: sudo systemctl restart ais-messenger.service
    4. Monitor: sudo journalctl -f -u ais-messenger.service -o cat
Extend your AIS database
It is possible that the name and type of some stations, navigations aids or ships remain unresolved. This is because they do not transmit that data and they are not to be found on the AIS Hub database either. This can be frustrating if they are local stations or frequent visitors. In that case, with a bit of investigation, it is possible to add a manual entry to your local database so that they are recognised in the future. For example, the following stations (with IMO 5030280 and 5030230) as shown on the text display initially have no name:

20251126122451,B,5030280  ,,Station,-37.866873,144.904053,,,,-8%,36
20251126122452,B,5030230  ,,Station,-38.163303,144.605043,,,,-8%,36

Then, after AIS Messenger failed to find them using an automatic search of AIS Hub, they were give then name 'None', as follows:

20251126122451,B,5030280  ,None,Station,-37.866873,144.904053,,,,-8%,36
20251126122452,B,5030230  ,None,Station,-38.163303,144.605043,,,,-8%,36

Some googling did not locate any useful information, but a vessel search on Marine Traffic revealed that they were both local Vessel Tracking Service (VTS) installations. So, based on their known locations, the following entries were added at the start of the ais_ships.csv file:

5030280,VTS WILLIAMSTOWN,102,20250328225507       
5030230,VTS BELLARINE,102,20250328225507

After adding the entries, above, the text display now shows:

20251126122451,B,5030280  ,VTS WILLIAMSTOWN,Station,-37.866873,144.904053,,,,-8%,36
20251126122452,B,5030230  ,VTS BELLARINE,Station,-38.163303,144.605043,,,,-8%,36

The format of the ais_ships.csv file is: MMSI/IMO, NAME,TYPE,DATE/TIME FIRST SEEN (UTC - YYYYMMDDhhmmss). However, to make you own entries you will also need to know the type numbers used in the file. For future reference, they are as follows:

0-19 N/A, 20-29 Ground Effect, 30 Fishing, 31-32 Towing, 33 Dredging, 34 Diving, 35 Military,
36-37 Sailing, 38-39 Reserved, 40-49 Speedboat, 50 Pilot, 51 Search and Rescue, 52 Tug, 53 Port Tender,
54 Anti-pollution equipment, 55 Law Enforcement, 56-57 Local, 58 Medical, 59 Noncombatant,
60-69 Passenger, 70-79 Cargo, 80-89 Tanker, 90-99 Reserved, 100 Unknown, 101 NavAid, 102 Station

Note: These numbers (or number ranges) are the same as used in the raw AIS message format, except for the last three, which were added.
More information
Our code is free. It is provided with absolutely no warranty and must not be used for any navigation or safety-critical application. If you like it, please help us promote School Amateur Radio Clubs with a link to our website.

For more information and credit for the excellent open-source code used in this project please see:
  • RTL-SDR-Blog on GitHub: rtl-sdr-blog
  • A simple AIS tuner and generic dual-frequency FM demodulator by D. Giardini on GitHub: rtl-ais
Project Status (Updated: 1 December 2025)
Total number of reported builders: 733 (AIS Receiver Mk1 & Mk2). Please update your status by e-mailing us. You can send us pictures and reports of your progress.
AIS Yagi Antenna
In most cases the AIS receiving station is located inland, or at least on the coast. In these situations, omnidirectional coverage is not needed. Where 90-120 degree beamwidth is adequate, a small Yagi antenna can provide additional gain over a simple omnidirectional antenna.

We have recently developed a simple, low-cost method of Yagi antenna construction for schools: It does not require a drill press or any special tools. This method uses aluminium flat bar elements, which are easy to cut, drill, bend and connect to. The folded-dipole driven element can be formed by rolling it around a 25mm dowel. The boom is made using light-weight aluminium angle. Everything is assembled using M5 x 12mm stainless-steel hex bolts, with shakeproof washers (on either side of the boom for good electrical connection and rigidity) and nylock nuts. These bolts can be fastened, using spanners, to a high torque - to prevent the elements turning. A 25x25x25mm piece of PVC angle is use as an insulator for the feed point. It can be glued to the boom. A quarter-wavelength balun is attached to the boom using cable ties. Coaxial cable connection to the driven-element is made using two, 3mm holes at feed point and 3mm ring-lugs. The coax shield is connected to the boom via a 5mm ring-lug at the feed point. All connections are kept very short.


Feed Point Construction

This 3-Element AIS Yagi Antenna for 162MHz was designed using the VK5DJ Yagi Calculator and constructed using 12x3mm aluminium flat bar elements on a light-weight 1m length of 25x25x3mm aluminium angle boom.

VK5DJ's YAGI CALCULATOR RESULTS
Yagi design frequency =162.00 MHz
Wavelength =1851 mm
Parasitic elements contacting a square section metal boom 25 mm across.
Folded dipole mounted same as directors and reflector
Director/reflector strip =12 mm by 3 mm
Radiator strip =12 mm by 3 mm
REFLECTOR Length 912.6mm. Boom position 30 mm
RADIATOR Folded Dipole 25 mm ID. Length 899.9 mm. Boom position 400.1 mm.
DIRECTORS Dir 1. Length 824.3 mm. Boom position 538.9 mm. Gain 4.8 dBd. Gain 6.9 dBi.
A quarter-wavelength 4:1 balun uses 0.66 velocity factor RG-58C and is 611 mm long.


Balun Construction

Vertical Mounting on 8.5m Aluminium Mast

AIS 162MHz 3-Element Yagi Antenna with Coaxial Balun
Status Reported by Builders
The following is a list of some of the builders who have completed the rotator and sent us their comments or pictures:

Richard Charmers - "Hi all, Just a line to let you know that I have got my AIS receiving station up and running. I used your antenna design, fastened onto the (no longer used) chimney stack. There's a Pi 3A connected to a Nooelec NESDR SMArt v4 SDR located in the attic. I also installed AISHUB's Ais Dispatcher program onto the Pi, which gives me a web page to monitor from any machine on my network. We're located on the southern shore of Broadford Bay, Isle of Skye and are pulling in messages from up the Inner Sound, over to Kyleakin, Raasay and possibly as far as Kishorn. Many thanks, I wish there had been such fun things when I was at school!!! Keep up the good work."


John VK4AJC -  I have recently completed a build of your AIS Receiver project and I’m very pleased with the performance. It is currently uploading data to a number of AIS services from my location on the top end of the Sunshine Coast in QLD. Build details are: Antenna - 5/8th wave vertical stainless steel whip.  Preamp - Uputronics 162MHz AIS filtered preamp. Receiver - RTL-SDR software defined radio. Processor - Raspberry Pi 3 Model B. AIS Receiver Software - SARCNet v2.00 I am located 4km inland from the coast, so, to improve coverage I will most likely build the 3-element Yagi in the near future. A photo of the build is attached. Thank you for documenting this project. Regards, John VK4AJC



Skip menu
Skip menu
Back to content