jvde-github / AIS-catcher

AIS receiver for RTL SDR dongles, Airspy R2, Airspy Mini, Airspy HF+, HackRF, SDRplay and SoapySDR
https://aiscatcher.org
GNU General Public License v3.0
505 stars 77 forks source link

Start AIS-catcher on PlutoSDR #323

Open dendyKP opened 1 week ago

dendyKP commented 1 week ago

Hello! Please tell me how to run AIS-Catcher on Windows using the PlutoSDR board? It can be seen that PlutoSDR is not directly supported. But it is possible to run using SoapySDR. How do I do this on Windows? Sincerely, dendyKP.

jvde-github commented 1 week ago

hello! many thanks for reaching out.

The executable I build does not contain SoapySDR support (neither on Windows nor on Linux). I have not tried to build it with Soapy on Windows. I might give it a try some day.

Perhaps you can pipe the radio SDR data into AIS-catcher with something like:

SoapySDRUtil.exe --rate=1536000 --freq=162e6 --gain=32 --channels=0 --format=float32 - | AIS-catcher.exe -r cf32 . -s 1536000 -v

dendyKP commented 1 week ago

Thank you very much for your answer! Tried the command you suggested. It didn't work for me. SoapySDRUtil does not have frequency, gain or format options. Here is the entry from cmd: SoapySDRUtil.exe --rate=1536000 --freq=162e6 --gain=32 --channels=0 --format=float32 --direction=rx - | "AIS-catcher.x64/AIS-catcher.exe" -r cf32 . -s 1536000 -v SoapySDRUtil.exe: unknown option -- freq=162e6 SoapySDRUtil.exe: unknown option -- gain=32 SoapySDRUtil.exe: unknown option -- format=float32 AIS-catcher (build Aug 10 2024) v0.59-371-g3c362556 (C) Copyright 2021-2024 jvde-github and other contributors This is free software; see the source for copying conditions.There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ←[1m←[33m[WARNING] SoapyVOLKConverters: no VOLK config file found. Run volk_profile for best performance.←[0m [INFO] [UHD] Win32; Microsoft Visual C++ version 14.2; Boost_107500; UHD_4.0.0.HEAD-0-g90ce6062 Device : File (RAW) Settings : rate 1536K format CF32 file . loop OFF Model #0 -> (Src: 1, Grp: 1): [AIS engine v0.60] ps_ema ON afc_wide ON droop ON fp_ds OFF dsk OFF [INFO] Using format CS16. [INFO] Auto setting Buffer Size: 32768 [INFO] Set MTU Size: 32768 [INFO] Has direct RX copy: 1 Sincerely, dendyKP.

jvde-github commented 1 week ago

I looked closer at the windows distribution and noticed there is a rx_sdr utility as well that I could make work with the RTL-SDR:

./rx_sdr -f 162000000 -s 1536000 -d driver=rtlsdr -F cf32 -g 32 - | AIS-catcher -r cf32 . -v -s 1536000
AIS-catcher (build Nov  3 2024) v0.60-230-g7bdc62d1
(C) Copyright 2021-2024 jvde-github and other contributors
This is free software; see the source for copying conditions.There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Device    : File (RAW)
Settings  : rate 1536K format CF32 file . loop OFF
Model #0 -> (Src: 1, Grp: 1): [AIS engine v0.60] ps_ema ON afc_wide ON droop ON fp_ds OFF dsk OFF 
Found Rafael Micro R820T tuner
[INFO] Opening Generic RTL2832U OEM :: 7...
Found Rafael Micro R820T tuner
Using device R820T: index=0 origin=https://github.com/pothosware/SoapyRTLSDR 
Found 1 channel(s) :
Channel 0 :
  Found 1 antenna(s): RX 
  Found 1 gain(s): TUNER 
  Found 2 frequencies: RF CORR 
  Found 10 sample rates: 250000 1024000 1536000 1792000 1920000 2048000 2160000 2560000 2880000 3200000 
  Found 0 bandwidths: 
Using output format: CF32 (input format CS16, 4 bytes per element)
[R82XX] PLL not locked!
Sampling at 1536000 S/s.
Tuned to 162000000 Hz.
Tuner gain set to 32.00 dB.
[INFO] Using format CS16.
Reading samples in sync mode...
Allocating 15 zero-copy buffers
!AIVDM,1,1,,B,13=e:D001ePBfWpMgGj4OSVv0<<N,0*77 ( MSG: 1, REPEAT: 0, MMSI: 215698000, signalpower: -42.2563, ppm: 0, timestamp: 20241107174432)
!AIVDM,1,1,,A,13thA@00000BqCvMfAio5c=208C3,0*42 ( MSG: 1, REPEAT: 0, MMSI: 265032000, signalpower: -36.5105, ppm: 1.15741, timestamp: 20241107174432)
!AIVDM,2,1,0,B,53e;PB82?kvGTP7;COPu04hTpD00000000000017B@i==6l90AkS4U3O,0*44 ( MSG: 5, REPEAT: 0, MMSI: 248701000, signalpower: -44.1915, ppm: 4.34028, timestamp: 20241107174432)
!AIVDM,2,2,0,B,OAhRij000000000,2*10 ( MSG: 5, REPEAT: 0, MMSI: 248701000, signalpower: -44.1915, ppm: 4.34028, timestamp: 20241107174432)
!AIVDM,1,1,,B,13ku8j00020C=WlMeGN9T;?208CA,0*6C ( MSG: 1, REPEAT: 0, MMSI: 255805640, signalpower: -48.6742, ppm: 1.44676, timestamp: 20241107174432)
!AIVDM,1,1,,A,13e;PB0000PCInlMdOcc;8u00@CH,0*6B ( MSG: 1, REPEAT: 0, MMSI: 248701000, signalpower: -47.3693, ppm: 3.76157, timestamp: 20241107174433)
!AIVDM,1,1,,A,13`e>q0000PBtG4MfrqrIqbr06:h,0*5D ( MSG: 1, REPEAT: 0, MMSI: 244010724, signalpower: -41.915, ppm: 2.02546, timestamp: 20241107174433)

You need to properly set the gain, sample rate (twice, once for AIS-catcher and once for rx_sdr) and the driver. But this might be worth a try....

dendyKP commented 1 week ago

I tried what you suggested, but it didn't work for me... `rx_sdr -f 162000000 -s 1536000 -F cf32 -g 70 - | "AIS-catcher.x64/AIS-catcher" -r cf32 . -v -s 1536000 dup2 start: No error ←[1m←[33m[WARNING] SoapyVOLKConverters: no VOLK config file found. Run volk_profile for best performance.←[0m [INFO] [UHD] Win32; Microsoft Visual C++ version 14.2; Boost_107500; UHD_4.0.0.HEAD-0-g90ce6062 AIS-catcher (build Aug 10 2024) v0.59-371-g3c362556 (C) Copyright 2021-2024 jvde-github and other contributors This is free software; see the source for copying conditions.There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Device : File (RAW) Settings : rate 1536K format CF32 file . loop OFF Model #0 -> (Src: 1, Grp: 1): [AIS engine v0.60] ps_ema ON afc_wide ON droop ON fp_ds OFF dsk OFF Using device ADALM-PLUTO: ad9361-phy,model=ad9364 ad9361-phy,xo_correction=40000000 backend_version=0.18 (git tag: v0.18 ) fw_version=v0.31 hw_model=Analog Devices PlutoSDR Rev.B (Z7010-AD9364) hw_model_variant=1 hw_serial=10400090fd95000512003100a3bf197e44 library_version=0.19 (git tag: 5f5af2e) local,kernel=4.14.0-42540-g387d584 usb,idProduct=b673 usb,idVendor=0456 usb,libusb=1.0.24.11584 usb,product=PlutoSDR (ADALM-PLUTO) usb,release=2.0 usb,serial=10400090fd95000512003100a3bf197e44 usb,vendor=Analog Devices Inc. Found 1 channel(s) : Channel 0 : Found 1 antenna(s): A_BALANCED Found 1 gain(s): PGA Found 1 frequencies: RF Found 11 sample rates: 65105 1000000 2000000 3000000 4000000 5000000 6000000 7000000 8000000 9000000 10000000 Found 11 bandwidths: 200000 1000000 2000000 3000000 4000000 5000000 6000000 7000000 8000000 9000000 10000000 Using output format: CF32 (input format CS16, 4 bytes per element) Sampling at 1536000 S/s. Tuned to 162000000 Hz. Tuner gain set to 70.00 dB. [INFO] Using format CS16. [INFO] Auto setting Buffer Size: 32768 [INFO] Set MTU Size: 32768 Reading samples in sync mode... [INFO] Has direct RX copy: 1 dup2 stop: No such file or directory Short write, samples lost, exiting!

Library error 0, exiting...` Sincerely, dendyKP.

jvde-github commented 1 week ago

So, if you would write the radio data to a file, would that work? E.g.:

rx_sdr -f 162000000 -s 1536000 -F cf32 -g 70 data.raw

and then separately read it in for AIS decoding

 "AIS-catcher.x64/AIS-catcher" -r cf32 data.raw -v -s 1536000

ps I tried to build a version for Windows with SoapySDR, but difficult to get it stable and work on all Windows machines (note that for Linux, if you install the software is build on the device, for Windows we have pre-compiled everything which increases compatibility potential issues)