Home > HAM Radio, Projects, RTL-SDR, Tools > Using softshell with GNURadio

Using softshell with GNURadio

It has been a little while since I released the very early code for softshell (not that the code has advanced much), and I’ve received a few requests for a bit more information about how it’s intended to be used.

I admit that I hacked it together very quickly so that I could make some basic use of the rtlsdr dongles on my mac.  To be very clear, Softshell does no actual SDR itself.  You can really look at it more like a driver for the rtlsdr.  Softshell opens a connection to the rtl device, allows you to tune its internal oscillator, and puts the data on the network.

To start, install the rtl device in your USB port, then open Softshell.

Freshly opened

If you see a similar window, it means that Softshell has found your device (the ezcap in this case).  It is, perhaps, a good time to mention that I’ve only ported the tuner code for the Elonics E4000 tuner.  Click the “Open” button to have the program open the connection to the device.  If it detects that you have the E4000 the “Tuner type” field will be filled in with “Elonics E4000.”

Once this is done, changes to the sample rate and center frequency will take effect with the “Update” button is clicked.  The Center frequency is provided in Hz.

Now, that’s all fine and good, but you’re just tuning the device.  To actually get the data out of it, you need to setup the network settings.  Choose a port number for Softshell to listen to, I use “12345,” and click the “Running” checkbox.

Finally, in GnuRadio, you need to use a “TCP Source” block setup as a client with the same port number you used before.

Setting up GnuRadio to work with Softshell (click for full size)

Once that’s done you should be up & running.  Note that, natively, the rtl device actually outputs unsigned bytes and that Softshell converts these to floats centered around zero.  Some GnuRadio examples include the blocks that perform this conversion.  If you come across this, just remove those blocks.

Good luck!  Please feel free to comment with any questions or issues!



  1. Rafael
    August 11th, 2012 at 16:34 | #1

    can you describe the output data structure? For example does it interleaves the I and Q data for each sample like this:

    sample1_I, sample1_Q, sample2_I, sample2_Q, ……, sample55_I, sample55Q

    Thanks

    Rafael

  2. August 11th, 2012 at 22:58 | #2

    Yes. Single precision floats, native endianess.

  1. No trackbacks yet.


seven − 3 =

56 visitors online now
48 guests, 8 bots, 0 members
Max visitors today: 71 at 08:59 am UTC
This month: 100 at 05-08-2013 07:53 pm UTC
This year: 199 at 01-04-2013 06:37 pm UTC
All time: 1081 at 06-12-2011 07:36 pm UTC