IntroductionGNU Radio is a free & open-source software development toolkit that provides signal processing blocks to implement software radios. It can be used with readily-available low-cost external RF hardware to create software-defined radios, or without hardware in a simulation-like environment. It is widely used in hobbyist, academic and commercial environments to support both wireless communications research and real-world radio systems.
GNU Radio applications are primarily written using the Python programming language, while the supplied performance-critical signal processing path is implemented in C++ using processor floating-point extensions, where available. Thus, the developer is able to implement real-time, high-throughput radio systems in a simple-to-use, rapid-application-development environment.
While not primarily a simulation tool, GNU Radio does support development of signal processing algorithms using pre-recorded or generated data, avoiding the need for actual RF hardware.
GNU Radio is licensed under the GNU General Public License (GPL) version 3. All of the code is copyright of the Free Software Foundation.
I. Getting startedIf you've never touched GNU Radio before, these pages will get you started with a running installation of GNU Radio and will show you how to take your first steps with this software radio tool.
- What is GNU Radio and why do I want it? - Read this if you really have no idea what this project is about.
- Installing GNU Radio - This will explain all the steps to get a working installation of GNU Radio.
- Frequently Asked Questions - Read this. Seriously, really read this before asking questions.
II. Community & CommunicatingThere's a nice community of people involved in GNU Radio. Here's some pointers on how to connect with us.
- Asking Questions and Reporting Errors - We're helpful people, but we expect you to try to help yourself first.
- Mailing lists - Where most of the communication happens, but please read the previous article first.
- IRC - For a more real-time interaction, come join our chat room
- DevelopersCalls - The developers have monthly VoIP conferences which are open to join.
- GNU Radio Conference 2011, a real-life developers and enthusiast meeting
III. Using GNU RadioOnce GNU Radio is installed and running, check these pages to find out how to actually use GNU Radio. These articles refer to anything that does not involve writing C++ or signal processing code.
- How do I use GNU Radio? - A short introduction to the possibilities you have as a GNU Radio user.
- The GNU Radio Companion, a GUI IDE for developing GNU Radio applications.
- Utilities and tools that come with GNU Radio
- How to write Python applications - This includes a guide on how to read and use the Doxygen-generated API docs.
- Doxygen Generated API - This includes a complete list of available blocks.
- A quick guide on doing simulations with GNU Radio
IV. Developing GNU RadioUsing GNU Radio is nice, but the real fun comes with developing new components for GNU Radio or actually changing the core itself. If you want to write some code, read these articles first.
- Development Style and Structure for Contributors
- Coding guide for writing new blocks
- How to Write a GNU Radio Signal Processing Block
- How to use Octave or Matlab with GNU Radio
- API and Code Version Changes
- How to use git to track your own GNU Radio code
V. HardwareHardware is strictly not part of GNU Radio, which is purely a software library. However, developing radio and signal processing code is even more fun when using hardware to actually transmit and receive, and GNU Radio supports several radio front-ends.
The most commonly used equipment are the USRP devices by Ettus Research, LLC..
- Hardware - A quick guide for getting all kinds of hardware running with GNU Radio.
- UHD - Hardware driver for all Ettus Research products
- The USRP1
- The USRP2
- List of USRP daughterboards
VI. Further information and 3rd party extensionsThere's more stuff to be found for GNU Radio on the web. Check these pages to find tutorials, code and other information on GNU Radio.
- The Comprehensive GNU Radio Archive Network - 3rd party GNU Radio applications and extensions.
- Suggested Reading - A list of non-GNU Radio-related literature, including good introductions to signal processing, radio engineering and software development.
- GNU Radio code on other servers
- Documentation for GNU Radio on other servers
- Real world users
- Academic papers involving GNU Radio
- Commercial support and training
- OpenBTS - An Open Source GSM interface. This is a separate project, with its own mailing list.
- Pre-recorded sample data - If you don't have a USRP, find real recorded signals for offline analysis here.