Android AIS receiver for RTL SDR dongles, Airspy R2, Airspy Mini, Airspy HF+ and TCP (RTL-TCP and SpyServer)

Overview

AIS-catcher for Android - A multi-platform AIS receiver

This Android App helps to change your Android device into a dual channel AIS receiver that can be used to pick up AIS signals from nearby vessels, even if offline! The App directly accesses a Software Defined Radio USB device and can send received messages via UDP to plotting Apps like Boat Beacon or OpenCPN. A lightweight AIS receiver system when travelling.

The following screenshot was taken in July 2022 with AIS-catcher receiving signals for a few minutes on a Samsung Galaxy S6 on a beach near The Hague with a simple antenna. Ship positions are plotted with the BoatBeacon app.

Below you can find a link to the APK file or visit the Google Play Store.

The requirements to receive AIS signals are: a RTL-SDR dongle (or alternatively an AirSpy Mini/R2/HF+), a simple antenna, an Android device with USB connector and an OTG cable to connect the dongle with your Android device. AIS-catcher only receives and processes signals and then forwards the messages over UDP. To make it a bit more interesting you would need an App like Boat Beacon or OpenCPN to map the received vessel information.

And one more thing, you need to be in a region where there are ships broadcasting AIS signals, e.g. near the water.

Purpose and Disclaimer

AIS-catcher for Android is created for research and educational purposes under the GPL license. This program comes with ABSOLUTELY NO WARRANTY; This is free software, and you are welcome to redistribute it under certain conditions. For details see the project page.

It is a hobby project and not tested and designed for reliability and correctness. You can play with the software but it is the user's responsibility to use it prudently. So, DO NOT rely upon this software in any way including for navigation and/or safety of life or property purposes. There are variations in the legislation concerning radio reception in the different administrations around the world. It is your responsibility to determine whether or not your local administration permits the reception and handling of AIS messages from ships and you can have this App on your phone. It is specifically forbidden to use this software for any illegal purpose whatsoever. The software is intended for use only in those regions where such use is permitted.

Installation and Download

You can download AIS-catcher-for-Android in the Release section in the form of an APK-file. There are various resources on how to install an APK file available on the web.

If you get an error message, please delete any previous version first. Feedback is very much appreciated by mailing me or sharing in the Issue section. The latest development version is available here as artifact of an automatic build.

For a video of a field test of an early version see YouTube. Below we have included a Getting Started tutorial when running with a RTL-SDR dongle. The steps for the AirSpy and TCP connections are very similar. Please notice that your phone or tablet has to power the USB device and run the decoding algorithm and this will be a drain on your battery. When sending UDP NMEA lines over the network or decoding from TCP (SpyServer or RTL-TCP) this will require serious network traffic. Advice is to do this when connected via WiFi. Finally, the computationally intensive nature of AIS decoding requires the phone to give the Application sufficient run time. On some phones Android might restrict this and some tuning of the phone settings might be required.

Tutorial: Getting Started

1. Getting around: the main screen

The main screen of AIS-catcher is as follows:

The tabs section at the top provides access to the main statistics and information when AIS-catcher is running whereas the bottom navigation bar has the buttons to start/stop the receiver, clear the logs/statistics and select the source device you want to use for reception.

2. Configuring the connection with OpenCPN and/or BoatBeacon

AIS-catcher is a simple receiver that decodes messages and can send the messages from ships onward to specialized plotting apps via UDP. In this step we are going to set up the outward connections to BoatBeacon and OpenCPN. For this we will use port 10110 for BoatBeacon and 10111 for OpenCPN. Press the 3 vertical dots on the top right and select the Setting option. Scroll to the bottom and activate the two UDP output connections via the switch and set the parameters as follows:

3. Setting up the Connection on OpenCPN

Next we start OpenCPN and click on Options (top left icon) and choose the Connections tab. We need to add a Network connection using UDP at address 0.0.0.0 dataport 10111. You could initially select Show NMEA Debug Window as extra option which will give you a window in OpenCPN that shows all incoming NMEA messages it receives from AIS-catcher. This could be helpful debugging a connection issue between the receiver and OpenCPN. The Connections tab will look something like:

4. Granting AIS-catcher access to the USB dongle

Next we connect AIS-catcher to the RTL-SDR dongle. By default the user needs to give applications the rights to use a USB device. For this connect the dongle with your Android device using the OTG cable (if needed) and, if all is well, you should be asked if AIS-catcher can get access. With Dutch language settings (sorry) this should look like:

Accept the request and consider giving AIS-catcher permanent access to the device so this step can be skipped in the future.

5. Configuring the RTL-SDR dongle

Next go back to the Settings menu via the 3 vertical dots on the main screen and set up the RTL-SDR settings:

These settings should be ok but don't forget to set the frequency correction in PPM if needed for your device. You can set the dongle settings at any point in time but they will only become active when a new run is started.

6. Selecting the input source

In the Main screen select the Source by clicking the right-most item in the bottom navigation bar. Select the RTL-SDR device:

The bottom navigation bar should show which device is currently active and will be used for AIS reception.

7. Running AIS-catcher

In the main screen now click Start on the left in the bottom navigation bar. This starts the run and a notification is given that a foreground service is started. The navigation tabs allow you to see different statistics during the run (like message count (STAT), messages from the receiver (LOG) and received NMEA lines (NMEA) ).

AIS-catcher will run as a foreground service so the app will continue to receive messages when closed. That's all there is to it. Have fun!

Credits

AIS-catcher for Android uses the following libraries:

libusb-1.0.26+: https://github.com/libusb/libusb

libusb is a library for USB device access from Linux, macOS, Windows, OpenBSD/NetBSD, Haiku and Solaris userspace. It is written in C (Haiku backend in C++) and licensed under the GNU Lesser General Public License version 2.1 or, at your option, any later version (see COPYING).

rtl-sdr: https://github.com/osmocom/rtl-sdr

Turns your Realtek RTL2832 based DVB dongle into a SDR receiver. Licensed under the GPL-2.0 license. Modified for Android to open devices with file descriptors: https://github.com/jvde-github/rtl-sdr.

airspyhf: https://github.com/airspy/airspyhf

This repository contains host software (Linux/Windows) for Airspy HF+, a high performance software defined radio for the HF and VHF bands. Licensed under the BSD-3-Clause license. Modified for Android to open devices with file descriptors: https://github.com/jvde-github/airspyhf.

airspyone_host: https://github.com/airspy/airspyone_host

AirSpy usemode driver and associated tools. Modified for file descriptors here: https://github.com/jvde-github/airspyone_host.

AIS-catcher: https://github.com/jvde-github/AIS-catcher

AIS receiver for RTL SDR dongles, Airspy R2, Airspy Mini, Airspy HF+, HackRF and SDRplay. Licensed under the GPGL license.

Privacy Policy

At the moment we don't collect any user data. This policy will vary per version so please check this policy for each release.

To do

  • More testing....
  • Application crashes when USB device is unplugged whilst in the source selection menu
  • Application should automatically switch to SDR source if not playing and device connected
  • Application crashes when AirSpy HF+ is disconnected (seems to be a more general issue) Solved.
  • Shorter timeouts when connecting to RTL-TCP
  • WiFi-only check in case: RTL-TCP streaming or UDP NMEA broadcast to other machines
  • Wakelocks and WiFi performance settings, etc...
  • Add sync locks for updates
  • Count buffer under- and over-runs
  • Simple map - radar view
  • Simple graphs with statistics
  • Start button not properly reset when receiver stops due to timeout?
You might also like...
🎥 A Simple and Minimal Movies Android Application to demonstrate the Modern Android Development and Jetpack Compose.
🎥 A Simple and Minimal Movies Android Application to demonstrate the Modern Android Development and Jetpack Compose.

ComposeMovie Android 🎥 A Simple and Minimal Movies Android Application to demonstrate the Modern Android Development and Jetpack Compose. Built with

An Open-Source repository that contains all the Android Dev and Kotlin concepts and several projects on android ranging in difficulty making this repo completely beginner-friendly.
An Open-Source repository that contains all the Android Dev and Kotlin concepts and several projects on android ranging in difficulty making this repo completely beginner-friendly.

An Open-Source repository that contains all the Android Dev and Kotlin concepts and several projects on android ranging in difficulty making this repo completely beginner-friendly. The main aim of this repository is to help students who are learning Android Development or preparing for an Android Developer role-based job.

Android News App built in kotlin with implementation of MVVM architecture, android navigation components and retrofit. Displays news to users allowing them to share and save news.
Android News App built in kotlin with implementation of MVVM architecture, android navigation components and retrofit. Displays news to users allowing them to share and save news.

News-App Android news app built in kotlin that fetches news data from news api with Retrofit and displays news to users. This App follow MVVM architec

MQTTandroidApp is android application that monitoring users state and other ambient condition, the acquire data is send at central broker (RaspberryPI3) of the MQTT architecture and then recieved back again an anothers android devices that chose to subscribe at topic. Taskify - An app to manage your daily tasks and boost your productivity. Taskify is built using kotlin and follows all modern android Development practices and hence is a good learning resource for beginners
Taskify - An app to manage your daily tasks and boost your productivity. Taskify is built using kotlin and follows all modern android Development practices and hence is a good learning resource for beginners

Taskify Taskify is an app to manage your daily tasks and boost your productivity Video Introduction 📹 This is a small introduction video about Taskif

Communicating between Wear OS and Android device using the OpWear module and a sample of displaying real-time camera on the watch and sending commands to the mobile by Wear OS.
Communicating between Wear OS and Android device using the OpWear module and a sample of displaying real-time camera on the watch and sending commands to the mobile by Wear OS.

OpWear-Cam Communicating between Wear OS and Android device using the OpWear module and a sample of displaying real-time camera on the watch and sendi

Twidere-Android Twidere is a powerful twitter client for Android 1.6+ 1 , which gives you a full Holo experience and nearly full Twitter's feature.
Twidere-Android Twidere is a powerful twitter client for Android 1.6+ 1 , which gives you a full Holo experience and nearly full Twitter's feature.

Twidere for Android Material Design ready and feature rich Twitter/Mastodon/Fanfou app for Android 4.1+. Enjoy Fediverse now! Twidere-Android is maint

Extensible Android mobile voice framework: wakeword, ASR, NLU, and TTS. Easily add voice to any Android app!
Extensible Android mobile voice framework: wakeword, ASR, NLU, and TTS. Easily add voice to any Android app!

Spokestack is an all-in-one solution for mobile voice interfaces on Android. It provides every piece of the speech processing puzzle, including voice

Aggregated Android news, articles, podcasts and conferences about Android Development
Aggregated Android news, articles, podcasts and conferences about Android Development

DroidFeed Curated news feed for Android Developers! Stay up to date with the latest Android Development news. Built for the Android developer communit

Comments
  • AIS-catcher-for-Android stops receiving

    AIS-catcher-for-Android stops receiving

    I have a no name rtl dongle. When I start I get 20 to 60 Messages, and than it stops. Even when I start the app again, or reattach the dongle, I only 0 to 2 new messages. With the same setting, dongle and antenna, with windows 10 and SDRangel I get a continous stream of NMEA messages Any idea what is wrong?

    opened by syspart 16
  • driver crashes after a minute or 2

    driver crashes after a minute or 2

    I'm getting boat positions in OpenCPN now. I think a full tutorial is needed though :smile:

    For now, the problem is with duration. The RTL-SDR driver is started manually and it throws:

    onStart
    RtlSdr: found 1 device opening options
    HackRF: found 0 device opening options
    Only 1 option available, no need to ask user. Opening rtl-sdr /dev/bus/usb/001/003
    Queueing
    Arguments SdrTcpArguments{gain=24, samplerateHz=1024000, frequencyHz=91800000, address='0.0.0.0', port=14423, ppm=0}
    Starting service with device rtl-sdr /dev/bus/usb/001/003
    Opening fd 48
    Set sampling rate to 1024000
    Tuner gain set to 2.400000 dB
    SdrTcp: Listening on [0.0.0.0:14423](http://0.0.0.0:14423/)
    SdrTcp: Waiting for client...
    Device was open. Closing the prompt activity.
    The rtl-tcp implementation is running and is ready to accept clients
    Acquired wake lock. Will keep the screen on.
    Starting was successful!
    
    SdrTcp: TCP server succesfully started and listening for clients!
    SdrTcp: Client has connected.
    set freq correction 0
    set gain mode 0
    set sample rate 240000
    SdrTcp: commandListener failed to receive command
    SdrTcp: Command listener thread exiting
    SdrTcp: Waiting for command thread to die
    SdrTcp: TCP server shutting down.
    SdrTcp: Closing sdrtcp due to main thread finishing
    SdrTcp: Closing from state 0
    SdrTcp: Server thread shut down
    rtlsdr_read_async finished successfully
    SdrTcp: Requested sdrtcp stop but already stopped
    Successfully closed service
    Wake lock released
    Closing service
    

    Starting was successful! is the last message before launching AIS-catcher. I don't know what commandListener is, but it seems that it's missing at some point and it closes.

    opened by j2l 15
  • getting messages but can't see a thing on opencpn

    getting messages but can't see a thing on opencpn

    Hi, Your project seems great! I have a RTL-SDR receiver and live near the sea, I successfully got 11 messages (type: other) and set up a connection (UDP, 127.0.0.1:10110) on opencpn free (android) but I don't see any boat on the map.

    Would you please share the full process to link your catcher and opencpn?

    Thank you

    opened by j2l 8
  • APP still available?

    APP still available?

    Sorry, but I am just tried to pick up the app in Play Store by searching "ais catcher". But no success so far. Finding apps like MarineTraffic, RTL SDR AIS Driver and other.

    opened by dwarning 3
Releases(v0.28)
Owner
Jasper
Jasper
Demo app demonstrating how to create and manage notifications locally using a combination of Jetpacks Worker Manager and Broadcast Receiver.

Worker Notification Demo app demonstrating how to create and manage notifications locally using a combination of Jetpacks Worker Manager and Broadcast

Ayia 1 Sep 19, 2022
This is Mini Project - Android app for Passenger to file FIR Online.

Passenger-Security-2021 Passenger Security - Online FIR Filing System This is project of Smart India Hackathon 2018 - Software Edition under the Minis

null 2 Jul 20, 2022
Paimondex App is an Android App that contains super mini wiki for playable characters from Genshin Impact, where you can favorite to save the character

Paimondex App is an Android App that contains super mini wiki for playable characters from Genshin Impact, where you can favorite to save the character. This could also show you the description of the each character with their talents and constellations.

Ervin Suriandi 1 Apr 13, 2022
A Mini paint Kotlin app

A Mini paint Kotlin app that helps in primitive drawing using some features such as pen, arrow, rectangle and circle drawing. You can also choose the color you want to paint with.

Walid Mohamed 3 Dec 12, 2022
Create Android Demo with TCP/IP Protocol.

DEMO说明文档 本demo为Java 编写的给Android手机或平板使用TCP方式控制Dobot协作机器人CR(以下简称CR)的DEMO DEMO系统要求 Android 4.3版本以上即可 工程文件说明 工程文件需要使用Android Studio打开,请使用4.0版本的Android Stu

Dobot 1 Aug 16, 2022
Script Android from TCP socket

What is this? This is an Android application that will execute commands received over TCP port 9988, which includes automatic introspection to call an

Pierre-Hugues HUSSON 9 Jun 3, 2022
android-delicious Delicious Android is an Android app which helps you access and save bookmarks via Delicious. It's available over at Google Play.

Delicious Android Delicious Android is an Android app which helps you access and save bookmarks via Delicious. It's available over at Google Play. Fea

Alexander Blom 137 Nov 20, 2022
Android cutout screen support Android P. Android O support huawei, xiaomi, oppo and vivo.

CutoutScreenSupport Android cutout screen support Android P. Android O support huawei, xiaomi, oppo and vivo. Usage whether the mobile phone is cutout

hacket 5 Nov 3, 2022
Vaibhav Jaiswal 57 Jan 3, 2023
🌄 Photo editor using native modules for iOS and Android. Inherit from 2 available libraries, Brightroom (iOS) and PhotoEditor (Android)

React Native Photo Editor (RNPE) ?? Image editor using native modules for iOS and Android. Inherit from 2 available libraries, Brightroom (iOS) and Ph

Baron Ha. 242 Dec 28, 2022