image
image
image

GNU Radio Companion

image

imageimage

GNU Radio is basically a free software development toolkit that essentially offers blocks to implement software radios. You can use it with readily available cheap external RF hardware to build software defined radios or in an environment resembling a simulation without any hardware. This software is mainly used by commercial and academic environments, and hobbyists as well to support real-world radio systems and wireless communications research.

The applications of GNU radio are mainly written with Python programming language, and the supplied performance-critical path of signal processing is usually implemented in C++ with, where available, processor floating point extensions. This means that the developer is capable of implementing radio systems, which are real time and high throughput in a rapid-application development environment that is simple to use.

Even though GNU is not primarily a simulation tool, it supports development of signal processing algorithms with pre-recorded or generated data- which avoids the necessity of having actual RF hardware. The package also contains a graphical tool known as gnuradio-companion, which creates signal flow graphs and generates flow-graph source code as well. We also have many different tools and a utility program included.

Why do you need GNU?

GNU Radio does all the signal processing; you can write applications with it to get data out or even push data into the digital streams, which is then transmitted via hardware. A GNU radio contains channel codes, filters, synchronization elements, vocoders, demodulators, equalizers and other elements (we usually refer to these as blocks in the GNU jargon) that are usually located in radio systems. More importantly, it also has a way of connecting blocks and can manage the way data usually passes from one block to another. It is actually very easy to extend a GNU Radio: if you get a particular missing block, you can create it and add it quickly.

Moving on;

GRC (GNU Radio companion) is a graphical user interface that is used in the development of GNU Radio applications. As you can see in the images above, you can use some inexpensive SDR USB dongles (>$20) such as the NooElec R820T SDR & DVB-T NESDR Mini (more on this later).

You can use the process below to install it using the command line interface:

Update the raspberry Pi repository index using:

image

Now make a search in the Raspberry Pi repository index for Gpredict programs with:

image

image

Install gnuradio with:

image

Next, install gr-osmosdr with:

image

Install gr-air-modes with:

image

Now start GRC- In your desktop’s GUI, select programing, GRC (after opening the top left application). Make a imagewith a SDR.

Plug in the device below to the Pi: (you can find more details about it from NooElec).

NooElec NESDR Nano 2+: Tiny RTL-SDR USB Set w/ 0.5PPM TCXO, R820T2 Tuner, Antenna and Remote Control

I personally used a USB hub for the device because it is too large and would thus block the rest of the USB ports.

Now drag the image (in sources) to the left work window. Drag the WX GUI Waterfall sink (in instruments, WX) to the left work window.

Now wire the source output of osmacom to WX GUI Waterfall Sink.

In the variable and ID same_rate, alter the value to 2 MS/s

In the source output of osmacom to the WX GUI Waterfall sink, alter the frequency to the values: 146E6.

In the top icon menu, choose ‘generate the flow graph.’

Save the file in the file menu.

Finally, choose execute the flow graph in the top icon menu.

The set up

title

It always seems quite amazing to me what a humble USB TV dongle can do- considering you can pick up one for about £10 together with the open source SDR software. As you can see in the picture above, it is very simple to plug one of them in one of the USB ports, with the supplied antenna fixed. Please visit this page for more information about RTL-SDR.

Now that we are re-purposing a TV tuner which the Linux kernel supports, and which it would otherwise claim and for television reception, we have to first of all make the kernel to stop doing so. We will edit the ‘image’ file and proceed to add the following line below:

image

Install Software (RTL-SDR)and the GNU Radio support as follows:

image

You will also require setting up a new udev rule so that you are able to access the device as a non-root user- you however first have to ascertain the USB ID. Make sure the tuner is plugged in and then type the following:

$ lsusb

This should give you the following:

image

Now you need to create the imagefile with the following line:

image

At this point, you can restart Udev; nonetheless, since you also had a kernel module blacklisted, you probably should consider rebooting as the easiest way.

The test

title

You can run the FTT application to get a modest spectrum display, which is offered as part of the gr-osmocom software.

image

If you then look at the CPU load, you can see that you’ve got a lot of capacity to spare, with just a single core at about 70% utilization.

title

The gr-air-modes

Over the recent past, so much has been written about how to use the RTL-SDR hardware along with the imagesoftware, to get position and the heading information from the image. While many writers state that they tried using a Raspberry Pi Model B (and a laptop)- this hasn’t proven to have enough processing power and the result is usually buffer underruns.

A couple more dependencies are needed, in order to build gr-air-modes.

image

Having installed these ones, the sources can be cloned from GitHub as follows:

$ git clone Github

To then create and install:

image

You can now use the following to run the application:

image

And with only a small antenna and a significant number of miles from the closest airport, you will still manage to receive no shortage of output.

title

Once again, not to mention, with a lot of headroom to spare:

title