Talk:FAQ
NOTE: This page is not a support forum.
DRAFT REVISIONS TO FAQ
Frequently Asked Questions
Getting Started
What is GNU Radio?
Check out our page What is GNU Radio? for an introduction to what GNU Radio is and why you would want to use it.
How do I get / install GNU Radio?
We strongly encourage you to use your distro package manager. Debian/Ubuntu and Fedora/RedHat as well as many of the other popular Linux distros keep these packages well up to date. For Mac OS X, using Macports is strongly encouraged. See InstallingGR for details.
Which operating systems are supported? Does GNU Radio run on Windows or Mac OS X? What about 32, 64 Bits?
We mostly develop under Linux, and we've gotten GNU Radio to run under most current Linux distros. The best support will be for the latest supported versions of Ubuntu (their Long Term Support versions) and Fedora. Other common distros like Debian are well-maintained and will generally work fine. For Redhat and CentOS, you may find yourself needing to install some dependencies by hand. We highly recommend the use of PyBOMBS with these distros.
GNU Radio is also maintained on OS X. We have installation instructions and can help doing source builds on OS X. However, we highly recommend that you use the Macports installation of GNU Radio to make sure all of the dependencies are taken care of properly.
GNU Radio will build and run under Windows. However, we don't have direct, maintained support for Windows and few of us can help you with Windows issues. We hope to have better support in the future, but in the meantime, there are plenty of people with various levels of success working under Windows that you can contact through the discuss-gnuradio Mailing List.
GNU Radio supports both 32- and 64-bit operating systems.
For processor support, we generally develop and build on Intel x86 architectures. These processors have the best support for features and speed. However, we are actively developing our support and capabilities on ARM processors, currently only those running the ARMv7 instruction set. Older ARM processors with ARMv6 support have been known to work, but we have no direct support for them. They tend to be severely underpowered for math and signal processing for any serious GNU Radio app. We will be developing support for ARMv8. We also have a limited list of embedded devices and development kits that we are able to support.
What are the system requirements (minimum power, etc.)?
GNU Radio in its core is C++ with lots of user functionality relying on Python. So basically, as long as there is a feasible compiler for your platform, it can work.
Hardware requirements basically depend on what you want to do. A modern PC/laptop computer is usually up to most tasks such as receiving broadcast signals, doing audio frequency processing, and many narrowband digital signals.
When dealing with telecommunication signals, however, sample rates of over 5 Msamples/s are not uncommon. The average embedded ARM platform is generally not up to that task. Even rather modern hardware often meets its limits when it comes to doing things in realtime; it all depends on your processing requirements, GNU Radio is only the platform to perform these computationally intensive tasks.
I installed GNU Radio, but some components seem to be missing.
Missing components are usually seen because blocks are missing from GRC. This usually only happens when you did a source build. After running cmake, you might see something like this at the end of CMake's output (this list is heavily cropped for simplicity, it is much longer in reality):
-- ###################################################### -- # Gnuradio enabled components -- ###################################################### -- * python-support -- * testing-support -- * volk -- * doxygen -- * gnuradio-runtime -- * gr-blocks -- * gnuradio-companion -- * gr-fec -- * gr-fft -- * gr-filter -- * [...] -- -- ###################################################### -- # Gnuradio disabled components -- ###################################################### -- * gr-ctrlport -- * gr-dtv -- * gr-atsc -- * gr-wxgui
If the components you are missing are listed under the 'disabled' components, there's your problem.
There are two reasons why components are disabled:
- You disabled them yourself, e.g. by supplying a `-DENABLE_GR_DTV=OFF` switch to CMake.
- The component was automatically enabled because CMake could not find certain dependencies.
In both cases, you can read the CMake output to see what the reason is. If dependencies are missing, you might have to install developer packages for something (on Debian and Ubuntu systems, these are packages ending with -dev, on Fedora, they end with -devel). Consult the build manual for which dependencies are required.
If you don't understand or know how to do this, consider installing precompiled binaries. Usually, they will pull in all the required dependencies.
Which Radio Hardware is supported?
There is a growing list of radio front ends for software radio uses. It is difficult to keep up with, and support for a particular radio front end in GNU Radio is generally left to the hardware manufacturer. The Ettus Research USRP product line, supported by UHD, is the exception since the USRP and GNU Radio have had a long history of developing and working together. See also Hardware.
Can you suggest any reading material for DSP/SDR/Digital Comms?
We have a wiki page for this: SuggestedReading
Using GNU Radio
How do I start? What's the first thing to do after installation?
Start with our Tutorials to learn your way around GNU Radio. They are divided into levels of user experience.
Where can I find a list of GNU Radio blocks?
All GNU Radio blocks are listed in Block Docs. When using GNU Radio Companion, blocks are also listed in the Block Tree sidebar. You can use the search feature of GNU Radio Companion (a magnifying glass) to find blocks by name.
What does sample rate mean in GNU Radio?
First off: You need to understand the general principle of "Sampling Rate" and the sampling theorem before you do anything with GNU Radio. See SuggestedReading.
For a tutorial on sample rate, see Sample_Rate_Tutorial.
My flowgraph is too slow. What can I do to make it faster? My hardware signals underflows, overflows or dropped samples.
The most common answer to that question is: It's as fast as it can run. If your signal processing application really needs that much computing, you need more computational power.
There are, however, some cases where your problems can be helped:
- If your signal processing relies on a bandwidth that is substantially smaller than your nyquist bandwidth (in case of complex sampling: sampling rate, in case of real sampling: 0.5 * sampling rate) use a lower sampling rate as early as possible. Often, you could also tell your hardware to produce a lower sample rate.
- If your signal processing could as well be done offline (instead of in realtime), write your signal to file (using file_sink) and load it from there in another flowgraph (using file_source)
When do I use a throttle block?
GNU Radio is written and designed for real-time streaming signal processing that interfaces with real hardware systems. A GNU Radio application attempts to source data from a hardware source and sink data to a hardware sink as quickly as possible. That means that we are rate limited by the hardware, which will either provide or allow us to push data between GNU Radio and the hardware system based on the rate of the hardware.
For other cases, see Sample_Rate_Tutorial#When_there_is_no_hardware_block.
What is the file format of a file_sink? How can I read files produced by a file sink?
All files are in pure binary format. Just bits. That's it. A floating point data stream is saved as 32 bits in the file, one after the other. A complex signal has 32 bits for the real part and 32 bits for the imaginary part. Reading back a complex number means reading in 32 bits, saving that to the real part of a complex data structure, and then reading in the next 32 bits as the imaginary part of the data structure. And just keep reading the data.
Take a look at the Octave and Python files in gr-utils for reading data using Octave and Python's Scipy module.
The exception to the format is when using the metadata file format. These files are produced by the File Meta Sink
: http://gnuradio.org/doc/doxygen/classgr_1_1blocks_1_1file_meta_sink.html block and read by the File Meta Source block. See the manual page on the metadata file format for more information about how to deal with these files.
A one-line Python command to read the entire file into a numpy array is:
f = scipy.fromfile(open("filename"), dtype=scipy.uint8)
Replace the dtype with scipy.int16
, scipy.int32
, scipy.float32
, scipy.complex64
or whatever type you were using.
GNU Radio Companion
For a tutorial on GRC, see Guided_Tutorial_GRC.
How do I change the canvas size?
It's in the 'Options' block of your flow graph. The dimensions are in pixels, e.g. canvas (1536,1024)
How do I make the text larger on a HiDPI display like a Retina MacBook?
Please see Tips for MacBooks and other HiDPI displays.