AIS-catcher

AIS receiver for RTL SDR dongles, Airspy R2, Airspy Mini, Airspy HF+, HackRF, SDRplay and SoapySDR

GPL-3.0 License

Stars
482
Committers
11

Bot releases are hidden (Show)

AIS-catcher - v0.40

Published by jvde-github almost 2 years ago

  • Smaller bug fixes (mainly on HTTP posting) and compilation issues with older GCC versions
  • Addition of country field to JSON output (mapped from MMSI code), switch on with -M M.
  • AIS-catcher can decode NMEA lines. Not very useful but it provides a way to move the JSON analysis to the server side (send over NMEA and minimal meta data) or unit test the JSON decoder which is the prime reason for the feature. Use the model -m 5, e.g.:
echo '!AIVDM,1,1,,B,3776k`5000a3SLPEKnDQQWpH0000,0*78'  | AIS-catcher -m 5 -r . -o 5

which produces

{"class":"AIS","device":"AIS-catcher","scaled":true,"channel":"B","nmea":["!AIVDM,1,1,,B,3776k`5000a3SLPEKnDQQWpH0000,0*78"],"type":3,"repeat":0,"mmsi":477213600,"status":5,"status_text":"Moored","turn":0,"speed":0.000000,"accuracy":true,"lon":126.605469,"lat":37.460617,"course":39.000000,"heading":252,"second":12,"maneuver":0,"raim":false,"radio":0}

Which can be compared for example against the output of gpsdecode:

echo '!AIVDM,1,1,,B,3776k`5000a3SLPEKnDQQWpH0000,0*78' | gpsdecode

which produces:

{"class":"AIS","device":"stdin","type":3,"repeat":0,"mmsi":477213600,"scaled":true,"status":5,"status_text":"Moored","turn":0,"speed":0.0,"accuracy":true,"lon":126.605467,"lat":37.460617,"course":39.0,"heading":252,"second":12,"maneuver":0,"raim":false,"radio":0}
AIS-catcher - v0.39

Published by jvde-github almost 2 years ago

  • -o 4 is now -o 5 and -o 4 is a new intermediate level that shows a subset of the AIS message fields that are relevant for map plotting.
  • Experimental switch -go AFC_WIDE on to make the decoder more robust for thermal drift in cheaper RTL-SDR dongles following this discussion. Don't use this unless you have to because of a dongle suffering from thermal drift hampering reception. It will come at a cost of sensitivity. My test database shows 50% improvement in message rate of the default decoder over a standard FM-based decoder, which reduces to 30% with this switch activated. See also the section on Frequency Correction for RTL-SDR dongles.
  • The default downsampler uses a simple but efficient CIC5 filter. To mitigate some of the drawbacks of this method, this version now uses by default a simple droop compensator in the form of a fast 3 tap filter which can be switched off with the switch -go DROOP off. More information can be found here
  • Includes a first implementation that allows received messages to be posted using the HTTP protocol periodically. Please see this section for more details. This could be an interesting option if you want to submit data to APRS.fi or develop a cloud service for collecting data.
AIS-catcher - v0.38

Published by jvde-github about 2 years ago

  • Renamed option -o to -c (option to select AIS channels)
  • Calculation of Signal power (in dB) and applied frequency correction (in ppm) calculated with option -M D
  • NMEA messages are timestamped with option -M T. To activate both timestamp and above meta data use -M DT or -M TD.
  • -o 3 shows NMEA lines and additional information including signal power and timestamp (with -M DT) in JSON format so it can be easily processed in 3rd party software.
  • More extensive JSON output is provided with the switch -o 4
  • -T switch that stops the program after a specified number of seconds to facilitate experiments.
  • start.bat added to Windows binaries to make it easier to set up parameters for less experienced command-line users..
  • ...
AIS-catcher - v0.37

Published by jvde-github over 2 years ago

  • Enable RTLSDR biastee switch in pre-build Windows binaries
  • Experimental feature to compensate some of the droop when using CIC5 for downsampling, activated with -go DROOP_COMPENSATION on.
  • Point the decoder to 156.8 Mhz to receive Channel 3/C and 4/D (vs A and B around 162 MHz) with the switch -o CD. This follows ideas from a post on the Shipplotter forum and at request of a user. The conventional decoder is available with the switch -o AB which is also the default if nothing is specified. Note that gpsdecode cannot handle channel designations C and D in NMEA lines. You can provide an optional argument to use channel A and B in the NMEA line with the command -o CD AB.
  • SDRplay support included in Windows pre-build binaries
AIS-catcher - v0.36a

Published by jvde-github over 2 years ago

Small bug fix for AIS-catcher connecting to SpyServers running on Windows.

AIS-catcher - v0.36

Published by jvde-github over 2 years ago

For executables, please download v0.36a

Version 0.36:

  • new switch -a which unlocks the bandwidth functionality on some devices including the RTL dongles.
  • extension of functionality to read WAV-files with more data types (8 and 16 bit PCM) and increasing flexibility on data layout (FACT chunk recognized).
  • removal of sampling rate restriction, experimental option to downsample using the libsoxr library if available (and libsamplerate). Early experiments do not show an improvement in reception and system load but it allows for more flexibility on input sample rates. E.g.:
    AIS-catcher -v -go SOXR on
  • Non-blocking implementation for the RTL-TCP client (shorter timeout when port not reachable). Added -gt TIMEOUT option.
  • Several fixes to cmake-file
  • Dockerfile moved to Debian-slim from Alpine to resolve workflow and compatibility issues
  • SoapySDR support. Only available when build with make soapysdr-only or with cmake .. -DSOAPYSDR=ON.
  • We have set up a Github workflow to automatically build windows binaries for AIS-catcher (with full functionality), see the Actions menu. The built includes recent versions of the SDR libraries which contain improvement in stability for Windows systems (instead of relying on VCPKG builds), see also these commits.
  • SpyServer support is now included. For an example, see the README.
AIS-catcher - v0.35

Published by jvde-github over 2 years ago

Version 0.35:

  • Fast fixed point downsampling extended to CS8 datatype (signed bytes) and more sample rates (i.e. support for HackRF). We illustrate on an Ubuntu laptop with an IQ sampled file at a rate of 12.288 MHz in 8-bit signed integers. The results without fixed point downsampling:
AIS-catcher -r CS8 moscow-12.288M.raw -s 12288000 -b -v -q 
...
[AIS engine v0.34]:                      212 msgs at 16.8 msg/s
[AIS engine v0.34]:                      6001.74 ms

Hence, AIS-catcher identifies 212 messages with a decoding time of 6 seconds. Using the -F switch reduces the computation time to 3.1 seconds without an impact to the number of found messages in this case:

AIS-catcher -r CS8 moscow-12.288M.raw -s 12288000 -b -v -q -F
...
[AIS engine v0.34]:                      212 msgs at 31.2 msg/s
[AIS engine v0.34]:                      3131.34 ms
  • Fine tuning of EMA model, EMA model seems to perform now at least as good and is faster.
  • Fix CMAKE file for hackrf support on Raspberry Pi
  • Fix CMAKE file for issue with compilation including ZeroMQ support on MacOS.
  • Exponential Moving Average (EMA) model is now defaullt (e.g. -m 2 -go PS_EMA on)
  • SDRPlay RSP1 and SDRPlay RSPDX support (only DX tested on Antenna A)
AIS-catcher - v0.34

Published by jvde-github over 2 years ago

  • cmake support to resolve some earlier build annoyances.
  • enhancement of reset conditions of decoder to improve reception
  • slightly faster close of program for RTL-SDR, RTL-TCP and ZMQ streams
  • Model support for a sample rate of 912K samples/second
  • RTLTCP: protocol setting (option RTLTCP and NONE for connection to GnuRadio TCP sink).
AIS-catcher - v0.33

Published by jvde-github almost 3 years ago

  • restructuring of the directory layout
  • Makefile now autodetects library locations: make will only build for installed SDR libraries
  • recalibration of decoding parameters resulting in a small improvement in sensitivity
  • added instructions and a solution file for building AIS-catcher with RTL-SDR support on Windows using Visual Studio 2019 and above (at a few requests)
  • proper call to close devices at the end of the program and automatic termination if device is disconnected. For Windows please use the latest version of the rtl-sdr library with this fix.
  • ZMQ support: ability to easily transfer data from GNU Radio to AIS-catcher
AIS-catcher - v0.32

Published by jvde-github almost 3 years ago

Support for early versions of the Raspberry Pi, e.g. the Raspberry Pi Model B Rev 2, via performance enhancements at the cost of a small tradeoff in sensitivity.
I implemented a trick to speed up fixed point downsampling for RTLSDR input at 1536K samples/second. Furthermore a new model (-m 5) is introduced which uses exponential moving averages in the determination of the phase instead of a standard moving average as for the default model.
Both features can be activated with the -F switch.
To give an idea of the performance improvement on a Raspberry PI (700 MHz), I used the following command to decode from a file on the aforementioned Raspberry Pi:

AIS-catcher -r posterholt.raw -s 1536000 -b -q -v

Resulting in 38 messages and the -b switch prints the timing used for decoding:

[AIS engine v0.31]	: 17312.1 ms

Adding the -F switch yielded the same number of messages but timing is now:

[AIS engine (speed optimized) v0.31]	: 7722.32 ms

This and other performance updates make the full version of AIS-catcher run on an early version of the Raspberry Pi with very limited drops.

AIS-catcher - v0.31

Published by jvde-github almost 3 years ago

read from stdin and minor speed and performance improvements

AIS-catcher - v0.30

Published by jvde-github almost 3 years ago

Addition of Airspy R2 support (via enabling sampling at 2.5 and 10 MHZ). Thanks to user for bringing this up.

AIS-catcher - v0.29

Published by jvde-github almost 3 years ago

Addition of HackRF support at 6MHz sampling rate.

AIS-catcher - v0.28

Published by jvde-github about 3 years ago

Addition of rtl_tcp support

AIS-catcher - v0.27b

Published by jvde-github about 3 years ago

At request of a user added ability to send UDP messages to multiple destinations, e.g.

AIS-catcher -u 127.0.0.1 12345 -u 127.0.0.1 23456

Fix bug with negative frequency correction (e.g. using -p -1)

AIS-catcher - v0.26

Published by jvde-github about 3 years ago

added -n and -L switches
-n displays NMEA messages to screen without additional information
-L shows the SDR devices supported in the present executable and terminates

AIS-catcher - v0.25

Published by jvde-github about 3 years ago

Initial support for SDRPLAY RSP1A

AIS-catcher - v0.24

Published by jvde-github about 3 years ago

Added support for advanced Airspy HF+ gain support (pre-amp setting and treshold) (resolve compilation error rtl-only)

AIS-catcher - v0.22

Published by jvde-github about 3 years ago

Added support for 6MHz sample rate for Airspy mini

AIS-catcher - v0.21

Published by jvde-github about 3 years ago

Addition of more advanced gain and bias tee support and clean up