Build an AIS Ship Tracker with Raspberry Pi and RTL-SDR: Decoding Marine Traffic
This site already covers tracking aircraft with an RTL-SDR-based ADS-B receiver, and marine AIS (Automatic Identification System) is the boat-world equivalent — ships over a certain size are required to broadcast their position, heading, speed, and identity over VHF, and with the same $30 RTL-SDR dongle already sitting in a lot of maker shops, you can decode that traffic and put every nearby vessel on a live map. It's a genuinely different receive target from ADS-B: different frequency band, different protocol, and different antenna requirements, but the software stack and the Raspberry Pi backend will feel familiar if you've built the flight tracker already.
What AIS Actually Is
AIS transmits on two dedicated marine VHF channels — 161.975 MHz (AIS 1) and 162.025 MHz (AIS 2) — using a GMSK-modulated, self-organized TDMA scheme where vessels take turns transmitting in time slots without central coordination. Class A transponders (required on most commercial vessels and larger craft) broadcast frequently and include the vessel's MMSI number, name, callsign, position, course, speed, and navigational status. Class B (common on recreational and smaller commercial boats) transmits less frequently and with less data but is still fully decodable with the same receive chain. Unlike ADS-B's 1090 MHz aviation band, AIS lives in VHF marine spectrum, so your existing 1090 MHz antenna won't do anything useful here — you need a receive path actually tuned for the marine VHF band.
Parts List
- RTL-SDR Blog V4 (or similar RTL2832U-based) SDR dongle
- VHF marine-band antenna (161-162 MHz tuned, or a wideband discone/collinear VHF antenna)
- Raspberry Pi 4 or Raspberry Pi Zero 2 W
- 32GB or larger microSD card
- USB extension cable (keeps the dongle's own RF noise away from the Pi)
- Low-loss SMA coax cable for antenna placement away from the receiver
- Mast or roof mount bracket for antenna placement
- Weatherproof enclosure (if the Pi or dongle will live outdoors near the antenna)
Difficulty, Time, and Tools
Difficulty: Beginner to Intermediate — no soldering required, but antenna placement and Linux software setup benefit from prior Raspberry Pi experience.
Build time: 2-3 hours for software setup and initial testing; longer if running new coax or mounting an outdoor antenna.
Tools required: A computer for flashing the Pi's SD card, a way to run cable to an antenna with reasonable line-of-sight to open water or a harbor, and basic command-line comfort for editing config files over SSH.
Software Setup
Flash Raspberry Pi OS Lite (headless is fine — this project doesn't need a desktop) and get SSH working using the same headless setup process this site's Pi guides cover. Once you're in:
- Install the RTL-SDR drivers and blacklist the kernel's DVB-T driver, exactly as you would for any RTL-SDR project (the dongle's chipset is shared with cheap TV tuner sticks, and the wrong driver will grab the device before your AIS software can).
- Install AIS-catcher, the actively maintained open-source AIS decoder that reads directly from the RTL-SDR and decodes both AIS channels simultaneously, or rtl-ais as a lighter-weight alternative that outputs standard NMEA AIS sentences over a network socket.
- Point AIS-catcher's built-in web server at your dongle — it ships with a browser-based live map out of the box, so you get a working chart display without needing separate mapping software for a first test.
- For integration with marine charting software or Home Assistant, forward the decoded NMEA sentences over UDP or TCP to a program like OpenCPN (a free marine chart plotter that natively displays AIS targets) or into an MQTT bridge for your own dashboard.
Antenna Placement
Range is almost entirely a function of antenna height and line-of-sight to the water, since VHF marine propagation is fundamentally limited by the radio horizon. A dedicated VHF marine antenna mounted as high as practical — a roofline, an attic run to an exterior wall, or a mast if you have coastal or lakefront access — will meaningfully outperform a dongle's stock antenna sitting on a desk indoors, in the same way a proper 1090 MHz antenna transforms an ADS-B setup. Realistic ranges run from a few miles with a modest indoor-adjacent setup to 40+ miles with a well-placed outdoor antenna and clear line of sight over open water; hills, buildings, and terrain between you and the traffic you're hoping to hear will cut that down fast.
What You Get
Once running, AIS-catcher's web interface shows every vessel currently transmitting within range on a live map, complete with vessel name, type, speed, heading, and destination where the transmitting ship includes it. It's a genuinely useful complement to an ADS-B setup for anyone near a coastline, a major river, or the Great Lakes — and unlike aircraft, ships move slowly enough that you can watch traffic patterns develop over the course of an afternoon rather than needing to catch a fast-moving target in the moment.
This is entirely passive, receive-only monitoring of signals ships are required by international maritime regulation to broadcast publicly for safety purposes — there's no transmission involved and no licensing requirement to simply listen, the same legal footing as the site's other RTL-SDR receive-only projects.