A simple AIS tuner and generic dual-frequency FM demodulator
C Python Makefile
Pull request Compare This branch is 70 commits ahead, 1 commit behind keenerd:master.
Latest commit e262cb5 Aug 30, 2016 @dgiardini committed on GitHub spurious character supressed

README

----------------------------------------------------------------------
rtl_ais, a simple AIS tuner  and generic dual-frequency FM demodulator
OS: Linux-Windows-OSX.
----------------------------------------------------------------------

------------
COMMAND LINE
------------
Use: rtl_ais [options] [outputfile]
        [-l left_frequency (default: 161.975M)]
        [-r right_frequency (default: 162.025M)]
            left freq < right freq
            frequencies must be within 1.2MHz
        [-s sample_rate (default: 24k)]
            maximum value, might be down to 12k
        [-o output_rate (default: 48k)]
            must be equal or greater than twice -s value
        [-E toggle edge tuning (default: off)]
        [-D toggle DC filter (default: on)]
        [-d device_index (default: 0)]
        [-g tuner_gain (default: automatic)]
        [-p ppm_error (default: 0)]
        [-R enable RTL chip AGC (default: off)]
        [-A turn off built-in AIS decoder (default: on)]
            use this option to output samples to file or stdout.
        Built-in AIS decoder options:
        [-h host (default: 127.0.0.1)]
        [-P port (default: 10110)]
        [-T use TCP communication as tcp listener ( -h is ignored)]
        [-t time to keep ais messages in sec, using tcp listener (default: 15)]
        [-n log NMEA sentences to console (stderr) (default off)]
        [-L log sound levels to console (stderr) (default off)]
        [-S seconds_for_decoder_stats (default 0=off)]
        When the built-in AIS decoder is disabled the samples are sent to
        to [outputfile] (a '-' dumps samples to stdout)
            omitting the filename also uses stdout
        Output is stereo 2x16 bit signed ints
        Examples:
        Receive AIS traffic,sent UDP NMEA sentences to 127.0.0.1 port 10110
             and log the senteces to console:
        rtl_ais -n
        Tune two fm stations and play one on each channel:
        rtl_ais -l233.15M  -r233.20M -A  | play -r48k -traw -es -b16 -c2 -V1 -

---------
COMPILING
--------- 
Make sure you have the following dependencies:
  - librtlsdr
  - libusb
  - libpthread

Get the source code:
    git clone https://github.com/dgiardini/rtl-ais 
Change to the source dir  
    cd rtl-ais
then type 
    make

Test running
    ./rtl_ais

For compiling a MS Windows executable you will need a working MSYS/MinGW environment.
Edit the Makefile, and modify these lines:

#### point this to your correct path ###
RTLSDR_PATH="/c/tmp/rtl-sdr/"
RTLSDR_LIB=$(RTLSDR_PATH)/build/src/
########################################
-------  
INSTALL
-------
On Linux, copy the rtl_ais file to a binary path, i.e.  /usr/bin, or /usr/local/bin. 
On Windows, put the librtlsdr.dll and libusb-1.0.dll files in the same directory
with rtl_ais.exe. You'll need the zadig driver installed too.

------------
KNOWN ISSUES
------------
The [-p ppm error] parameter is essential for rtl_ais to work.
The ppm error is the frequency deviation in parts per million from the desired tuning 
frequency, and the real tuned frequency due to the crystal oscillator deviation. This 
figure is different for each device, it's very important to know  this value and pass this parameter to rtl_ais.

Some instructions for get the ppm error are here:

http://www.rtl-sdr.com/how-to-calibrate-rtl-sdr-using-kalibrate-rtl-on-linux

and here (using SDR#):

http://www.atouk.com/SDRSharpQuickStart.html#adjusting

and here (using HDSDR ad AIS traffic)

http://www.cruisersforum.com/forums/f134/new-rtlsdr-plugin-102929-11.html#post1844966