Main Page: Difference between revisions

From GNU Radio
Jump to navigation Jump to search
(Major redo of the documentation section, aiming for a better reflection of what we actually have to offer in terms of documentation and how it's organized)
Line 24: Line 24:
= Documentation =
= Documentation =


GNU Radio has two manuals: one for the C++ API and another for the Python API. The majority of the documentation comes from using [http://www.stack.nl/~dimitri/doxygen/ Doxygen] markup comments in the public header files. These are the basis for both manuals. The Python documentation uses [http://sphinx.pocoo.org/ Sphinx] to pull in both the Doxygen documentation as well as any formatted comments present in any Python files.
The primary documentation is our [http://gnuradio.org/doc/doxygen/index.html C++ Manual], which includes a complete list of available blocks. It is based on Doxygen, using markup comments in the public header files.


* [http://gnuradio.org/doc/doxygen/index.html C++ Manual] - This includes a complete list of available blocks.
There also exists a less detailed [https://www.gnuradio.org/doc/sphinx/ Python Manual], which  is primarily used for finding the Python versions of C++ functions/classes/blocks. It is based on Sphinx to pull in both the Doxygen documentation as well as any formatted comments present in any Python files.  
** [http://gnuradio.org/doc/doxygen/index.html Current Release]
** [http://jenkins.gnuradio.org/manual/doxygen/index.html Latest Development Build]


 
Lastly, our Usage Manual contains information about various aspects of GNU Radio, with a separate wiki page on each topic:
Manual Pages of Interest:
* [[Handling Flowgraphs]]
 
* [[Polymorphic Types (PMTs)]], which are heavily used in the stream tags and message passing interfaces
* [http://gnuradio.org/doc/doxygen/build_guide.html Build Guide]
* [[Metadata Information]], which can be added to a raw IQ file
* [http://gnuradio.org/doc/doxygen/page_metadata.html Using Metadata]
* [[Message Passing]], the method of passing control data, metadata, or packet structures between blocks
* [http://gnuradio.org/doc/doxygen/page_msg_passing.html Message Passing]
* [[Stream Tags]], an isosynchronous data stream that runs parallel to the main data stream
* [http://gnuradio.org/doc/doxygen/page_pmt.html Polymorphic Types (PMTs)]
* [[Tagged Stream Blocks]], blocks that works on streamed, but packetized input data
* [http://gnuradio.org/doc/doxygen/page_qtgui.html Using QTGUI Plotters]
* [[Logging]]
* [http://gnuradio.org/doc/doxygen/volk_guide.html Using VOLK]
* [[Performance Counters]]
* [http://gnuradio.org/doc/doxygen/page_uhd.html UHD Interface]
* [[Block Thread Affinity and Priority]]
* [http://gnuradio.org/doc/doxygen/page_affinity.html Block Thread Affinity API]
* [[Configuration Files]], how GNU Radio defines and keeps persistent basic behavior
* [http://gnuradio.org/doc/doxygen/page_ctrlport.html ControlPort]
* [[VOLK Guide]], details about how GNU Radio performs efficient vector-optimized operations using SIMD
* [http://gnuradio.org/doc/doxygen/page_logger.html Logging]<br />
* [[GNURadioCompanion|The GNU Radio Companion (GRC)]], a GUI IDE for developing GNU Radio applications.
 
 
Documentation on this wiki:
 
* [[GNURadioCompanion|The GNU Radio Companion]], a GUI IDE for developing GNU Radio applications.


= Community &amp; Communicating =
= Community &amp; Communicating =

Revision as of 19:04, 11 June 2018

GNU 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 is licensed under the GNU General Public License (GPL) version 3 or later. All of the code is copyright of the Free Software Foundation.

Getting started

If 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.

The recommended way to get started with GNU Radio is to read the Guided Tutorials.

Documentation

The primary documentation is our C++ Manual, which includes a complete list of available blocks. It is based on Doxygen, using markup comments in the public header files.

There also exists a less detailed Python Manual, which is primarily used for finding the Python versions of C++ functions/classes/blocks. It is based on Sphinx to pull in both the Doxygen documentation as well as any formatted comments present in any Python files.

Lastly, our Usage Manual contains information about various aspects of GNU Radio, with a separate wiki page on each topic:

Community & Communicating

There's a nice community of people involved in GNU Radio. Here's some pointers on how to connect with us.

List of Hack Fests

GNU Radio Events Calendar

Developing GNU Radio

Using 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. Some of the tutorials are also relevant.

Hardware

Hardware 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, either natively or through additional out-of-tree modules.

For a list of supported devices, see our Hardware page.

Further information and 3rd party extensions

There'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.

Related projects

  • OpenBTS - An Open Source GSM interface. This is a separate project, with its own mailing list.
  • GQRX - Very nice spectrum analysis tool, powered by GNU Radio