Retrieving live signal

So much for listening to the stream. Now you want to do other things, like building a spectrogram, detecting weak signals, and decoding coherent BPSK messages. For that you'll want to retrieve signal from the Pi and run it through Spectrum Lab on your Windows PC, or vlfrx-tools commands on your Linux workstation.

For this, we will set up a different kind of audio server, one that is much more general purpose. It can supply compressed or un-compressed signal with all five channels and with timestamps, to a client PC on your network. It is quite easy to set up.

The first step is to install a general purpose internet server daemon, xinetd, with:

apt-get install -y xinetd

When that's done you should have an xinetd process running, check with

ps ax | grep xinetd

That ps and grep combination is another command you should be getting familiar with by now!

Use your editor to create a file /etc/xinetd.d/vlf containing the following:

service vlf-a
{
         type = UNLISTED
           id = vlf-a
         port = 42001
  socket_type = stream
     protocol = tcp
         user = root
         wait = no
      disable = no
       server = /usr/local/bin/vtvorbis
  server_args = -ei -q0.4 @filtered
}

This tells xinetd that if it receives an incoming client connection on TCP port 42001, it should run the vtvorbis command with options -ei -q0.4 @filtered and send the output of that command to the client. It's so simple and general purpose! You can use what you like for the service name and id and you can have as many services as you want (each in its own configuration file under /etc/xinetd.d). Invent a different port number for each service. Try not to use a port number that is used by regular services or bad things will happen. Stick to ports above 10000 or so and you shouldn't have any problem.

Save the new configuration file and tell xinetd that it needs to reload its configuration with the command

killall -HUP xinetd

That's it, job done.

If you're running a Linux workstation, on there do

 vtvorbis -dvn 192.168.2.37,42001 @vlf-a

This command connects to the Pi and receive the output of the vtvorbis command invoked by that service on port 42001. The signal goes into a buffer @vlf-a on your workstation:

 vtstat @vlf-a

and from there you can do whatever you want to with it.

On Windowss, you will configure Spectrum Lab to retrieve signal from the URL

 rawtcp://192.168.2.37:42001

The example vlf-a service supplies a vorbis compressed stream with timestamps to the network clients. You will usually want an un-compressed stream, certainly if you're looking for weak signals buried under the noise. For this, create a service that uses vtcat to send the buffer @filtered. For example, create an xinetd configuration file /etc/xinetd.d/vlf-b with contents

service vlf-b
{
         type = UNLISTED
           id = vlf-b
         port = 42002
  socket_type = stream
     protocol = tcp
         user = root
         wait = no
      disable = no
       server = /usr/local/bin/vtcat
  server_args = @filtered -- -,f4
}

Save and signal xinetd to reload its configuration with

killall -HUP xinetd

Now, when a client connects to port 42002 on the Pi, the command that is run is

vtcat @filtered -- -,f4

which reads the signal in the buffer @filtered, and sends it to standard output using format f4 which stands for IEEE 32 bit floating point samples. xinetd forwards that output to the client. The syntax -- -,f4 may look a bit cryptic at first but it's quite simple. -.f4 means standard output in f4 format. The -- tells vtfilter that there are no more command line options to follow. Without that, when it sees the - in -,f4 it would try to parse ,f4 as a command line option.

From a Linux workstation you would retrieve this signal with the command

nc 192.168.2.37 42002 | vtcat -- - @vlf-b

The program nc makes the connection to port 42002 on your Pi. It receives the uncompressed stream and pipes it to vtcat which puts the signal into a buffer @vlf-b. The -- is used again here, and the lone - indicates standard input.

With the current version of Spectrum Lab, there isn't a way to retrieve un-compressed signal. This may change in the near future.


Back to Listen Up to Index   Next to Monitor