Post-processing

The Pi doesn't have enough CPU or RAM capacity to do any significant post-processing of recorded signals. Therefore, all the commands in this section will need to run on your workstation.

Most processing will begin with a signal extraction from the Pi's continuous recording. You need to run the vtread command via ssh and give it a time range to extract. For example

ssh -n root@rp5 vtread -T 2018-02-16_12:00,+6h /d/vlf > sample.vt

This retrieves 6 hours of signal and stores it in sample.vt on your workstation. If the command asks you for a password then you haven't correctly set up the public key of your workstation in /root/.ssh/authorized_keys on the Pi.

Carrier detection

Weak signal carrier detection involves retrieving a long sample of recording, usually a few hours long, filtering and removing sferics, and then running a narrow band Fourier transform to produce a spectrum.

Start by retrieving the sample using an ssh vtread command, into a local file sample.vt on your workstation. The time range should be chosen to span a good period of continuous carrier.

Next work out the resolution, which is the inverse of the time span. For example a 1 hour sample will have resolution 1/3600 = 277.8 uHz.

Now choose the Fourier transform width. You don't want too many bins for a narrow band transform, something between 100 and 300 bins is reasonable. If you aim for 200 bins, then the overall width will be resolution * 200, so for example the 1 hour sample would have width 277.8e-6 * 200 = 0.05556 Hertz, suggesting a convenient transform width would be 0.05 Hertz.

Now you can filter and blank the sample and run it through the Fourier transform. For a one hour duration and a signal at 8270 Hz, you might use

vtfilter -h bp,f=8270,w=3000 sample.vt | vtblank -a12 -d0 -t100 -v | vtnspec -r277.8e-6 -w0.05 -f8270 > spectrum.dat

The 3kHz wide filter is about optimum for the operation of the sferic blanker. The -a12 blanking threshold is typical for nighttime conditions. Use about -a24 for daytime. vtblank will report a 'dropfactor' which indicates what fraction of the time the blanker was active. Aim for a dropfactor of say 0.2 to 0.3, ie 20% to 30% of the signal is blanked.

Use your favourite plotting program to plot the spectrum. Frequency is in column 1 and amplitude is in column 4 of the spectrum.dat file. gnuplot is a convenient plotting tool because it is easily scriptable and is something of an industry standard.

EbNaut decoding

Now that you have continuous timestamped recording running, it is simple to extract and decode EbNaut coherent BPSK messages. The Pi doesn't have enough compute capacity or enouggh RAM to do the decoding, so the following commands will be run on your workstation.

Use the signal calculator page to determine the transmission duration - and add a couple of symbol periods. Then retrieve the signal and mix down to baseband I/Q, with a command like

ssh root@rp5 vtread -T2018-02-25_22:30,+35000 /d/vlf > sample.vt

Apply sferic blanking and mix down to baseband I/Q with something like

vtfilter -h bp,f=8270,w=3000 sample.vt | vtblank -a12 -d0 -t100 | vtmix -f 8270 | vtresample -r240 > signal.vt

The vtmix -f option should specify the exact transmit frequency of the signal.

Now you just have to convert signal.vt to ASCII data and pipe into the ebnaut decoder:

vtraw -oa signal.vt | ebnaut -d ...

Back to SID Up to Index