https://wiki.gnuradio.org/api.php?action=feedcontributions&user=777arc&feedformat=atomGNU Radio - User contributions [en]2024-03-28T09:37:35ZUser contributionsMediaWiki 1.39.5https://wiki.gnuradio.org/index.php?title=Main_Page&diff=13631Main Page2023-11-25T02:11:17Z<p>777arc: </p>
<hr />
<div>[[File:FunCube_2_meter_NB_FM_fg.png|upright=1.8|thumb|right|Example 2 meter NBFM receiver]]<br />
<br />
GNU Radio is a free &amp; 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.<br />
<br />
= Getting started =<br />
<br />
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.<br />
<br />
* [[WhatIsGR|What is GNU Radio and why do I want it?]] - Read this if you really have no idea what this project is about.<br />
* [[InstallingGR|Installing GNU Radio]] - This will explain all the steps to get a working installation of GNU Radio.<br />
* [[Tutorials|Tutorials]] - The '''GNU Radio Academy''' is a complete course from beginner to advanced user.<br />
* [[Chat|GNU Radio Community Chat]] - For real-time interaction, come join our chat rooms on [https://chat.gnuradio.org Matrix]<br />
* [http://cgran.org The Comprehensive GNU Radio Archive Network (CGRAN)] - A list of 3rd party GNU Radio apps, check out some examples of what folks use GNU Radio to do.<br />
* [[FAQ|Frequently Asked Questions]] - Check this page before asking questions on the mailing list.<br />
<br />
= Documentation =<br />
<br />
* User Documentation<br />
*# The [[Usage Manual]] contains information about various aspects of GNU Radio not specific to a certain block.<br />
*# [[:Category:Block_Docs|List of Blocks]] (or just wiki search the block name)<br />
* Developer Documentation<br />
*# Our [http://gnuradio.org/doc/doxygen/index.html C++ Manual and API Reference] includes documentation targeted for developers. It is based on Doxygen, using markup comments in the public header files. <br />
*# [[GNU Radio 3.10 OOT Module Porting Guide|3.9 to 3.10 OOT Module Porting Guide]]<br />
*# [[GNU Radio 3.9 OOT Module Porting Guide|3.8 to 3.9 OOT Module Porting Guide]]<br />
*# [[GNU Radio 3.8 OOT Module Porting Guide|3.7 to 3.8 OOT Module Porting Guide]]<br />
* [[Tutorials|Tutorials]] - Several tutorials for varying skill levels.<br />
<br />
= Community &amp; Communicating =<br />
<br />
There's a nice community of people involved in GNU Radio. Here's some pointers on how to connect with us.<br />
<br />
* Our [[Code_of_Conduct|Code of Conduct]] describes our expectations for community participation.<br />
* [[ReportingErrors|Asking Questions and Reporting Errors]] - We're helpful people, but '''we expect you to try to help yourself first.'''<br />
* [[MailingLists|Mailing lists]] - Where most of the communication happens, but please read the previous article first.<br />
* [[HowToGetInvolved|How to get involved]] - Do you want to help with the project, or simply become part of the GNU Radio Community? Read this!<br />
* [[Chat|Chat]] - For a more real-time interaction, come join our chat rooms on [https://chat.gnuradio.org Matrix]<br />
* [[MoreCommunity|More GNU Radio on the web and in social media]]<br />
* [https://www.gnuradio.org/org/organization/ GNU Radio organizing members]<br />
* [[WorkingGroups|Working Groups]] - Communities of interest for various aspects of the GNU Radio ecosystem.<br />
* [[DevelopersCalls]] - The developers have monthly VoIP conferences which are open to join.<br />
* [[GNURadioConference|The GNU Radio Conference (GRCon)]] - archive pages: [http://gnuradio.org/grcon-2018/ 2018] | [http://gnuradio.org/grcon-2017/ 2017] | [http://gnuradio.org/grcon-2016/ 2016] | [http://www.trondeau.com/gnu-radio-conference-2015/ 2015] | [http://www.trondeau.com/gnu-radio-conference-2014/ 2014] | [http://www.trondeau.com/gnu-radio-conference-2013/ 2013] | [http://www.trondeau.com/gnu-radio-conference-2012/ 2012] | [http://www.trondeau.com/gnu-radio-conference-2011/ 2011]<br />
* [[Archive of Hack Fests]] and miscellaneous [[Presentations]]<br />
* We have a [[Calendar]] containing project calls and other events<br />
<br />
= Developing GNU Radio =<br />
<br />
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|tutorials]] are also relevant.<br />
<br />
* [[Development|Development Information for Contributors]]<br />
* [[Coding_guide_impl|Coding and style guidelines for GNU Radio]]<br />
* [[BlocksCodingGuide|Block structure guide]]<br />
* [[ChangeSets|API and Code Version Changes]]<br />
* [http://www.trondeau.com/blog/2013/9/15/explaining-the-gnu-radio-scheduler.html An overview of the GNU Radio scheduler]<br />
* YouTube feed from Ettus Research [http://www.youtube.com/user/ettusresearch/feed featuring demos and howtos] for using GNU Radio and USRPs.<br />
* [[Embedded|Embedded Development with GNURadio]]<br />
* [[GSoC|Summer of Code Programs]] - Student Programs from Google (GSoC) and ESA (SOCIS), see [[GSoCIdeas|Summer of Code Project Ideas List]]<br />
<br />
= Hardware =<br />
<br />
GNU Radio 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.<br />
<br />
= Further information and 3rd party extensions =<br />
<br />
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.<br />
<br />
* [[SuggestedReading|Suggested Reading]] - A list of non-GNU Radio-related literature, including good introductions to signal processing, radio engineering and software development.<br />
* [[ExternalDocumentation|Documentation and Videos for GNU Radio on other servers]]<br />
* [[OurUsers|Real world users]] and [[Support|Commercial Support/Training]]<br />
* [[AcademicPapers|Selected Academic papers involving GNU Radio]]<br />
* [http://gqrx.dk/ GQRX] - Very nice spectrum analysis tool, powered by GNU Radio</div>777archttps://wiki.gnuradio.org/index.php?title=ZMQ_REQ_Source&diff=13206ZMQ REQ Source2023-06-23T06:20:18Z<p>777arc: /* Example Flowgraph */</p>
<hr />
<div>[[Category:Block Docs]]<br />
Receive messages on ZMQ REQ socket and source stream.<br />
<br />
This block will connect to a ZMQ REP socket, then produce all incoming messages as streaming output.<br />
<br />
== Parameters ==<br />
(''R''): <span class="plainlinks">[https://wiki.gnuradio.org/index.php/GNURadioCompanion#Variable_Controls ''Run-time adjustable'']</span><br />
<br />
; Address <br />
: ZMQ socket address specifier. The format of the address is <code>tcp://*:port</code> where * should be 127.0.0.1 for localhost.<br><br />
: <b>Note:</b> If the Source and Sink blocks are on two different computers on the same LAN, then the IP and port number of the Sink block must be specified on each end of that connection. For example, if the Sink is on IP 192.168.2.14:5678 and the Source is on IP 192.168.2.5, both Source and Sink blocks must specify the Sink IP and port (192.168.2.14:5678).<br />
<br />
; Timeout <br />
: Receive timeout in milliseconds, default is 100ms.<br />
; Pass Tags <br />
: Whether sink will serialize and pass tags over the link.<br />
; High Watermark <br />
: High Watermark to configure the socket to (-1 => zmq's default)<br />
<br />
== Example Flowgraph ==<br />
<br />
TODO<br />
<br />
== Source Files ==<br />
<br />
; C++ files<br />
: [https://github.com/gnuradio/gnuradio/blob/master/gr-zeromq/lib/req_msg_source_impl.cc req_msg_source_impl.cc]<br />
: [https://github.com/gnuradio/gnuradio/blob/master/gr-zeromq/lib/req_source_impl.cc req_source_impl.cc]<br />
<br />
; Header files<br />
: [https://github.com/gnuradio/gnuradio/blob/master/gr-zeromq/lib/req_msg_source_impl.h req_msg_source_impl.h]<br />
: [https://github.com/gnuradio/gnuradio/blob/master/gr-zeromq/lib/req_source_impl.h req_source_impl.h]<br />
<br />
; Block definition<br />
: [https://github.com/gnuradio/gnuradio/blob/master/gr-zeromq/grc/zeromq_req_msg_source.block.yml zeromq_req_msg_source.block.yml]<br />
: [https://github.com/gnuradio/gnuradio/blob/master/gr-zeromq/grc/zeromq_req_source.block.yml zeromq_req_source.block.yml]</div>777archttps://wiki.gnuradio.org/index.php?title=User_talk:Duggabe&diff=12765User talk:Duggabe2022-12-17T18:41:38Z<p>777arc: /* Live streaming */</p>
<hr />
<div>== GRCon23 A/V requirements ==<br />
<br />
The emphasis of our GNU Radio conference is placed on the in-person presentations, sponsor exhibits, and personal contacts among the attendees. Live streaming is also provided to allow those who cannot attend in person and those in other time zones to participate virtually, but is lower priority.<br />
<br />
=== Arizona Ballroom ===<br />
<br />
All of the Main Track presentations will be in the Arizona Ballroom.<br />
<br />
==== Video sources ====<br />
<br />
* presentation of PDF or PowerPoint slides controlled by speaker at podium<br />
* presentation of JPG or PNG sponsor slides during breaks and lunch (continuous rotation)<br />
* presentation from presenter's laptop at podium needed for live demos (low percentage of total)<br />
* (1) fixed position camera pointed at stage and zoomed in just enough to cover where the speaker can move, so that a cameraman isn't needed<br />
<br />
==== Audio sources ====<br />
<br />
* mic at podium<br />
* (2) hand-held wireless mics<br />
* sound from presenter's laptop for live demos<br />
* background music for sponsor slides (live streaming only)<br />
<br />
==== In-room displays ====<br />
<br />
The in-room screens will show the presentation slides, and during breaks and lunch, the sponsor slides. The camera image is not displayed on the screens.<br />
<br />
It is desired to have automatic open captions on one of the two displays in traditional TV format (three lines, white text on black background).<br />
<br />
* (2) Projectors on cart/stands<br />
* (2) 9x16ft screens<br />
* confidence monitor for presenter<br />
<br />
==== Live streaming ====<br />
<br />
* The entire day's program will be live streamed with (YouTubes) automatic live captions to GNU Radio's YouTube channel. See [https://www.youtube.com/watch?v=e6eQ2LpjF_0 GRCon22 Keynote] for an example from GRCon22.<br />
* Local recording of the live stream content (used for post-production).<br />
<br />
==== Facilities ====<br />
<br />
* Power to every table - e.g. 8+ outlet powerstrip<br />
* Shared Internet for attendees over WiFi<br />
<br />
=== Exhibition hall ===<br />
<br />
Sponsors will be provided a 10ft wide, 8ft deep booth space. It is estimated that there will be 12 sponsor booths. Each should contain:<br />
* 6ft table<br />
* (2) chairs<br />
* power<br />
<br />
Some sponsors may request a desktop HDMI monitor fed by their computer.<br />
<br />
=== Workshop 1 ===<br />
<br />
Workshop 1 will be set up as a classroom.<br />
<br />
* (1) HDMI projector<br />
* (1) 100in screen<br />
* Podium for presenter<br />
* mic at podium<br />
* (1) hand-held wireless mic<br />
* room speakers<br />
* camera for recording session locally (no live streaming)<br />
<br />
=== Workshop 2 ===<br />
<br />
Workshop 2 will be set up as a classroom.<br />
<br />
* (1) HDMI projector<br />
* (1) 100in screen<br />
* Podium or table for presenter</div>777archttps://wiki.gnuradio.org/index.php?title=User_talk:Duggabe&diff=12764User talk:Duggabe2022-12-17T18:39:56Z<p>777arc: /* Video sources */</p>
<hr />
<div>== GRCon23 A/V requirements ==<br />
<br />
The emphasis of our GNU Radio conference is placed on the in-person presentations, sponsor exhibits, and personal contacts among the attendees. Live streaming is also provided to allow those who cannot attend in person and those in other time zones to participate virtually, but is lower priority.<br />
<br />
=== Arizona Ballroom ===<br />
<br />
All of the Main Track presentations will be in the Arizona Ballroom.<br />
<br />
==== Video sources ====<br />
<br />
* presentation of PDF or PowerPoint slides controlled by speaker at podium<br />
* presentation of JPG or PNG sponsor slides during breaks and lunch (continuous rotation)<br />
* presentation from presenter's laptop at podium needed for live demos (low percentage of total)<br />
* (1) fixed position camera pointed at stage and zoomed in just enough to cover where the speaker can move, so that a cameraman isn't needed<br />
<br />
==== Audio sources ====<br />
<br />
* mic at podium<br />
* (2) hand-held wireless mics<br />
* sound from presenter's laptop for live demos<br />
* background music for sponsor slides (live streaming only)<br />
<br />
==== In-room displays ====<br />
<br />
The in-room screens will show the presentation slides, and during breaks and lunch, the sponsor slides. The camera image is not displayed on the screens.<br />
<br />
It is desired to have automatic open captions on one of the two displays in traditional TV format (three lines, white text on black background).<br />
<br />
* (2) Projectors on cart/stands<br />
* (2) 9x16ft screens<br />
* confidence monitor for presenter<br />
<br />
==== Live streaming ====<br />
<br />
* The entire day's program will be live streamed with automatic live captions to GNU Radio's YouTube channel. See [https://www.youtube.com/watch?v=e6eQ2LpjF_0 GRCon22 Keynote] for an example from GRCon22.<br />
* Local recording of the live stream content (used for post-production).<br />
<br />
==== Facilities ====<br />
<br />
* Power to every table - e.g. 8+ outlet powerstrip<br />
* Shared Internet for attendees over WiFi<br />
<br />
=== Exhibition hall ===<br />
<br />
Sponsors will be provided a 10ft wide, 8ft deep booth space. It is estimated that there will be 12 sponsor booths. Each should contain:<br />
* 6ft table<br />
* (2) chairs<br />
* power<br />
<br />
Some sponsors may request a desktop HDMI monitor fed by their computer.<br />
<br />
=== Workshop 1 ===<br />
<br />
Workshop 1 will be set up as a classroom.<br />
<br />
* (1) HDMI projector<br />
* (1) 100in screen<br />
* Podium for presenter<br />
* mic at podium<br />
* (1) hand-held wireless mic<br />
* room speakers<br />
* camera for recording session locally (no live streaming)<br />
<br />
=== Workshop 2 ===<br />
<br />
Workshop 2 will be set up as a classroom.<br />
<br />
* (1) HDMI projector<br />
* (1) 100in screen<br />
* Podium or table for presenter</div>777archttps://wiki.gnuradio.org/index.php?title=User_talk:Duggabe&diff=12763User talk:Duggabe2022-12-17T18:36:54Z<p>777arc: /* GRCon23 A/V requirements */</p>
<hr />
<div>== GRCon23 A/V requirements ==<br />
<br />
The emphasis of our GNU Radio conference is placed on the in-person presentations, sponsor exhibits, and personal contacts among the attendees. Live streaming is also provided to allow those who cannot attend in person and those in other time zones to participate virtually, but is lower priority.<br />
<br />
=== Arizona Ballroom ===<br />
<br />
All of the Main Track presentations will be in the Arizona Ballroom.<br />
<br />
==== Video sources ====<br />
<br />
* presentation of PDF or PowerPoint slides controlled by speaker at podium<br />
* presentation of JPG or PNG sponsor slides during breaks and lunch (continuous rotation)<br />
* presentation from presenter's laptop at podium needed for live demos (low percentage of total)<br />
* (1) fixed position camera<br />
<br />
==== Audio sources ====<br />
<br />
* mic at podium<br />
* (2) hand-held wireless mics<br />
* sound from presenter's laptop for live demos<br />
* background music for sponsor slides (live streaming only)<br />
<br />
==== In-room displays ====<br />
<br />
The in-room screens will show the presentation slides, and during breaks and lunch, the sponsor slides. The camera image is not displayed on the screens.<br />
<br />
It is desired to have automatic open captions on one of the two displays in traditional TV format (three lines, white text on black background).<br />
<br />
* (2) Projectors on cart/stands<br />
* (2) 9x16ft screens<br />
* confidence monitor for presenter<br />
<br />
==== Live streaming ====<br />
<br />
* The entire day's program will be live streamed with automatic live captions to GNU Radio's YouTube channel. See [https://www.youtube.com/watch?v=e6eQ2LpjF_0 GRCon22 Keynote] for an example from GRCon22.<br />
* Local recording of the live stream content (used for post-production).<br />
<br />
==== Facilities ====<br />
<br />
* Power to every table - e.g. 8+ outlet powerstrip<br />
* Shared Internet for attendees over WiFi<br />
<br />
=== Exhibition hall ===<br />
<br />
Sponsors will be provided a 10ft wide, 8ft deep booth space. It is estimated that there will be 12 sponsor booths. Each should contain:<br />
* 6ft table<br />
* (2) chairs<br />
* power<br />
<br />
Some sponsors may request a desktop HDMI monitor fed by their computer.<br />
<br />
=== Workshop 1 ===<br />
<br />
Workshop 1 will be set up as a classroom.<br />
<br />
* (1) HDMI projector<br />
* (1) 100in screen<br />
* Podium for presenter<br />
* mic at podium<br />
* (1) hand-held wireless mic<br />
* room speakers<br />
* camera for recording session locally (no live streaming)<br />
<br />
=== Workshop 2 ===<br />
<br />
Workshop 2 will be set up as a classroom.<br />
<br />
* (1) HDMI projector<br />
* (1) 100in screen<br />
* Podium or table for presenter</div>777archttps://wiki.gnuradio.org/index.php?title=Low_Pass_Filter_Example&diff=12620Low Pass Filter Example2022-10-17T21:45:58Z<p>777arc: </p>
<hr />
<div><div style="float:right"><br />
{{Template:BeginnerTutorials}}<br />
</div><br />
This tutorial describes how to use a low-pass filter in GNU Radio.<br />
<br />
The previous tutorial, [[Python_Block_Tags|Python Block Tags]], describes how to read and write tags in a Python block. The next tutorial, [[Designing_Filter_Taps|Designing Filter Taps]], describes how to design a set of low-pass filter taps and apply them against a signal.<br />
<br />
== Creating the Flowgraph ==<br />
<br />
Begin by adding the following blocks to the GRC work space:<br />
# Signal Source<br />
# Low Pass Filter<br />
# Throttle<br />
# QT GUI Frequency Sink<br />
# QT GUI Range<br />
<br />
Connect the blocks in the following manner:<br />
<br />
[[File:LPFTutorialFlowgraphStart.png|700px]]<br />
<br />
The ''QT GUI Range'' block is used to control the frequency of the ''Signal Source'' block. Double-click the ''QT GUI Range'' block and edit the properties:<br />
* Id: ''frequency''<br />
* Default Value: ''0''<br />
* Start: ''-samp_rate/2''<br />
* Stop: ''samp_rate/2''<br />
<br />
[[File:SetQTGUIRangeValuesFrequency.png|500px]]<br />
<br />
Click ''OK'' to save.<br />
<br />
Double-click the ''Signal Source'' block and enter ''frequency'' from the ''QT GUI Range'' variable:<br />
<br />
[[File:EditSignalSourceFrequency.png|500px]]<br />
<br />
Click ''OK'' to save. The flowgraph looks like the following image. Notice that the ''Low Pass Filter'' has a ''Cutoff Freq'' and ''Transition Width'' of 0:<br />
<br />
[[File:FlowgraphWithZeroCutoffFrequency.png|700px]]<br />
<br />
<br />
Double-click the ''Low Pass Filter'' block and edit the properties:<br />
* Cutoff freq: ''samp_rate/4''<br />
* Transition Width: ''samp_rate/8''<br />
<br />
[[File:SetLowPassFilterProperties.png|500px]]<br />
<br />
<br />
The flowgraph is complete and looks like the following:<br />
<br />
[[File:CompleteLPFFlowgraph.png|700px]]<br />
<br />
<br />
== Run the Flowgraph ==<br />
<br />
The flowgraph is complete! Run the flowgraph. The ''QT GUI Frequency Sink'' appears with a ''frequency'' slider bar:<br />
<br />
[[File:RunLPFFlowgraph.png|700px]]<br />
<br />
<br />
Scroll-wheel-click on the ''QT GUI Frequency'' window and select ''Max Hold'':<br />
<br />
[[File:SelectMaxHold.png|700px]]<br />
<br />
<br />
The ''Max Hold'' option retains and displays the maximum value at each frequency until the the flowgraph is closed. Clicking through multiple values of the ''frequency'' slider bar at the top shows the low pass filter response:<br />
<br />
[[File:LPFMaxHoldDisplay.png|700px]]<br />
<br />
<br />
== Noise Instead of Signal ==<br />
<br />
Lastly, try replacing the Signal Noise with a Noise Source (or Fast Noise Source, they do the same thing), and note how the output changes.<br />
<br />
== Next Steps ==<br />
<br />
The next tutorial, [[Designing_Filter_Taps|Designing Filter Taps]], describes how to design a set of low-pass filter taps and apply them against a signal.</div>777archttps://wiki.gnuradio.org/index.php?title=Bandlimited_threshold_detector&diff=12602Bandlimited threshold detector2022-10-03T02:44:15Z<p>777arc: </p>
<hr />
<div><!-- Learning_Through_Application.mediawiki --><br />
<br />
==Introduction==<br />
Sometimes a DSP application will call for signal detection of an intermittent signal (only present in the spectrum part of the time). A simplistic way to detect signal is by way of a frequency domain threshold, when an FFT bin exceeds that threshold the signal is 'detected'.<br />
Using a 'dumb' threshold would be a first obvious choice for triggering a detection event. The threshold level is the same across the entire spectral window and it is set to a value above the observed noisefloor, but below the minimum level of a particular signal we are trying to detect.<br />
With this simple approach (a straight line across the spectrum), a detection event is triggered anytime the threshold is exceeded. <br />
Ideally our threshold would only trigger on the specific signals we want to detect, those signals may be clustered together in frequency in a range or band contained within the spectral observation window.<br />
If we restrict the detection criteria to only a simple level threshold, some signals within our observation window may trigger a detection in error (since we only want to detect signals in a subband of our observation window)<br />
If we can restrict the threshold to not only power, but also frequency, we can still look at a large frequency range and see what else is present, but only trigger a detection if the threshold is crossed within the defined portion of spectrum.<br />
<br />
==Prerequisites==<br />
<br />
* [[Guided_Tutorial_GRC|Intro to GR usage: GRC and flowgraphs]]<br />
<br />
* [[Streams_and_Vectors|Streams and Vectors]]<br />
<br />
==Goals==<br />
====Generate Synthetic RF Spectrum with Intermittent Carriers====<br />
* broadband noise<br />
* narrowband signals with intermittent behavior<br />
* a large wideband signal<br />
====Set Visual Boundary Lines around a segment of the Frequency Spectrum and a Threshold Level====<br />
* Visualize the Synthetic RF Spectrum in the Frequency Domain<br />
* Create an adjustable threshold (horizontal line) that is displayed in the frequency window and also can be manually adjusted by the user. <br />
* Add upper and lower frequency boundaries (vertical lines) which will restrict the threshold trigger to signals within the boundary box.<br />
<br />
====Detection====<br />
* instantiate logic using in-tree blocks to compare the incoming signal's spectrum to the upper/lower frequency boundaries and only display <br />
the portion of the spectrum contained within the frequency boundary lines<br />
* instantiate logic to compare the spectrum contained within the frequency boundary lines to the threshold and only display the portion that <br />
crosses the threshold. <br />
* use a custom python block to trigger a file recording of the bin number and indices of any threshold crossings we detect<br />
<br />
==Content==<br />
The flowgraph for this tutorial is shown below along with the GRC file needed if you would like to test it out.<br />
<br />
[[File:Whole_flowgraph.png]]<br />
<br />
[[File:Bandlimited_threshold_detector.grc|Bandlimited_threshold_detector]]<br />
<br />
==Generate 'Synthetic RF Spectrum'==<br />
In the following example we will:<br />
Generate a synthetic signal for testing. It is assumed that you are comfortable enough in GNURadio to understand what these blocks are doing. <br />
<br />
<br />
[[File:synth_spectrum.png]]<br />
<br />
This portion of the flowgraph:<br />
<br />
* generates gaussian noise for the overall noisefloor (simulating environmental broadband noise)<br />
* Simulates a wideband carrier by lowpass filtering a noise source that is uncorrelated with the noise in the overall spectrum<br />
* Creates two narrowband carriers which are each modulated by square waves of different frequencies to simulate intermittent transmissions<br />
<br />
==Create A Visual Utility to Set Detection Boundaries for Frequency and Level==<br />
This portion of the flowgraph is where we get creative with Vectors.<br />
<br />
For this Flowgraph, we will have an overall FFT size used to display our synthetic frequency spectrum. In this example it will be 8192 FFT bins.<br />
<br />
====Dumb Threshold====<br />
For the 'dumb threshold', a vector where all values are adjustable will allow us to use a QT GUI Range Widget to dynamically raise and lower the threshold.<br />
This can be done by creating a QT GUI Range Widget <code>thresh_adj</code> and entering <code>(thresh_adj,)*full_band_size</code> where <code>full_band_size</code><br />
has the value 8192, the overall FFT size for the flowgraph.<br />
<br />
At runtime, the <code>thresh_adj</code> QT GUI Range Widget will set all the indices of this vector to the same value which will display as a horizontal line spanning the entire <br />
frequency window. When the variable is adjusted, the line moves up/down.<br />
<br />
====Frequency Boundary Box====<br />
For the frequency boundary box, it gets a little more complicated. Consider a simple case of a vector with length 9, where the vector values are <br />
<code>[-1000,-1000,-1000,-1000,+1000,-1000,-1000,-1000,-1000]</code> with indices <code>[0,1,2,3,4,5,6,7,8,9]</code>.<br />
<br />
On a plot, we get a shape like this ____|____ where the flat parts across the bottom are 4 values of -1000 (index 0-3) on the left and 4 values of -1000 on the right<br />
(index 5-8) with one value in the middle (index 4) with value +1000. In GNURadio when we represent baseband samples as RF signals in the frequency domain (QT Frequency Sink) we <br />
limit the y-axis of the observation window to defaults of +10dB and -140dB, because we won't likely be able to receive signals greater <br />
than say +20 on a relative scale with common A/D's in SDR's. Therefore, if we insert a vector into a QT Vector GUI with values that exceed our <br />
viewing window, we will only see a vertical line in the window for the value of +1000. We can use that line as a boundary using some array<br />
logic in with python expressions. <br />
<br />
For the Upper/Lower boundaries we will create vector sources where each vector will adjust it's left and right sides so that both of them combined will equal ''819'''1''''', adding the <br />
vertical line's index to the left and right sides will make the total vector length add up to the FFT length '''8191+1=8192'''<br />
<br />
This section of the flowgraph is shown here:<br />
<br />
[[File:two_vert_one_horiz_vectors.png]]<br />
<br />
The parameters for the 3 Vector Source blocks are shown here:<br />
<br />
[[File:Adjustable_threshold_vector.png]]<br />
[[File:Adjustable_upper_bound_vector.png]]<br />
[[File:Adjustable_lower_bound_vector.png]]<br />
<br />
<code>fft_size</code> = 8192<br />
<br />
<code>below_zero</code> is the extremely low value from our simple length 9 vector example (-1000)<br />
<br />
<code>vec_height</code> is the extremely high value from our simple length 9 vector example (+1000)<br />
<br />
<code>low_line_adj</code> is a QT GUI Range Widget that we use to adjust the position of the vertical line that indicates the lower frequency boundary of the frequency boundary box<br />
<br />
<code>up_line_adj</code> is a QT GUI Range Widget that we use to adjust the position of the vertical line that indicates the upper frequency boundary of the frequency boundary box<br />
<br />
The upper and lower frequency boundary vectors will be constructed to expand or contract in length based on the desired position of their vertical boundary lines. <br />
<br />
Both vertical boundary lines follow the same logic. In the case of the lower boundary line:<br />
<br />
The left half of the vector can be expressed as <code>(low_line_adj)*(below_zero,)</code>, which says that the number of bins to the left of the vertical line's position (the 'left side' of the vector) will be equal to the <br />
''position'' of the vertical line. So if the vertical line's position is index: 512, there will be 512 values to it's left (0-511)<br />
<br />
The right half of the vector can be expressed as <code>(fft_size-low_line_adj-1)*(below_zero,)</code>, which says that the number of bins to the right of the vertical line's position (the 'right side' of the vector) will be equal to the number of bins <br />
between the vertical line's position index (512) and the rest of the total vector length 8192 (512-8192). We subtract 1 to account for the vertical line's position itself.<br />
<br />
When the vertical line position is adjusted with the QT GUI Range Widget, the left/right sides will adjust accordingly in real-time. The total will always be the overall FFT Length (8192).<br />
<br />
[[File:Low_bound_vec_top_half.png]]<br />
<br />
[[File:Low_bound_vec_bottom_half.png]]<br />
<br />
<br />
<br />
<br />
<br />
====Add the synthetic signal to the Display====<br />
Since the incoming signal is really the main event in spectrum monitoring, we should probably add that to the spectrum window with the threshold and frequency boundary lines. The 4th input (input 3) on the QT GUI Vector Sink is where we add our synthetic signal. <br />
<br />
In the section above, we showed how the synthetic signal can be constructed from several different sources and summed together to create one stream of data. Before we put it into our frequency display we need to also convert the time domain to a spectral representation. In this example, we do this by using the '''Log Power FFT''' block, which is a combination of several GNURadio blocks in one:<br />
* stream to vector<br />
* vector decimation (frame rate)<br />
* complex to mag squared<br />
<br />
The output is the same type as the threshold and frequency boundary lines (float32) and is also a vector. <br />
<br />
This part of the flowgraph is shown here:<br />
<br />
<br />
[[File:Synth_signal_logpwrfft.png]]<br />
<br />
<br />
<br />
When we display these, we will see our synthetic signal's spectral representation, our threshold<br />
and frequency boundary lines superimposed on top of the spectrum, show here:<br />
<br />
[[File:Synth_signal_two_vert_one_horiz_GUI_GIF.gif]]<br />
<br />
====Detection====<br />
Now that we have lines we can move around our signal, we can also use the variables to do some comparison to only display/passthrough signal if it's within <br />
the frequency boundary box and above the threshold.<br />
<br />
By identifying which FFT indices (bins) that fall between the lower/upper frequency boundary lines, we can create a value to compare against our incoming signal's spectral representation.<br />
<br />
This is done here in the flowgraph:<br />
<br />
[[File:Synth_signal_spectrum_inside_upper_lower.png]]<br />
<br />
The value of <code>in_box_spec_len</code> represents a run-time callback, where the value changes as the upper/lower frequency boundary lines are adjusted.<br />
<br />
[[File:In_box_spec_len.png]]<br />
<br />
This is used to create a vector of length 8192, where all vector indices that are either to the left of the lower frequency boundary line OR to the right of the upper frequency boundary <br />
line are an extremely low number. The vector indices in between the upper/lower frequency boundary positions are 0.<br />
<br />
[[File:Between_upper_lower_detect.png]]<br />
<br />
When added to the incoming signal's spectral representation, this results in a vector of length 8192 which preserves the synthetic signal's vector indices between the lower/upper <br />
frequency boundary lines.<br />
<br />
If the upper/lower frequency boundary lines are set just below and just above the two narrow band carriers, the displayed result is shown below:<br />
<br />
[[File:All_spectrum_in_freq_bound_box.png]]<br />
<br />
Now the output of the lower/upper frequency boundary check is passed to one input of a <code>max</code> block where it is compared against the threshold. <br />
<br />
[[File:Detection_logic.png]]<br />
<br />
The output is a vector where every index is greater than or equal to the threshold value. <br />
<br />
[[File:Threshold_xings.png]]<br />
<br />
<br />
====Embedded Python Block to Record Detections====<br />
Up until this point, only '''in-tree''' blocks have been used. At this point, if we would like to write all values above the threshold, a very simple custom block can be used to extract them from the <br />
output of the max block above by comparing against the threshold value as it changes.<br />
<br />
[[File:Detection_file_write_embedded_block.png]]<br />
<br />
The following Embedded Python block will determine if the incoming data is ''greater than'' the threshold, thus rejecting the threshold itself and recording only the spectra from the synthetic signal that is above the threshold ''AND'' within the frequency boundary. The output file contains the timestamp of the detection, a list of bin numbers and a list of corresponding magnitudes.<br />
<br />
Example:<br />
<br />
<pre><br />
1661155430.9426177[5323 5324 5325 5326],[-58.806225 -49.62006 -47.60839 -52.316525]<br />
1661155431.0243776[5323 5324 5325 5326],[-58.734993 -49.58642 -47.59074 -52.312286]<br />
1661155431.1061163[5323 5324 5325 5326],[-58.690277 -49.577198 -47.589127 -52.305576]<br />
1661155431.1887715[5323 5324 5325 5326],[-58.769714 -49.585815 -47.57643 -52.278713]<br />
1661155431.2700336[5323 5324 5325 5326],[-58.6992 -49.582836 -47.58903 -52.30743 ]<br />
1661155431.3521397[5323 5324 5325 5326],[-58.765884 -49.599594 -47.594917 -52.30714 ]<br />
1661155431.4342203[5323 5324 5325 5326],[-58.766293 -49.591564 -47.59711 -52.32647 ]<br />
</pre><br />
<br />
====Embedded Block Code====<br />
<br />
<pre><br />
"""<br />
Embedded Python Blocks:<br />
<br />
Each time this file is saved, GRC will instantiate the first class it finds<br />
to get ports and parameters of your block. The arguments to __init__ will<br />
be the parameters. All of them are required to have default values!<br />
"""<br />
<br />
import numpy as np<br />
from gnuradio import gr<br />
import time<br />
<br />
class blk(gr.sync_block): # other base classes are basic_block, decim_block, interp_block<br />
"""Embedded Python Block example - a simple multiply const"""<br />
<br />
def __init__(self, vec_len=8192, peak_detect_file="/tmp/indexes.data"): # only default arguments here<br />
"""arguments to this function show up as parameters in GRC"""<br />
gr.sync_block.__init__(<br />
self,<br />
name='Embedded Python Block', # will show up in GRC<br />
in_sig=[(np.float32,vec_len),(np.float32,vec_len)],<br />
out_sig=None<br />
)<br />
# if an attribute with the same name as a parameter is found,<br />
# a callback is registered (properties work, too).<br />
self.peak_detect_file=peak_detect_file<br />
<br />
def work(self, input_items,output_items):<br />
for vecindx in range(len(input_items[0])):<br />
if len(np.nonzero(input_items[0][vecindx] > input_items[1][vecindx][0])[0])>0:<br />
#print("number of crossings: ", len(np.nonzero(input_items[0][vecindx] > input_items[1][vecindx][0])[0]))<br />
#print(" level of crossings: ", np.nonzero(input_items[0][vecindx] > input_items[1][vecindx][0]))<br />
#print(" index of crossings: ", input_items[0][vecindx][np.nonzero(input_items[0][vecindx] > input_items[1][0])])<br />
with open(self.peak_detect_file,'a') as fobj:<br />
fobj.write(str(time.time())+str(np.nonzero(input_items[0][vecindx] > input_items[1][vecindx][0])[0])+","+str(input_items[0][vecindx][np.nonzero(input_items[0][vecindx] > input_items[1][0])])+'\n')<br />
return len(input_items[0])<br />
</pre><br />
<br />
'''NOTE:''' It is true that the last step above could be skipped and this custom block used instead '''if''' all we want is the values written to file, however the above step allows a simple way to clearly visualize which values are above the threshold.<br />
<br />
<br />
Here is a brief demo of the flowgraph in action:<br />
<br />
[[File:Freq_bound_thresh_complete_demo_with_fileoutput.gif]]</div>777archttps://wiki.gnuradio.org/index.php?title=Bandlimited_threshold_detector&diff=12601Bandlimited threshold detector2022-10-03T02:43:49Z<p>777arc: </p>
<hr />
<div><!-- Learning_Through_Application.mediawiki --><br />
<br />
==Introduction==<br />
Sometimes a DSP application will call for signal detection of an intermittent signal (only present in the spectrum part of the time). A simplistic way to detect signal is by way of a frequency domain threshold, when an FFT bin exceeds that threshold the signal is 'detected'.<br />
Using a 'dumb' threshold would be a first obvious choice for triggering a detection event. The threshold level is the same across the entire spectral window and it is set to a value above the observed noisefloor, but below the minimum level of a particular signal we are trying to detect.<br />
With this simple approach (a straight line across the spectrum), a detection event is triggered anytime the threshold is exceeded. <br />
Ideally our threshold would only trigger on the specific signals we want to detect, those signals may be clustered together in frequency in a range or band contained within the spectral observation window.<br />
If we restrict the detection criteria to only a simple level threshold, some signals within our observation window may trigger a detection in error (since we only want to detect signals in a subband of our observation window)<br />
If we can restrict the threshold to not only power, but also frequency, we can still look at a large frequency range and see what else is present, but only trigger a detection if the threshold is crossed within the defined portion of spectrum.<br />
<br />
==Goals==<br />
====Generate Synthetic RF Spectrum with Intermittent Carriers====<br />
* broadband noise<br />
* narrowband signals with intermittent behavior<br />
* a large wideband signal<br />
====Set Visual Boundary Lines around a segment of the Frequency Spectrum and a Threshold Level====<br />
* Visualize the Synthetic RF Spectrum in the Frequency Domain<br />
* Create an adjustable threshold (horizontal line) that is displayed in the frequency window and also can be manually adjusted by the user. <br />
* Add upper and lower frequency boundaries (vertical lines) which will restrict the threshold trigger to signals within the boundary box.<br />
<br />
====Detection====<br />
* instantiate logic using in-tree blocks to compare the incoming signal's spectrum to the upper/lower frequency boundaries and only display <br />
the portion of the spectrum contained within the frequency boundary lines<br />
* instantiate logic to compare the spectrum contained within the frequency boundary lines to the threshold and only display the portion that <br />
crosses the threshold. <br />
* use a custom python block to trigger a file recording of the bin number and indices of any threshold crossings we detect<br />
<br />
==Content==<br />
The flowgraph for this tutorial is shown below along with the GRC file needed if you would like to test it out.<br />
<br />
[[File:Whole_flowgraph.png]]<br />
<br />
[[File:Bandlimited_threshold_detector.grc|Bandlimited_threshold_detector]]<br />
<br />
==Generate 'Synthetic RF Spectrum'==<br />
In the following example we will:<br />
Generate a synthetic signal for testing. It is assumed that you are comfortable enough in GNURadio to understand what these blocks are doing. <br />
<br />
<br />
[[File:synth_spectrum.png]]<br />
<br />
This portion of the flowgraph:<br />
<br />
* generates gaussian noise for the overall noisefloor (simulating environmental broadband noise)<br />
* Simulates a wideband carrier by lowpass filtering a noise source that is uncorrelated with the noise in the overall spectrum<br />
* Creates two narrowband carriers which are each modulated by square waves of different frequencies to simulate intermittent transmissions<br />
<br />
==Create A Visual Utility to Set Detection Boundaries for Frequency and Level==<br />
This portion of the flowgraph is where we get creative with Vectors.<br />
<br />
For this Flowgraph, we will have an overall FFT size used to display our synthetic frequency spectrum. In this example it will be 8192 FFT bins.<br />
<br />
====Dumb Threshold====<br />
For the 'dumb threshold', a vector where all values are adjustable will allow us to use a QT GUI Range Widget to dynamically raise and lower the threshold.<br />
This can be done by creating a QT GUI Range Widget <code>thresh_adj</code> and entering <code>(thresh_adj,)*full_band_size</code> where <code>full_band_size</code><br />
has the value 8192, the overall FFT size for the flowgraph.<br />
<br />
At runtime, the <code>thresh_adj</code> QT GUI Range Widget will set all the indices of this vector to the same value which will display as a horizontal line spanning the entire <br />
frequency window. When the variable is adjusted, the line moves up/down.<br />
<br />
====Frequency Boundary Box====<br />
For the frequency boundary box, it gets a little more complicated. Consider a simple case of a vector with length 9, where the vector values are <br />
<code>[-1000,-1000,-1000,-1000,+1000,-1000,-1000,-1000,-1000]</code> with indices <code>[0,1,2,3,4,5,6,7,8,9]</code>.<br />
<br />
On a plot, we get a shape like this ____|____ where the flat parts across the bottom are 4 values of -1000 (index 0-3) on the left and 4 values of -1000 on the right<br />
(index 5-8) with one value in the middle (index 4) with value +1000. In GNURadio when we represent baseband samples as RF signals in the frequency domain (QT Frequency Sink) we <br />
limit the y-axis of the observation window to defaults of +10dB and -140dB, because we won't likely be able to receive signals greater <br />
than say +20 on a relative scale with common A/D's in SDR's. Therefore, if we insert a vector into a QT Vector GUI with values that exceed our <br />
viewing window, we will only see a vertical line in the window for the value of +1000. We can use that line as a boundary using some array<br />
logic in with python expressions. <br />
<br />
For the Upper/Lower boundaries we will create vector sources where each vector will adjust it's left and right sides so that both of them combined will equal ''819'''1''''', adding the <br />
vertical line's index to the left and right sides will make the total vector length add up to the FFT length '''8191+1=8192'''<br />
<br />
This section of the flowgraph is shown here:<br />
<br />
[[File:two_vert_one_horiz_vectors.png]]<br />
<br />
The parameters for the 3 Vector Source blocks are shown here:<br />
<br />
[[File:Adjustable_threshold_vector.png]]<br />
[[File:Adjustable_upper_bound_vector.png]]<br />
[[File:Adjustable_lower_bound_vector.png]]<br />
<br />
<code>fft_size</code> = 8192<br />
<br />
<code>below_zero</code> is the extremely low value from our simple length 9 vector example (-1000)<br />
<br />
<code>vec_height</code> is the extremely high value from our simple length 9 vector example (+1000)<br />
<br />
<code>low_line_adj</code> is a QT GUI Range Widget that we use to adjust the position of the vertical line that indicates the lower frequency boundary of the frequency boundary box<br />
<br />
<code>up_line_adj</code> is a QT GUI Range Widget that we use to adjust the position of the vertical line that indicates the upper frequency boundary of the frequency boundary box<br />
<br />
The upper and lower frequency boundary vectors will be constructed to expand or contract in length based on the desired position of their vertical boundary lines. <br />
<br />
Both vertical boundary lines follow the same logic. In the case of the lower boundary line:<br />
<br />
The left half of the vector can be expressed as <code>(low_line_adj)*(below_zero,)</code>, which says that the number of bins to the left of the vertical line's position (the 'left side' of the vector) will be equal to the <br />
''position'' of the vertical line. So if the vertical line's position is index: 512, there will be 512 values to it's left (0-511)<br />
<br />
The right half of the vector can be expressed as <code>(fft_size-low_line_adj-1)*(below_zero,)</code>, which says that the number of bins to the right of the vertical line's position (the 'right side' of the vector) will be equal to the number of bins <br />
between the vertical line's position index (512) and the rest of the total vector length 8192 (512-8192). We subtract 1 to account for the vertical line's position itself.<br />
<br />
When the vertical line position is adjusted with the QT GUI Range Widget, the left/right sides will adjust accordingly in real-time. The total will always be the overall FFT Length (8192).<br />
<br />
[[File:Low_bound_vec_top_half.png]]<br />
<br />
[[File:Low_bound_vec_bottom_half.png]]<br />
<br />
<br />
<br />
<br />
<br />
====Add the synthetic signal to the Display====<br />
Since the incoming signal is really the main event in spectrum monitoring, we should probably add that to the spectrum window with the threshold and frequency boundary lines. The 4th input (input 3) on the QT GUI Vector Sink is where we add our synthetic signal. <br />
<br />
In the section above, we showed how the synthetic signal can be constructed from several different sources and summed together to create one stream of data. Before we put it into our frequency display we need to also convert the time domain to a spectral representation. In this example, we do this by using the '''Log Power FFT''' block, which is a combination of several GNURadio blocks in one:<br />
* stream to vector<br />
* vector decimation (frame rate)<br />
* complex to mag squared<br />
<br />
The output is the same type as the threshold and frequency boundary lines (float32) and is also a vector. <br />
<br />
This part of the flowgraph is shown here:<br />
<br />
<br />
[[File:Synth_signal_logpwrfft.png]]<br />
<br />
<br />
<br />
When we display these, we will see our synthetic signal's spectral representation, our threshold<br />
and frequency boundary lines superimposed on top of the spectrum, show here:<br />
<br />
[[File:Synth_signal_two_vert_one_horiz_GUI_GIF.gif]]<br />
<br />
====Detection====<br />
Now that we have lines we can move around our signal, we can also use the variables to do some comparison to only display/passthrough signal if it's within <br />
the frequency boundary box and above the threshold.<br />
<br />
By identifying which FFT indices (bins) that fall between the lower/upper frequency boundary lines, we can create a value to compare against our incoming signal's spectral representation.<br />
<br />
This is done here in the flowgraph:<br />
<br />
[[File:Synth_signal_spectrum_inside_upper_lower.png]]<br />
<br />
The value of <code>in_box_spec_len</code> represents a run-time callback, where the value changes as the upper/lower frequency boundary lines are adjusted.<br />
<br />
[[File:In_box_spec_len.png]]<br />
<br />
This is used to create a vector of length 8192, where all vector indices that are either to the left of the lower frequency boundary line OR to the right of the upper frequency boundary <br />
line are an extremely low number. The vector indices in between the upper/lower frequency boundary positions are 0.<br />
<br />
[[File:Between_upper_lower_detect.png]]<br />
<br />
When added to the incoming signal's spectral representation, this results in a vector of length 8192 which preserves the synthetic signal's vector indices between the lower/upper <br />
frequency boundary lines.<br />
<br />
If the upper/lower frequency boundary lines are set just below and just above the two narrow band carriers, the displayed result is shown below:<br />
<br />
[[File:All_spectrum_in_freq_bound_box.png]]<br />
<br />
Now the output of the lower/upper frequency boundary check is passed to one input of a <code>max</code> block where it is compared against the threshold. <br />
<br />
[[File:Detection_logic.png]]<br />
<br />
The output is a vector where every index is greater than or equal to the threshold value. <br />
<br />
[[File:Threshold_xings.png]]<br />
<br />
<br />
====Embedded Python Block to Record Detections====<br />
Up until this point, only '''in-tree''' blocks have been used. At this point, if we would like to write all values above the threshold, a very simple custom block can be used to extract them from the <br />
output of the max block above by comparing against the threshold value as it changes.<br />
<br />
[[File:Detection_file_write_embedded_block.png]]<br />
<br />
The following Embedded Python block will determine if the incoming data is ''greater than'' the threshold, thus rejecting the threshold itself and recording only the spectra from the synthetic signal that is above the threshold ''AND'' within the frequency boundary. The output file contains the timestamp of the detection, a list of bin numbers and a list of corresponding magnitudes.<br />
<br />
Example:<br />
<br />
<pre><br />
1661155430.9426177[5323 5324 5325 5326],[-58.806225 -49.62006 -47.60839 -52.316525]<br />
1661155431.0243776[5323 5324 5325 5326],[-58.734993 -49.58642 -47.59074 -52.312286]<br />
1661155431.1061163[5323 5324 5325 5326],[-58.690277 -49.577198 -47.589127 -52.305576]<br />
1661155431.1887715[5323 5324 5325 5326],[-58.769714 -49.585815 -47.57643 -52.278713]<br />
1661155431.2700336[5323 5324 5325 5326],[-58.6992 -49.582836 -47.58903 -52.30743 ]<br />
1661155431.3521397[5323 5324 5325 5326],[-58.765884 -49.599594 -47.594917 -52.30714 ]<br />
1661155431.4342203[5323 5324 5325 5326],[-58.766293 -49.591564 -47.59711 -52.32647 ]<br />
</pre><br />
<br />
====Embedded Block Code====<br />
<br />
<pre><br />
"""<br />
Embedded Python Blocks:<br />
<br />
Each time this file is saved, GRC will instantiate the first class it finds<br />
to get ports and parameters of your block. The arguments to __init__ will<br />
be the parameters. All of them are required to have default values!<br />
"""<br />
<br />
import numpy as np<br />
from gnuradio import gr<br />
import time<br />
<br />
class blk(gr.sync_block): # other base classes are basic_block, decim_block, interp_block<br />
"""Embedded Python Block example - a simple multiply const"""<br />
<br />
def __init__(self, vec_len=8192, peak_detect_file="/tmp/indexes.data"): # only default arguments here<br />
"""arguments to this function show up as parameters in GRC"""<br />
gr.sync_block.__init__(<br />
self,<br />
name='Embedded Python Block', # will show up in GRC<br />
in_sig=[(np.float32,vec_len),(np.float32,vec_len)],<br />
out_sig=None<br />
)<br />
# if an attribute with the same name as a parameter is found,<br />
# a callback is registered (properties work, too).<br />
self.peak_detect_file=peak_detect_file<br />
<br />
def work(self, input_items,output_items):<br />
for vecindx in range(len(input_items[0])):<br />
if len(np.nonzero(input_items[0][vecindx] > input_items[1][vecindx][0])[0])>0:<br />
#print("number of crossings: ", len(np.nonzero(input_items[0][vecindx] > input_items[1][vecindx][0])[0]))<br />
#print(" level of crossings: ", np.nonzero(input_items[0][vecindx] > input_items[1][vecindx][0]))<br />
#print(" index of crossings: ", input_items[0][vecindx][np.nonzero(input_items[0][vecindx] > input_items[1][0])])<br />
with open(self.peak_detect_file,'a') as fobj:<br />
fobj.write(str(time.time())+str(np.nonzero(input_items[0][vecindx] > input_items[1][vecindx][0])[0])+","+str(input_items[0][vecindx][np.nonzero(input_items[0][vecindx] > input_items[1][0])])+'\n')<br />
return len(input_items[0])<br />
</pre><br />
<br />
'''NOTE:''' It is true that the last step above could be skipped and this custom block used instead '''if''' all we want is the values written to file, however the above step allows a simple way to clearly visualize which values are above the threshold.<br />
<br />
<br />
Here is a brief demo of the flowgraph in action:<br />
<br />
[[File:Freq_bound_thresh_complete_demo_with_fileoutput.gif]]<br />
<br />
==Prerequisites==<br />
<br />
* [[Guided_Tutorial_GRC|Intro to GR usage: GRC and flowgraphs]]<br />
<br />
* [[Streams_and_Vectors|Streams and Vectors]]</div>777archttps://wiki.gnuradio.org/index.php?title=Bandlimited_threshold_detector&diff=12600Bandlimited threshold detector2022-10-03T02:43:42Z<p>777arc: </p>
<hr />
<div><!-- Learning_Through_Application.mediawiki --><br />
=Application/Goals=<br />
<br />
==Introduction==<br />
Sometimes a DSP application will call for signal detection of an intermittent signal (only present in the spectrum part of the time). A simplistic way to detect signal is by way of a frequency domain threshold, when an FFT bin exceeds that threshold the signal is 'detected'.<br />
Using a 'dumb' threshold would be a first obvious choice for triggering a detection event. The threshold level is the same across the entire spectral window and it is set to a value above the observed noisefloor, but below the minimum level of a particular signal we are trying to detect.<br />
With this simple approach (a straight line across the spectrum), a detection event is triggered anytime the threshold is exceeded. <br />
Ideally our threshold would only trigger on the specific signals we want to detect, those signals may be clustered together in frequency in a range or band contained within the spectral observation window.<br />
If we restrict the detection criteria to only a simple level threshold, some signals within our observation window may trigger a detection in error (since we only want to detect signals in a subband of our observation window)<br />
If we can restrict the threshold to not only power, but also frequency, we can still look at a large frequency range and see what else is present, but only trigger a detection if the threshold is crossed within the defined portion of spectrum.<br />
<br />
==Goals==<br />
====Generate Synthetic RF Spectrum with Intermittent Carriers====<br />
* broadband noise<br />
* narrowband signals with intermittent behavior<br />
* a large wideband signal<br />
====Set Visual Boundary Lines around a segment of the Frequency Spectrum and a Threshold Level====<br />
* Visualize the Synthetic RF Spectrum in the Frequency Domain<br />
* Create an adjustable threshold (horizontal line) that is displayed in the frequency window and also can be manually adjusted by the user. <br />
* Add upper and lower frequency boundaries (vertical lines) which will restrict the threshold trigger to signals within the boundary box.<br />
<br />
====Detection====<br />
* instantiate logic using in-tree blocks to compare the incoming signal's spectrum to the upper/lower frequency boundaries and only display <br />
the portion of the spectrum contained within the frequency boundary lines<br />
* instantiate logic to compare the spectrum contained within the frequency boundary lines to the threshold and only display the portion that <br />
crosses the threshold. <br />
* use a custom python block to trigger a file recording of the bin number and indices of any threshold crossings we detect<br />
<br />
==Content==<br />
The flowgraph for this tutorial is shown below along with the GRC file needed if you would like to test it out.<br />
<br />
[[File:Whole_flowgraph.png]]<br />
<br />
[[File:Bandlimited_threshold_detector.grc|Bandlimited_threshold_detector]]<br />
<br />
==Generate 'Synthetic RF Spectrum'==<br />
In the following example we will:<br />
Generate a synthetic signal for testing. It is assumed that you are comfortable enough in GNURadio to understand what these blocks are doing. <br />
<br />
<br />
[[File:synth_spectrum.png]]<br />
<br />
This portion of the flowgraph:<br />
<br />
* generates gaussian noise for the overall noisefloor (simulating environmental broadband noise)<br />
* Simulates a wideband carrier by lowpass filtering a noise source that is uncorrelated with the noise in the overall spectrum<br />
* Creates two narrowband carriers which are each modulated by square waves of different frequencies to simulate intermittent transmissions<br />
<br />
==Create A Visual Utility to Set Detection Boundaries for Frequency and Level==<br />
This portion of the flowgraph is where we get creative with Vectors.<br />
<br />
For this Flowgraph, we will have an overall FFT size used to display our synthetic frequency spectrum. In this example it will be 8192 FFT bins.<br />
<br />
====Dumb Threshold====<br />
For the 'dumb threshold', a vector where all values are adjustable will allow us to use a QT GUI Range Widget to dynamically raise and lower the threshold.<br />
This can be done by creating a QT GUI Range Widget <code>thresh_adj</code> and entering <code>(thresh_adj,)*full_band_size</code> where <code>full_band_size</code><br />
has the value 8192, the overall FFT size for the flowgraph.<br />
<br />
At runtime, the <code>thresh_adj</code> QT GUI Range Widget will set all the indices of this vector to the same value which will display as a horizontal line spanning the entire <br />
frequency window. When the variable is adjusted, the line moves up/down.<br />
<br />
====Frequency Boundary Box====<br />
For the frequency boundary box, it gets a little more complicated. Consider a simple case of a vector with length 9, where the vector values are <br />
<code>[-1000,-1000,-1000,-1000,+1000,-1000,-1000,-1000,-1000]</code> with indices <code>[0,1,2,3,4,5,6,7,8,9]</code>.<br />
<br />
On a plot, we get a shape like this ____|____ where the flat parts across the bottom are 4 values of -1000 (index 0-3) on the left and 4 values of -1000 on the right<br />
(index 5-8) with one value in the middle (index 4) with value +1000. In GNURadio when we represent baseband samples as RF signals in the frequency domain (QT Frequency Sink) we <br />
limit the y-axis of the observation window to defaults of +10dB and -140dB, because we won't likely be able to receive signals greater <br />
than say +20 on a relative scale with common A/D's in SDR's. Therefore, if we insert a vector into a QT Vector GUI with values that exceed our <br />
viewing window, we will only see a vertical line in the window for the value of +1000. We can use that line as a boundary using some array<br />
logic in with python expressions. <br />
<br />
For the Upper/Lower boundaries we will create vector sources where each vector will adjust it's left and right sides so that both of them combined will equal ''819'''1''''', adding the <br />
vertical line's index to the left and right sides will make the total vector length add up to the FFT length '''8191+1=8192'''<br />
<br />
This section of the flowgraph is shown here:<br />
<br />
[[File:two_vert_one_horiz_vectors.png]]<br />
<br />
The parameters for the 3 Vector Source blocks are shown here:<br />
<br />
[[File:Adjustable_threshold_vector.png]]<br />
[[File:Adjustable_upper_bound_vector.png]]<br />
[[File:Adjustable_lower_bound_vector.png]]<br />
<br />
<code>fft_size</code> = 8192<br />
<br />
<code>below_zero</code> is the extremely low value from our simple length 9 vector example (-1000)<br />
<br />
<code>vec_height</code> is the extremely high value from our simple length 9 vector example (+1000)<br />
<br />
<code>low_line_adj</code> is a QT GUI Range Widget that we use to adjust the position of the vertical line that indicates the lower frequency boundary of the frequency boundary box<br />
<br />
<code>up_line_adj</code> is a QT GUI Range Widget that we use to adjust the position of the vertical line that indicates the upper frequency boundary of the frequency boundary box<br />
<br />
The upper and lower frequency boundary vectors will be constructed to expand or contract in length based on the desired position of their vertical boundary lines. <br />
<br />
Both vertical boundary lines follow the same logic. In the case of the lower boundary line:<br />
<br />
The left half of the vector can be expressed as <code>(low_line_adj)*(below_zero,)</code>, which says that the number of bins to the left of the vertical line's position (the 'left side' of the vector) will be equal to the <br />
''position'' of the vertical line. So if the vertical line's position is index: 512, there will be 512 values to it's left (0-511)<br />
<br />
The right half of the vector can be expressed as <code>(fft_size-low_line_adj-1)*(below_zero,)</code>, which says that the number of bins to the right of the vertical line's position (the 'right side' of the vector) will be equal to the number of bins <br />
between the vertical line's position index (512) and the rest of the total vector length 8192 (512-8192). We subtract 1 to account for the vertical line's position itself.<br />
<br />
When the vertical line position is adjusted with the QT GUI Range Widget, the left/right sides will adjust accordingly in real-time. The total will always be the overall FFT Length (8192).<br />
<br />
[[File:Low_bound_vec_top_half.png]]<br />
<br />
[[File:Low_bound_vec_bottom_half.png]]<br />
<br />
<br />
<br />
<br />
<br />
====Add the synthetic signal to the Display====<br />
Since the incoming signal is really the main event in spectrum monitoring, we should probably add that to the spectrum window with the threshold and frequency boundary lines. The 4th input (input 3) on the QT GUI Vector Sink is where we add our synthetic signal. <br />
<br />
In the section above, we showed how the synthetic signal can be constructed from several different sources and summed together to create one stream of data. Before we put it into our frequency display we need to also convert the time domain to a spectral representation. In this example, we do this by using the '''Log Power FFT''' block, which is a combination of several GNURadio blocks in one:<br />
* stream to vector<br />
* vector decimation (frame rate)<br />
* complex to mag squared<br />
<br />
The output is the same type as the threshold and frequency boundary lines (float32) and is also a vector. <br />
<br />
This part of the flowgraph is shown here:<br />
<br />
<br />
[[File:Synth_signal_logpwrfft.png]]<br />
<br />
<br />
<br />
When we display these, we will see our synthetic signal's spectral representation, our threshold<br />
and frequency boundary lines superimposed on top of the spectrum, show here:<br />
<br />
[[File:Synth_signal_two_vert_one_horiz_GUI_GIF.gif]]<br />
<br />
====Detection====<br />
Now that we have lines we can move around our signal, we can also use the variables to do some comparison to only display/passthrough signal if it's within <br />
the frequency boundary box and above the threshold.<br />
<br />
By identifying which FFT indices (bins) that fall between the lower/upper frequency boundary lines, we can create a value to compare against our incoming signal's spectral representation.<br />
<br />
This is done here in the flowgraph:<br />
<br />
[[File:Synth_signal_spectrum_inside_upper_lower.png]]<br />
<br />
The value of <code>in_box_spec_len</code> represents a run-time callback, where the value changes as the upper/lower frequency boundary lines are adjusted.<br />
<br />
[[File:In_box_spec_len.png]]<br />
<br />
This is used to create a vector of length 8192, where all vector indices that are either to the left of the lower frequency boundary line OR to the right of the upper frequency boundary <br />
line are an extremely low number. The vector indices in between the upper/lower frequency boundary positions are 0.<br />
<br />
[[File:Between_upper_lower_detect.png]]<br />
<br />
When added to the incoming signal's spectral representation, this results in a vector of length 8192 which preserves the synthetic signal's vector indices between the lower/upper <br />
frequency boundary lines.<br />
<br />
If the upper/lower frequency boundary lines are set just below and just above the two narrow band carriers, the displayed result is shown below:<br />
<br />
[[File:All_spectrum_in_freq_bound_box.png]]<br />
<br />
Now the output of the lower/upper frequency boundary check is passed to one input of a <code>max</code> block where it is compared against the threshold. <br />
<br />
[[File:Detection_logic.png]]<br />
<br />
The output is a vector where every index is greater than or equal to the threshold value. <br />
<br />
[[File:Threshold_xings.png]]<br />
<br />
<br />
====Embedded Python Block to Record Detections====<br />
Up until this point, only '''in-tree''' blocks have been used. At this point, if we would like to write all values above the threshold, a very simple custom block can be used to extract them from the <br />
output of the max block above by comparing against the threshold value as it changes.<br />
<br />
[[File:Detection_file_write_embedded_block.png]]<br />
<br />
The following Embedded Python block will determine if the incoming data is ''greater than'' the threshold, thus rejecting the threshold itself and recording only the spectra from the synthetic signal that is above the threshold ''AND'' within the frequency boundary. The output file contains the timestamp of the detection, a list of bin numbers and a list of corresponding magnitudes.<br />
<br />
Example:<br />
<br />
<pre><br />
1661155430.9426177[5323 5324 5325 5326],[-58.806225 -49.62006 -47.60839 -52.316525]<br />
1661155431.0243776[5323 5324 5325 5326],[-58.734993 -49.58642 -47.59074 -52.312286]<br />
1661155431.1061163[5323 5324 5325 5326],[-58.690277 -49.577198 -47.589127 -52.305576]<br />
1661155431.1887715[5323 5324 5325 5326],[-58.769714 -49.585815 -47.57643 -52.278713]<br />
1661155431.2700336[5323 5324 5325 5326],[-58.6992 -49.582836 -47.58903 -52.30743 ]<br />
1661155431.3521397[5323 5324 5325 5326],[-58.765884 -49.599594 -47.594917 -52.30714 ]<br />
1661155431.4342203[5323 5324 5325 5326],[-58.766293 -49.591564 -47.59711 -52.32647 ]<br />
</pre><br />
<br />
====Embedded Block Code====<br />
<br />
<pre><br />
"""<br />
Embedded Python Blocks:<br />
<br />
Each time this file is saved, GRC will instantiate the first class it finds<br />
to get ports and parameters of your block. The arguments to __init__ will<br />
be the parameters. All of them are required to have default values!<br />
"""<br />
<br />
import numpy as np<br />
from gnuradio import gr<br />
import time<br />
<br />
class blk(gr.sync_block): # other base classes are basic_block, decim_block, interp_block<br />
"""Embedded Python Block example - a simple multiply const"""<br />
<br />
def __init__(self, vec_len=8192, peak_detect_file="/tmp/indexes.data"): # only default arguments here<br />
"""arguments to this function show up as parameters in GRC"""<br />
gr.sync_block.__init__(<br />
self,<br />
name='Embedded Python Block', # will show up in GRC<br />
in_sig=[(np.float32,vec_len),(np.float32,vec_len)],<br />
out_sig=None<br />
)<br />
# if an attribute with the same name as a parameter is found,<br />
# a callback is registered (properties work, too).<br />
self.peak_detect_file=peak_detect_file<br />
<br />
def work(self, input_items,output_items):<br />
for vecindx in range(len(input_items[0])):<br />
if len(np.nonzero(input_items[0][vecindx] > input_items[1][vecindx][0])[0])>0:<br />
#print("number of crossings: ", len(np.nonzero(input_items[0][vecindx] > input_items[1][vecindx][0])[0]))<br />
#print(" level of crossings: ", np.nonzero(input_items[0][vecindx] > input_items[1][vecindx][0]))<br />
#print(" index of crossings: ", input_items[0][vecindx][np.nonzero(input_items[0][vecindx] > input_items[1][0])])<br />
with open(self.peak_detect_file,'a') as fobj:<br />
fobj.write(str(time.time())+str(np.nonzero(input_items[0][vecindx] > input_items[1][vecindx][0])[0])+","+str(input_items[0][vecindx][np.nonzero(input_items[0][vecindx] > input_items[1][0])])+'\n')<br />
return len(input_items[0])<br />
</pre><br />
<br />
'''NOTE:''' It is true that the last step above could be skipped and this custom block used instead '''if''' all we want is the values written to file, however the above step allows a simple way to clearly visualize which values are above the threshold.<br />
<br />
<br />
Here is a brief demo of the flowgraph in action:<br />
<br />
[[File:Freq_bound_thresh_complete_demo_with_fileoutput.gif]]<br />
<br />
==Prerequisites==<br />
<br />
* [[Guided_Tutorial_GRC|Intro to GR usage: GRC and flowgraphs]]<br />
<br />
* [[Streams_and_Vectors|Streams and Vectors]]</div>777archttps://wiki.gnuradio.org/index.php?title=InstallingGR&diff=12572InstallingGR2022-09-12T05:12:10Z<p>777arc: </p>
<hr />
<div><div style="float:right"><br />
{{Template:BeginnerTutorials}}<br />
</div><br />
<br />
{| class="wikitable"<br />
|+ Install Quickstart<br>(Refer to the rest of this page for more OS and installation options)<br />
! Ubuntu 22<br />
||<br />
# <code>sudo apt-get install gnuradio</code><br />
||v3.10.1<br />
|-<br />
! Ubuntu 20<br />
||<br />
# <code>sudo add-apt-repository ppa:gnuradio/gnuradio-releases</code><br />
# <code>sudo apt-get update</code><br />
# <code>sudo apt-get install gnuradio python3-packaging</code><br />
||v3.10.3<br />
|-<br />
! Windows<br />
||<br />
# Install the latest [https://github.com/ryanvolz/radioconda/releases Radioconda installer]<br />
# Launch "GNU Radio Companion" from the Start menu<br />
||v3.10.3<br />
|-<br />
! macOS<br />
||<br />
# [https://brew.sh/ Install Homebrew]<br />
# <code>brew install gnuradio</code><br />
||v3.10.2<br />
|}<br />
<br />
<br />
= Types of Installation Methods =<br />
<br />
The recommended way to install GNU Radio on most platforms is using already available binary packages. Find your platform below in the [[#From_Binaries|From Binaries]] section for instructions on how to get GNU Radio through your regular package manager (e.g. [[#Ubuntu_PPA_Installation|Ubuntu PPA Installation]]), or visit the [[CondaInstall|Conda Installation]] page for instructions on how to use the Conda package manager to install GNU Radio on any Linux distribution, macOS, or Windows. For some platforms there are no binaries provided by available package managers or the GNU Radio project. In these cases please contact the maintainer of the package manager or the GNU Radio project to find a sensible way to provide binaries for your platform.<br />
<br />
In addition to using binaries, GNU Radio can be installed:<br />
<br />
# '''[[#From_Source|From source]]''' (for those who want full control)<br />
# '''[[#Using_PyBOMBS|Using PyBOMBS]]''' (for those who want it built from source and/or installed to a specific directory using a script)<br />
<br />
= From Binaries =<br />
<br />
== Linux ==<br />
<br />
Most distributions contain a package named <code>gnuradio</code> or similar in their standard repositories. For most use cases it is enough to install this package and start developing.<br />
<br />
The development of GNU Radio can be fast-paced, and binaries provided by your distribution may be outdated. '''Do check if the version you're installing is up to date! Sometimes old versions are not updated in the packaging systems.''' If you find a bug in a older GNU Radio version, please check if the bug still exists in the newer version of GNU Radio before filing a new issue.<br />
<br />
If the version shipped in your distribution is outdated please contact the corresponding maintainer to update it in the packaging system.<br />
<br />
Here are examples of how to install GNU Radio in various Linux distributions. <b>Click the link under &quot;Distribution&quot; for how to install dependencies.</b><br />
<br />
{|class="wikitable" style="margin: auto; width: 90%;"<br />
!scope="col"|Distribution<br />
!scope="col"|Command<br />
|-<br />
| [[UbuntuInstall|Debian/Ubuntu and derivates]]<br />
| <pre># apt install gnuradio</pre><br />
|-<br />
| [[FedoraInstall|Fedora]]<br />
| <pre># dnf install gnuradio</pre><br />
|-<br />
| RHEL/CentOS/Rocky Linux/AlmaLinux<br />
| <pre># yum install gnuradio</pre><br />
|-<br />
| [[ArchInstall|Archlinux]]<br />
| <pre># pacman -S gnuradio</pre><br />
|-<br />
| [[GentooInstall|Gentoo Linux]]<br />
| <pre># emerge net-wireless/gnuradio</pre><br />
|-<br />
| [[SuseInstall|Suse Linux]]<br />
| <br />
|-<br />
| [[InstallingGRFromSource_on_Raspberry_Pi|Raspberry Pi OS]]<br />
| <br />
|-<br />
|}<br />
<br />
On other distributions, simply use the appropriate package management command to install the <code>gnuradio</code> package and then please add it to this list. If you need newer versions or have a different platform please contact the package maintainer of your distribution or raise your issue on the mailing list.<br />
<br />
=== Ubuntu PPA Installation ===<br />
For Ubuntu, the latest builds (both released and pulled from master branch) are maintained as PPAs on [https://launchpad.net/~gnuradio launchpad].<br><br />
<b>Be sure to uninstall any previously installed versions of gnuradio first.</b> See [[UnInstallGR#From_PPA|UnInstallGR]].<br><br><br />
<br />
To access the current released version (3.10), add the gnuradio/gnuradio-releases ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases</pre><br />
<br />
To access the 3.9 released version, add the gnuradio/gnuradio-releases-3.9 ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.9</pre><br />
<br />
To access the 3.8 released version, add the gnuradio/gnuradio-releases-3.8 ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.8</pre><br />
<br />
To access the 3.7 released version (legacy), add the gnuradio/gnuradio-releases-3.7 ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.7</pre><br />
<br />
Then, update the apt sources, and install gnuradio<br />
<pre>$ sudo apt-get update</pre><br />
<pre>$ sudo apt install gnuradio</pre><br />
<br />
'''Attention:''' Do '''NOT''' try to install further packages like `gr-osmosdr` via Ubuntu's package management (i.e. using "apt"). Ubuntu will try to install a potentially incompatible version and your system will be in an undefined state. Instead, please first open GNURadio-Companion, and in the right-hand side block list, open "Soapy" -> "Source" or "Sink", to see whether the hardware you are most likely using is already integrated.<br />
<br />
<br />
'''Note on 3.10 packaging dependency'''<br />
For some distributions you may need to install the python module 'packaging' using pip (which may also need to be installed).<br />
<br />
$ sudo apt install python3-pip<br />
$ pip install packaging<br />
<br />
==== Modtool on Ubuntu ====<br />
NOTE: On released builds for Ubuntu 18.04 (bionic), there is an issue using gr_modtool after GNU Radio has been installed from the PPA. This is due to byte-compiled code that remains in the modtool templates after installation. To work around this issue:<br />
<br />
<pre>$ cd /usr/share/gnuradio/modtool/templates/gr-newmod<br />
$ sudo py3clean .</pre><br />
<br />
This issue does not appear for Ubuntu 19 and later packages<br />
<br />
=== Fedora COPR Installation ===<br />
<br />
**NOTE: FEDORA COPR not currently maintained**<br />
<br />
Packages are available for Fedora 29, 30, 31 hosted under COPR:<br />
<br />
https://copr.fedorainfracloud.org/coprs/gnuradio/<br />
<br />
1. Add the repository:<br />
<br />
-- For the latest released version:<br />
<pre>$ sudo dnf copr enable gnuradio/gnuradio-releases </pre><br />
-- For the latest pull from git master:<br />
<pre>$ sudo dnf copr enable gnuradio/gnuradio-master </pre><br />
<br />
2. Install GNU Radio<br />
<pre>$ sudo dnf install gnuradio </pre><br />
<br />
== Windows ==<br />
<br />
See the [[CondaInstall|Conda install guide]] or [https://github.com/ryanvolz/radioconda radioconda] to install GNU Radio 3.8 or newer on Windows.<br /><br />
<br />
If you need to install GNU Radio from source refer to the [[WindowsInstall|Windows install guide]].<br />
<br />
'''Note''': GNU Radio support on Windows is improving significantly but remains less tested and there are known problems and even significant bugs which affect regular usage of GNU Radio Companion. Please report bugs on the [https://github.com/gnuradio/gnuradio/issues GitHub Issues page] and if you have Windows development experience please consider investigating some of the [https://github.com/gnuradio/gnuradio/issues?q=is%3Aopen+is%3Aissue+label%3AWindows known issues].<br />
<br />
== Mac OS X ==<br />
<br />
Refer to the [[MacInstall|Mac OS X install guide page]].<br />
<br />
= From Source =<br />
<br />
Binary installation should be sufficient for most users, and certainly for anyone who is new to GNU Radio. However, if you have special requirements, want the latest version, or the binary packages are not working for you, you may want to install GNU Radio from source.<br />
<br />
=== Notes ===<br />
<br />
* By default GNU Radio will be installed in the <code>/usr/local</code> directory. See notes about [[InstallingGR#Common_cmake_flags|-DCMAKE_INSTALL_PREFIX]] to install it elsewhere.<br />
* Running and developing out-of-tree modules does not require GNU Radio to be installed from source. <br />
* <b>If you want to use GNU Radio with a USRP, you FIRST must clone and install UHD</b>. Follow the instructions in [[InstallingGRFromSource_on_Raspberry_Pi#Load_prerequisites|Install UHD from source]].<br />
* To install on a Raspberry Pi, see [[InstallingGRFromSource on Raspberry Pi]].<br />
* To build from source from within a conda environment, see [[CondaInstall#Building GNU Radio from source within a conda environment|the conda install guide]].<br />
<br />
=== For GNU Radio 3.10, 3.9, and Main Branch ===<br />
<br />
This section describes how to install GNU Radio 3.10, 3.9, and the Main branch from source code.<br />
<br />
==== Installing Dependencies ====<br />
<br />
Refer to [[InstallingGR#Linux|this page for your specific Linux distro]] to find how to install dependencies. For example, on Ubuntu 20.04 [[UbuntuInstall#Focal_Fossa_.2820.04.29_through_Impish_Indri_.2821.10.29|use this command]].<br />
<br />
==== Installing Volk ====<br />
<br />
Since Volk is no longer considered as a submodule of GNU Radio (GNU Radio commit #80c04479da962d048d41165081b026aafdaa0316),<br> you <b>MUST FIRST</b> install Volk, and then install GNU Radio. <br />
<br />
The basic idea is the same, but instead of building Volk along with GNU Radio, you need to clone and build it separately. For this example, we will start in the home directory. You can, of course, use any directory you wish and the results will be the same.<br />
<br />
* <code>cd</code><br />
* <code>git clone --recursive https://github.com/gnuradio/volk.git</code><br />
* <code>cd volk</code><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
<b>Note:</b> In the following command, you can add <code>-DCMAKE_INSTALL_PREFIX=XXX</code> to install Volk into the PREFIX <code>XXX</code>; if not specified, then the PREFIX is <code>/usr/local</code>. See other CMake options in [[#Common_cmake_flags|Common cmake flags]].<br><br />
* <code>cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../</code><br />
* <code>make</code><br />
* <code>make test</code><br />
* <code>sudo make install</code><br />
<br />
If you're running Linux, then always remember to do the following command after installing any library:<br />
* <code>sudo ldconfig</code><br />
<br />
==== Installing GNU Radio ====<br />
<br />
* <code>cd</code><br />
* <code>git clone https://github.com/gnuradio/gnuradio.git</code><br />
* <code>cd gnuradio</code><br />
<b>Note:</b> If you want to build the <code>maint-3.10</code> or <code>maint-3.9</code> branch rather than the default <code>main</code> branch, enter:<br />
<code>git checkout maint-3.10</code> and then<br><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
<b>Note:</b> In the following command, you can add <code>-DCMAKE_INSTALL_PREFIX=XXX</code> to install GNU Radio into the PREFIX <code>XXX</code>; if not specified, then the PREFIX is <code>/usr/local</code>. See other CMake options in [[#Common_cmake_flags|Common cmake flags]].<br><br />
* <code>cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../</code><br />
* <code>make -j3</code> (e.g. if you want to use 3 CPU cores during the build. To use 8 do -j8, to use 1, leave out the -j flag.)<br />
<b>Note:</b> In the following command, it is very possible that not all tests pass. Generally any error is a sign of a missing dependency such as the Python interface to ZMQ or NumPy or SciPy, none of which are required for building GNU Radio but are required for testing.<br />
* <code>make test</code><br />
* <code>sudo make install</code><br />
If you're running Linux, then always remember to do the following command after installing any library:<br />
* <code>sudo ldconfig</code><br />
As an optional step to increase performance, we recommend running the following, although it can take 10-15 minutes and you can always do it later:<br />
* <code>volk_profile</code><br />
If you encounter "Cannot import gnuradio" error, then go to [[ModuleNotFoundError#B._Finding_the_Python_library|Finding the Python library]] to set your PYTHONPATH and LD_LIBRARY_PATH.<br><b>After setting these environment variables, you need to do</b> <code>sudo ldconfig</code> <b>again</b> for the Linux dynamic library loader to find the just-installed GNU Radio libraries.<br><br />
If you have installed in a custom path with <code>-DCMAKE_INSTALL_PREFIX=XXX</code>, you will need to add that path to $PATH in order to find gnuradio-companion.<br />
<br />
=== For GNU Radio 3.8 or Earlier ===<br />
<br />
==== Installing Dependencies ====<br />
<br />
Refer to [[InstallingGR#Linux|this page for your specific Linux distro]] to find how to install dependencies. For example, on Ubuntu 20.04 [[UbuntuInstall#Focal_Fossa_.2820.04.29_through_Impish_Indri_.2821.10.29|use this command]].<br />
<br />
==== Installing GNU Radio ====<br />
For this example, we will start in the home directory; you can, of course, use any directory you wish and the results will be the same.<br />
<br />
* <code>cd</code><br />
* <code>git clone https://github.com/gnuradio/gnuradio.git</code><br />
* <code>cd gnuradio</code><br />
<br />
<b>Note:</b> In the following command, change <code>maint-3.8</code> to some other branch or tag if you want to build a different version of GNU Radio; see [https://github.com/gnuradio/gnuradio/tags tags] for tagged releases including pre-releases ("rc"). For [https://github.com/gnuradio/gnuradio/branches branches], it's generally wise to stick with "master" (the default after cloning), and, currently: <code>maint-3.7</code> or <code>maint-3.8</code>. Here we checkout the <code>maint-3.8</code> branch, which contains the latest 3.8 release plus any fixes or augmentations to it that will be in the next 3.8 release.<br />
<br />
* <code>git checkout maint-3.8</code><br />
* <code>git submodule update --init --recursive</code><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
<br />
<b>Note:</b> In the following command, you can add <code>-DCMAKE_INSTALL_PREFIX=XXX</code> to install GNU Radio into the PREFIX <code>XXX</code>; if not specified, then the PREFIX is <code>/usr/local</code>. See other CMake options in [[#Common_cmake_flags|Common cmake flags]].<br><br />
<br />
* <code>cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../</code><br />
* <code>make -j3</code> (e.g. if you want to use 3 CPU cores during the build. To use 8 do -j8, to use 1 leave out the -j flag.)<br />
* <code>sudo make install</code><br />
<br />
If you're running Linux, then always remember to do the following command after installing any library:<br />
* <code>sudo ldconfig</code><br />
<br />
Go to [[ModuleNotFoundError#B._Finding_the_Python_library|Finding the Python library]] to set your PYTHONPATH and LD_LIBRARY_PATH.<br><b>After setting these environment variables, you need to do</b> <code>sudo ldconfig</code> <b>again</b> for the Linux dynamic library loader to find the just-installed GNU Radio libraries.<br><br />
If you have installed in a custom path with <code>-DCMAKE_INSTALL_PREFIX=XXX</code>, you will need to add that path to $PATH in order to find gnuradio-companion.<br />
<br />
==== For Ubuntu 18.04 ====<br />
<br />
An easy way to install GNU Radio 3.8 on many Ubuntu systems is to use the following commands (note that this skips the setup for UHD hardware):<br />
<br />
* <code>sudo apt install git cmake g++ libboost-all-dev libgmp-dev swig python3-numpy python3-mako python3-sphinx python3-lxml doxygen libfftw3-dev libsdl1.2-dev libgsl-dev libqwt-qt5-dev libqt5opengl5-dev python3-pyqt5 liblog4cpp5-dev libzmq3-dev python3-yaml python3-click python3-click-plugins python3-zmq python3-scipy python3-pip python3-gi-cairo</code><br />
* <code>pip3 install git+https://github.com/pyqtgraph/pyqtgraph@develop</code><br />
* <code>pip3 install numpy scipy</code><br />
* <code>echo 'export PYTHONPATH=/usr/local/lib/python3/dist-packages:usr/local/lib/python2.7/site-packages:$PYTHONPATH' >> ~/.bashrc</code><br />
* <code>echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.bashrc</code><br />
* <code>echo 'export PYTHONPATH=/usr/local/lib/python3/dist-packages:usr/local/lib/python2.7/site-packages:$PYTHONPATH' >> ~/.profile</code><br />
* <code>echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.profile</code><br />
* <code>cd ~/</code><br />
* <code>git clone --recursive https://github.com/gnuradio/gnuradio</code><br />
* <code>cd gnuradio</code><br />
* <code>git checkout maint-3.8</code><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
* <code>git pull --recurse-submodules=on</code><br />
* <code>git submodule update --init</code><br />
* <code>cmake -DENABLE_GR_UHD=OFF ..</code><br />
* <code>make -j $(nproc --all)</code><br />
* <code>sudo make install</code><br />
* <code>sudo ldconfig</code><br />
<br />
Once this is done, reboot your computer and GNU Radio should be all set for you.<br />
<br />
== Common cmake flags ==<br />
<br />
* <code>-DENABLE_GR_XXX=ON</code> This enables (or disables for =OFF) the GNU Radio component named XXX. You might not need all of them, and this way, you can compile quicker.<br />
* <code>-DCMAKE_INSTALL_PREFIX=XXX</code> Install your stuff to XXX.<br />
* <code>-DCMAKE_BUILD_TYPE=Debug</code> This causes gcc to add debug symbols to all binaries. Useful for debugging (otherwise, it decreases efficiency!)<br />
* <code>-DPYTHON_EXECUTABLE=/usr/bin/python{2,3}</code> This selects the Python version and executable to be used during build time and will determine which Python libraries will be used for building the Python bindings.<br />
<p>For a list of additional cmake flags, as well as minimum versions of dependencies, see [https://www.gnuradio.org/doc/doxygen/build_guide.html]</p><br />
<br />
= Using PyBOMBS =<br />
<br />
PyBOMBS used to be the go-to method for building GNU Radio, UHD, and various Out of Tree (OOT) modules from source and then installing them into an isolated directory rather than system-wide, not unlike a Python virtualenv. We are no longer including PyBOMBS as a recommended method of installing GNU Radio, unless you want to play around with old versions (e.g. GR 3.7, 3.8, and OOTs of matching version). The PyBOMBS documentation is in the PyBOMBS [https://github.com/gnuradio/pybombs#pybombs README].<br />
<br />
= VMs and Live Images =<br />
Over the years a number of Live Images and VMs have been created. There are currently no official versions but here are some current options:<br />
*[https://github.com/bastibl/instant-gnuradio Instant GNU Radio] A customizable, programmatically generated VM and live environment for GNU Radio. <br />
*[[UbuntuVM]] An Ubuntu 20.04 virtual machine image with GNU Radio 3.8.2.0, Fosphor, GQRX, and several other useful pieces of software. (Created using Instant GNU Radio)<br />
<br />
= OK, it's installed, what now? =<br />
<br />
If the installation worked without any trouble, you're ready to use GNU Radio! If you have no idea how to do that, the best place to start is with the [[Tutorials]].<br />
<br />
Optionally, you may run <code>volk_profile</code> on your terminal to help libvolk to determine the optimal kernels (may speed up GNU Radio). <br />
<br />
[[Category:Installation]]<br />
[[Category:Guide]]</div>777archttps://wiki.gnuradio.org/index.php?title=InstallingGR&diff=12571InstallingGR2022-09-12T05:11:35Z<p>777arc: </p>
<hr />
<div><div style="float:right"><br />
{{Template:BeginnerTutorials}}<br />
</div><br />
<br />
{| class="wikitable"<br />
|+ Install Quickstart<br>(Refer to the rest of this page for more OS and installation options)<br />
! Ubuntu 22<br />
||<br />
# <code>sudo apt-get install gnuradio</code><br />
||v3.10.3<br />
|-<br />
! Ubuntu 20<br />
||<br />
# <code>sudo add-apt-repository ppa:gnuradio/gnuradio-releases</code><br />
# <code>sudo apt-get update</code><br />
# <code>sudo apt-get install gnuradio python3-packaging</code><br />
||v3.10.3<br />
|-<br />
! Windows<br />
||<br />
# Install the latest [https://github.com/ryanvolz/radioconda/releases Radioconda installer]<br />
# Launch "GNU Radio Companion" from the Start menu<br />
||v3.10.3<br />
|-<br />
! macOS<br />
||<br />
# [https://brew.sh/ Install Homebrew]<br />
# <code>brew install gnuradio</code><br />
||v3.10.2<br />
|}<br />
<br />
<br />
= Types of Installation Methods =<br />
<br />
The recommended way to install GNU Radio on most platforms is using already available binary packages. Find your platform below in the [[#From_Binaries|From Binaries]] section for instructions on how to get GNU Radio through your regular package manager (e.g. [[#Ubuntu_PPA_Installation|Ubuntu PPA Installation]]), or visit the [[CondaInstall|Conda Installation]] page for instructions on how to use the Conda package manager to install GNU Radio on any Linux distribution, macOS, or Windows. For some platforms there are no binaries provided by available package managers or the GNU Radio project. In these cases please contact the maintainer of the package manager or the GNU Radio project to find a sensible way to provide binaries for your platform.<br />
<br />
In addition to using binaries, GNU Radio can be installed:<br />
<br />
# '''[[#From_Source|From source]]''' (for those who want full control)<br />
# '''[[#Using_PyBOMBS|Using PyBOMBS]]''' (for those who want it built from source and/or installed to a specific directory using a script)<br />
<br />
= From Binaries =<br />
<br />
== Linux ==<br />
<br />
Most distributions contain a package named <code>gnuradio</code> or similar in their standard repositories. For most use cases it is enough to install this package and start developing.<br />
<br />
The development of GNU Radio can be fast-paced, and binaries provided by your distribution may be outdated. '''Do check if the version you're installing is up to date! Sometimes old versions are not updated in the packaging systems.''' If you find a bug in a older GNU Radio version, please check if the bug still exists in the newer version of GNU Radio before filing a new issue.<br />
<br />
If the version shipped in your distribution is outdated please contact the corresponding maintainer to update it in the packaging system.<br />
<br />
Here are examples of how to install GNU Radio in various Linux distributions. <b>Click the link under &quot;Distribution&quot; for how to install dependencies.</b><br />
<br />
{|class="wikitable" style="margin: auto; width: 90%;"<br />
!scope="col"|Distribution<br />
!scope="col"|Command<br />
|-<br />
| [[UbuntuInstall|Debian/Ubuntu and derivates]]<br />
| <pre># apt install gnuradio</pre><br />
|-<br />
| [[FedoraInstall|Fedora]]<br />
| <pre># dnf install gnuradio</pre><br />
|-<br />
| RHEL/CentOS/Rocky Linux/AlmaLinux<br />
| <pre># yum install gnuradio</pre><br />
|-<br />
| [[ArchInstall|Archlinux]]<br />
| <pre># pacman -S gnuradio</pre><br />
|-<br />
| [[GentooInstall|Gentoo Linux]]<br />
| <pre># emerge net-wireless/gnuradio</pre><br />
|-<br />
| [[SuseInstall|Suse Linux]]<br />
| <br />
|-<br />
| [[InstallingGRFromSource_on_Raspberry_Pi|Raspberry Pi OS]]<br />
| <br />
|-<br />
|}<br />
<br />
On other distributions, simply use the appropriate package management command to install the <code>gnuradio</code> package and then please add it to this list. If you need newer versions or have a different platform please contact the package maintainer of your distribution or raise your issue on the mailing list.<br />
<br />
=== Ubuntu PPA Installation ===<br />
For Ubuntu, the latest builds (both released and pulled from master branch) are maintained as PPAs on [https://launchpad.net/~gnuradio launchpad].<br><br />
<b>Be sure to uninstall any previously installed versions of gnuradio first.</b> See [[UnInstallGR#From_PPA|UnInstallGR]].<br><br><br />
<br />
To access the current released version (3.10), add the gnuradio/gnuradio-releases ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases</pre><br />
<br />
To access the 3.9 released version, add the gnuradio/gnuradio-releases-3.9 ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.9</pre><br />
<br />
To access the 3.8 released version, add the gnuradio/gnuradio-releases-3.8 ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.8</pre><br />
<br />
To access the 3.7 released version (legacy), add the gnuradio/gnuradio-releases-3.7 ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.7</pre><br />
<br />
Then, update the apt sources, and install gnuradio<br />
<pre>$ sudo apt-get update</pre><br />
<pre>$ sudo apt install gnuradio</pre><br />
<br />
'''Attention:''' Do '''NOT''' try to install further packages like `gr-osmosdr` via Ubuntu's package management (i.e. using "apt"). Ubuntu will try to install a potentially incompatible version and your system will be in an undefined state. Instead, please first open GNURadio-Companion, and in the right-hand side block list, open "Soapy" -> "Source" or "Sink", to see whether the hardware you are most likely using is already integrated.<br />
<br />
<br />
'''Note on 3.10 packaging dependency'''<br />
For some distributions you may need to install the python module 'packaging' using pip (which may also need to be installed).<br />
<br />
$ sudo apt install python3-pip<br />
$ pip install packaging<br />
<br />
==== Modtool on Ubuntu ====<br />
NOTE: On released builds for Ubuntu 18.04 (bionic), there is an issue using gr_modtool after GNU Radio has been installed from the PPA. This is due to byte-compiled code that remains in the modtool templates after installation. To work around this issue:<br />
<br />
<pre>$ cd /usr/share/gnuradio/modtool/templates/gr-newmod<br />
$ sudo py3clean .</pre><br />
<br />
This issue does not appear for Ubuntu 19 and later packages<br />
<br />
=== Fedora COPR Installation ===<br />
<br />
**NOTE: FEDORA COPR not currently maintained**<br />
<br />
Packages are available for Fedora 29, 30, 31 hosted under COPR:<br />
<br />
https://copr.fedorainfracloud.org/coprs/gnuradio/<br />
<br />
1. Add the repository:<br />
<br />
-- For the latest released version:<br />
<pre>$ sudo dnf copr enable gnuradio/gnuradio-releases </pre><br />
-- For the latest pull from git master:<br />
<pre>$ sudo dnf copr enable gnuradio/gnuradio-master </pre><br />
<br />
2. Install GNU Radio<br />
<pre>$ sudo dnf install gnuradio </pre><br />
<br />
== Windows ==<br />
<br />
See the [[CondaInstall|Conda install guide]] or [https://github.com/ryanvolz/radioconda radioconda] to install GNU Radio 3.8 or newer on Windows.<br /><br />
<br />
If you need to install GNU Radio from source refer to the [[WindowsInstall|Windows install guide]].<br />
<br />
'''Note''': GNU Radio support on Windows is improving significantly but remains less tested and there are known problems and even significant bugs which affect regular usage of GNU Radio Companion. Please report bugs on the [https://github.com/gnuradio/gnuradio/issues GitHub Issues page] and if you have Windows development experience please consider investigating some of the [https://github.com/gnuradio/gnuradio/issues?q=is%3Aopen+is%3Aissue+label%3AWindows known issues].<br />
<br />
== Mac OS X ==<br />
<br />
Refer to the [[MacInstall|Mac OS X install guide page]].<br />
<br />
= From Source =<br />
<br />
Binary installation should be sufficient for most users, and certainly for anyone who is new to GNU Radio. However, if you have special requirements, want the latest version, or the binary packages are not working for you, you may want to install GNU Radio from source.<br />
<br />
=== Notes ===<br />
<br />
* By default GNU Radio will be installed in the <code>/usr/local</code> directory. See notes about [[InstallingGR#Common_cmake_flags|-DCMAKE_INSTALL_PREFIX]] to install it elsewhere.<br />
* Running and developing out-of-tree modules does not require GNU Radio to be installed from source. <br />
* <b>If you want to use GNU Radio with a USRP, you FIRST must clone and install UHD</b>. Follow the instructions in [[InstallingGRFromSource_on_Raspberry_Pi#Load_prerequisites|Install UHD from source]].<br />
* To install on a Raspberry Pi, see [[InstallingGRFromSource on Raspberry Pi]].<br />
* To build from source from within a conda environment, see [[CondaInstall#Building GNU Radio from source within a conda environment|the conda install guide]].<br />
<br />
=== For GNU Radio 3.10, 3.9, and Main Branch ===<br />
<br />
This section describes how to install GNU Radio 3.10, 3.9, and the Main branch from source code.<br />
<br />
==== Installing Dependencies ====<br />
<br />
Refer to [[InstallingGR#Linux|this page for your specific Linux distro]] to find how to install dependencies. For example, on Ubuntu 20.04 [[UbuntuInstall#Focal_Fossa_.2820.04.29_through_Impish_Indri_.2821.10.29|use this command]].<br />
<br />
==== Installing Volk ====<br />
<br />
Since Volk is no longer considered as a submodule of GNU Radio (GNU Radio commit #80c04479da962d048d41165081b026aafdaa0316),<br> you <b>MUST FIRST</b> install Volk, and then install GNU Radio. <br />
<br />
The basic idea is the same, but instead of building Volk along with GNU Radio, you need to clone and build it separately. For this example, we will start in the home directory. You can, of course, use any directory you wish and the results will be the same.<br />
<br />
* <code>cd</code><br />
* <code>git clone --recursive https://github.com/gnuradio/volk.git</code><br />
* <code>cd volk</code><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
<b>Note:</b> In the following command, you can add <code>-DCMAKE_INSTALL_PREFIX=XXX</code> to install Volk into the PREFIX <code>XXX</code>; if not specified, then the PREFIX is <code>/usr/local</code>. See other CMake options in [[#Common_cmake_flags|Common cmake flags]].<br><br />
* <code>cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../</code><br />
* <code>make</code><br />
* <code>make test</code><br />
* <code>sudo make install</code><br />
<br />
If you're running Linux, then always remember to do the following command after installing any library:<br />
* <code>sudo ldconfig</code><br />
<br />
==== Installing GNU Radio ====<br />
<br />
* <code>cd</code><br />
* <code>git clone https://github.com/gnuradio/gnuradio.git</code><br />
* <code>cd gnuradio</code><br />
<b>Note:</b> If you want to build the <code>maint-3.10</code> or <code>maint-3.9</code> branch rather than the default <code>main</code> branch, enter:<br />
<code>git checkout maint-3.10</code> and then<br><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
<b>Note:</b> In the following command, you can add <code>-DCMAKE_INSTALL_PREFIX=XXX</code> to install GNU Radio into the PREFIX <code>XXX</code>; if not specified, then the PREFIX is <code>/usr/local</code>. See other CMake options in [[#Common_cmake_flags|Common cmake flags]].<br><br />
* <code>cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../</code><br />
* <code>make -j3</code> (e.g. if you want to use 3 CPU cores during the build. To use 8 do -j8, to use 1, leave out the -j flag.)<br />
<b>Note:</b> In the following command, it is very possible that not all tests pass. Generally any error is a sign of a missing dependency such as the Python interface to ZMQ or NumPy or SciPy, none of which are required for building GNU Radio but are required for testing.<br />
* <code>make test</code><br />
* <code>sudo make install</code><br />
If you're running Linux, then always remember to do the following command after installing any library:<br />
* <code>sudo ldconfig</code><br />
As an optional step to increase performance, we recommend running the following, although it can take 10-15 minutes and you can always do it later:<br />
* <code>volk_profile</code><br />
If you encounter "Cannot import gnuradio" error, then go to [[ModuleNotFoundError#B._Finding_the_Python_library|Finding the Python library]] to set your PYTHONPATH and LD_LIBRARY_PATH.<br><b>After setting these environment variables, you need to do</b> <code>sudo ldconfig</code> <b>again</b> for the Linux dynamic library loader to find the just-installed GNU Radio libraries.<br><br />
If you have installed in a custom path with <code>-DCMAKE_INSTALL_PREFIX=XXX</code>, you will need to add that path to $PATH in order to find gnuradio-companion.<br />
<br />
=== For GNU Radio 3.8 or Earlier ===<br />
<br />
==== Installing Dependencies ====<br />
<br />
Refer to [[InstallingGR#Linux|this page for your specific Linux distro]] to find how to install dependencies. For example, on Ubuntu 20.04 [[UbuntuInstall#Focal_Fossa_.2820.04.29_through_Impish_Indri_.2821.10.29|use this command]].<br />
<br />
==== Installing GNU Radio ====<br />
For this example, we will start in the home directory; you can, of course, use any directory you wish and the results will be the same.<br />
<br />
* <code>cd</code><br />
* <code>git clone https://github.com/gnuradio/gnuradio.git</code><br />
* <code>cd gnuradio</code><br />
<br />
<b>Note:</b> In the following command, change <code>maint-3.8</code> to some other branch or tag if you want to build a different version of GNU Radio; see [https://github.com/gnuradio/gnuradio/tags tags] for tagged releases including pre-releases ("rc"). For [https://github.com/gnuradio/gnuradio/branches branches], it's generally wise to stick with "master" (the default after cloning), and, currently: <code>maint-3.7</code> or <code>maint-3.8</code>. Here we checkout the <code>maint-3.8</code> branch, which contains the latest 3.8 release plus any fixes or augmentations to it that will be in the next 3.8 release.<br />
<br />
* <code>git checkout maint-3.8</code><br />
* <code>git submodule update --init --recursive</code><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
<br />
<b>Note:</b> In the following command, you can add <code>-DCMAKE_INSTALL_PREFIX=XXX</code> to install GNU Radio into the PREFIX <code>XXX</code>; if not specified, then the PREFIX is <code>/usr/local</code>. See other CMake options in [[#Common_cmake_flags|Common cmake flags]].<br><br />
<br />
* <code>cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../</code><br />
* <code>make -j3</code> (e.g. if you want to use 3 CPU cores during the build. To use 8 do -j8, to use 1 leave out the -j flag.)<br />
* <code>sudo make install</code><br />
<br />
If you're running Linux, then always remember to do the following command after installing any library:<br />
* <code>sudo ldconfig</code><br />
<br />
Go to [[ModuleNotFoundError#B._Finding_the_Python_library|Finding the Python library]] to set your PYTHONPATH and LD_LIBRARY_PATH.<br><b>After setting these environment variables, you need to do</b> <code>sudo ldconfig</code> <b>again</b> for the Linux dynamic library loader to find the just-installed GNU Radio libraries.<br><br />
If you have installed in a custom path with <code>-DCMAKE_INSTALL_PREFIX=XXX</code>, you will need to add that path to $PATH in order to find gnuradio-companion.<br />
<br />
==== For Ubuntu 18.04 ====<br />
<br />
An easy way to install GNU Radio 3.8 on many Ubuntu systems is to use the following commands (note that this skips the setup for UHD hardware):<br />
<br />
* <code>sudo apt install git cmake g++ libboost-all-dev libgmp-dev swig python3-numpy python3-mako python3-sphinx python3-lxml doxygen libfftw3-dev libsdl1.2-dev libgsl-dev libqwt-qt5-dev libqt5opengl5-dev python3-pyqt5 liblog4cpp5-dev libzmq3-dev python3-yaml python3-click python3-click-plugins python3-zmq python3-scipy python3-pip python3-gi-cairo</code><br />
* <code>pip3 install git+https://github.com/pyqtgraph/pyqtgraph@develop</code><br />
* <code>pip3 install numpy scipy</code><br />
* <code>echo 'export PYTHONPATH=/usr/local/lib/python3/dist-packages:usr/local/lib/python2.7/site-packages:$PYTHONPATH' >> ~/.bashrc</code><br />
* <code>echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.bashrc</code><br />
* <code>echo 'export PYTHONPATH=/usr/local/lib/python3/dist-packages:usr/local/lib/python2.7/site-packages:$PYTHONPATH' >> ~/.profile</code><br />
* <code>echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.profile</code><br />
* <code>cd ~/</code><br />
* <code>git clone --recursive https://github.com/gnuradio/gnuradio</code><br />
* <code>cd gnuradio</code><br />
* <code>git checkout maint-3.8</code><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
* <code>git pull --recurse-submodules=on</code><br />
* <code>git submodule update --init</code><br />
* <code>cmake -DENABLE_GR_UHD=OFF ..</code><br />
* <code>make -j $(nproc --all)</code><br />
* <code>sudo make install</code><br />
* <code>sudo ldconfig</code><br />
<br />
Once this is done, reboot your computer and GNU Radio should be all set for you.<br />
<br />
== Common cmake flags ==<br />
<br />
* <code>-DENABLE_GR_XXX=ON</code> This enables (or disables for =OFF) the GNU Radio component named XXX. You might not need all of them, and this way, you can compile quicker.<br />
* <code>-DCMAKE_INSTALL_PREFIX=XXX</code> Install your stuff to XXX.<br />
* <code>-DCMAKE_BUILD_TYPE=Debug</code> This causes gcc to add debug symbols to all binaries. Useful for debugging (otherwise, it decreases efficiency!)<br />
* <code>-DPYTHON_EXECUTABLE=/usr/bin/python{2,3}</code> This selects the Python version and executable to be used during build time and will determine which Python libraries will be used for building the Python bindings.<br />
<p>For a list of additional cmake flags, as well as minimum versions of dependencies, see [https://www.gnuradio.org/doc/doxygen/build_guide.html]</p><br />
<br />
= Using PyBOMBS =<br />
<br />
PyBOMBS used to be the go-to method for building GNU Radio, UHD, and various Out of Tree (OOT) modules from source and then installing them into an isolated directory rather than system-wide, not unlike a Python virtualenv. We are no longer including PyBOMBS as a recommended method of installing GNU Radio, unless you want to play around with old versions (e.g. GR 3.7, 3.8, and OOTs of matching version). The PyBOMBS documentation is in the PyBOMBS [https://github.com/gnuradio/pybombs#pybombs README].<br />
<br />
= VMs and Live Images =<br />
Over the years a number of Live Images and VMs have been created. There are currently no official versions but here are some current options:<br />
*[https://github.com/bastibl/instant-gnuradio Instant GNU Radio] A customizable, programmatically generated VM and live environment for GNU Radio. <br />
*[[UbuntuVM]] An Ubuntu 20.04 virtual machine image with GNU Radio 3.8.2.0, Fosphor, GQRX, and several other useful pieces of software. (Created using Instant GNU Radio)<br />
<br />
= OK, it's installed, what now? =<br />
<br />
If the installation worked without any trouble, you're ready to use GNU Radio! If you have no idea how to do that, the best place to start is with the [[Tutorials]].<br />
<br />
Optionally, you may run <code>volk_profile</code> on your terminal to help libvolk to determine the optimal kernels (may speed up GNU Radio). <br />
<br />
[[Category:Installation]]<br />
[[Category:Guide]]</div>777archttps://wiki.gnuradio.org/index.php?title=InstallingGR&diff=12570InstallingGR2022-09-12T05:10:10Z<p>777arc: </p>
<hr />
<div><div style="float:right"><br />
{{Template:BeginnerTutorials}}<br />
</div><br />
<br />
{| class="wikitable"<br />
|+ Install Quickstart<br>(Refer to the rest of this page for more OS and installation options)<br />
! Linux<br />
||<br />
# [https://releases.ubuntu.com/20.04/ Install Ubuntu 20.04] (either as a VM or natively)<br />
# <code>sudo add-apt-repository ppa:gnuradio/gnuradio-releases</code><br />
# <code>sudo apt-get update</code><br />
# <code>sudo apt-get install gnuradio python3-packaging</code><br />
||v3.10.3<br />
|-<br />
! Windows<br />
||<br />
# Install the latest [https://github.com/ryanvolz/radioconda/releases Radioconda installer]<br />
# Launch "GNU Radio Companion" from the Start menu<br />
||v3.10.3<br />
|-<br />
! macOS<br />
||<br />
# [https://brew.sh/ Install Homebrew]<br />
# <code>brew install gnuradio</code><br />
||v3.10.2<br />
|}<br />
<br />
<br />
= Types of Installation Methods =<br />
<br />
The recommended way to install GNU Radio on most platforms is using already available binary packages. Find your platform below in the [[#From_Binaries|From Binaries]] section for instructions on how to get GNU Radio through your regular package manager (e.g. [[#Ubuntu_PPA_Installation|Ubuntu PPA Installation]]), or visit the [[CondaInstall|Conda Installation]] page for instructions on how to use the Conda package manager to install GNU Radio on any Linux distribution, macOS, or Windows. For some platforms there are no binaries provided by available package managers or the GNU Radio project. In these cases please contact the maintainer of the package manager or the GNU Radio project to find a sensible way to provide binaries for your platform.<br />
<br />
In addition to using binaries, GNU Radio can be installed:<br />
<br />
# '''[[#From_Source|From source]]''' (for those who want full control)<br />
# '''[[#Using_PyBOMBS|Using PyBOMBS]]''' (for those who want it built from source and/or installed to a specific directory using a script)<br />
<br />
= From Binaries =<br />
<br />
== Linux ==<br />
<br />
Most distributions contain a package named <code>gnuradio</code> or similar in their standard repositories. For most use cases it is enough to install this package and start developing.<br />
<br />
The development of GNU Radio can be fast-paced, and binaries provided by your distribution may be outdated. '''Do check if the version you're installing is up to date! Sometimes old versions are not updated in the packaging systems.''' If you find a bug in a older GNU Radio version, please check if the bug still exists in the newer version of GNU Radio before filing a new issue.<br />
<br />
If the version shipped in your distribution is outdated please contact the corresponding maintainer to update it in the packaging system.<br />
<br />
Here are examples of how to install GNU Radio in various Linux distributions. <b>Click the link under &quot;Distribution&quot; for how to install dependencies.</b><br />
<br />
{|class="wikitable" style="margin: auto; width: 90%;"<br />
!scope="col"|Distribution<br />
!scope="col"|Command<br />
|-<br />
| [[UbuntuInstall|Debian/Ubuntu and derivates]]<br />
| <pre># apt install gnuradio</pre><br />
|-<br />
| [[FedoraInstall|Fedora]]<br />
| <pre># dnf install gnuradio</pre><br />
|-<br />
| RHEL/CentOS/Rocky Linux/AlmaLinux<br />
| <pre># yum install gnuradio</pre><br />
|-<br />
| [[ArchInstall|Archlinux]]<br />
| <pre># pacman -S gnuradio</pre><br />
|-<br />
| [[GentooInstall|Gentoo Linux]]<br />
| <pre># emerge net-wireless/gnuradio</pre><br />
|-<br />
| [[SuseInstall|Suse Linux]]<br />
| <br />
|-<br />
| [[InstallingGRFromSource_on_Raspberry_Pi|Raspberry Pi OS]]<br />
| <br />
|-<br />
|}<br />
<br />
On other distributions, simply use the appropriate package management command to install the <code>gnuradio</code> package and then please add it to this list. If you need newer versions or have a different platform please contact the package maintainer of your distribution or raise your issue on the mailing list.<br />
<br />
=== Ubuntu PPA Installation ===<br />
For Ubuntu, the latest builds (both released and pulled from master branch) are maintained as PPAs on [https://launchpad.net/~gnuradio launchpad].<br><br />
<b>Be sure to uninstall any previously installed versions of gnuradio first.</b> See [[UnInstallGR#From_PPA|UnInstallGR]].<br><br><br />
<br />
To access the current released version (3.10), add the gnuradio/gnuradio-releases ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases</pre><br />
<br />
To access the 3.9 released version, add the gnuradio/gnuradio-releases-3.9 ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.9</pre><br />
<br />
To access the 3.8 released version, add the gnuradio/gnuradio-releases-3.8 ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.8</pre><br />
<br />
To access the 3.7 released version (legacy), add the gnuradio/gnuradio-releases-3.7 ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.7</pre><br />
<br />
Then, update the apt sources, and install gnuradio<br />
<pre>$ sudo apt-get update</pre><br />
<pre>$ sudo apt install gnuradio</pre><br />
<br />
'''Attention:''' Do '''NOT''' try to install further packages like `gr-osmosdr` via Ubuntu's package management (i.e. using "apt"). Ubuntu will try to install a potentially incompatible version and your system will be in an undefined state. Instead, please first open GNURadio-Companion, and in the right-hand side block list, open "Soapy" -> "Source" or "Sink", to see whether the hardware you are most likely using is already integrated.<br />
<br />
<br />
'''Note on 3.10 packaging dependency'''<br />
For some distributions you may need to install the python module 'packaging' using pip (which may also need to be installed).<br />
<br />
$ sudo apt install python3-pip<br />
$ pip install packaging<br />
<br />
==== Modtool on Ubuntu ====<br />
NOTE: On released builds for Ubuntu 18.04 (bionic), there is an issue using gr_modtool after GNU Radio has been installed from the PPA. This is due to byte-compiled code that remains in the modtool templates after installation. To work around this issue:<br />
<br />
<pre>$ cd /usr/share/gnuradio/modtool/templates/gr-newmod<br />
$ sudo py3clean .</pre><br />
<br />
This issue does not appear for Ubuntu 19 and later packages<br />
<br />
=== Fedora COPR Installation ===<br />
<br />
**NOTE: FEDORA COPR not currently maintained**<br />
<br />
Packages are available for Fedora 29, 30, 31 hosted under COPR:<br />
<br />
https://copr.fedorainfracloud.org/coprs/gnuradio/<br />
<br />
1. Add the repository:<br />
<br />
-- For the latest released version:<br />
<pre>$ sudo dnf copr enable gnuradio/gnuradio-releases </pre><br />
-- For the latest pull from git master:<br />
<pre>$ sudo dnf copr enable gnuradio/gnuradio-master </pre><br />
<br />
2. Install GNU Radio<br />
<pre>$ sudo dnf install gnuradio </pre><br />
<br />
== Windows ==<br />
<br />
See the [[CondaInstall|Conda install guide]] or [https://github.com/ryanvolz/radioconda radioconda] to install GNU Radio 3.8 or newer on Windows.<br /><br />
<br />
If you need to install GNU Radio from source refer to the [[WindowsInstall|Windows install guide]].<br />
<br />
'''Note''': GNU Radio support on Windows is improving significantly but remains less tested and there are known problems and even significant bugs which affect regular usage of GNU Radio Companion. Please report bugs on the [https://github.com/gnuradio/gnuradio/issues GitHub Issues page] and if you have Windows development experience please consider investigating some of the [https://github.com/gnuradio/gnuradio/issues?q=is%3Aopen+is%3Aissue+label%3AWindows known issues].<br />
<br />
== Mac OS X ==<br />
<br />
Refer to the [[MacInstall|Mac OS X install guide page]].<br />
<br />
= From Source =<br />
<br />
Binary installation should be sufficient for most users, and certainly for anyone who is new to GNU Radio. However, if you have special requirements, want the latest version, or the binary packages are not working for you, you may want to install GNU Radio from source.<br />
<br />
=== Notes ===<br />
<br />
* By default GNU Radio will be installed in the <code>/usr/local</code> directory. See notes about [[InstallingGR#Common_cmake_flags|-DCMAKE_INSTALL_PREFIX]] to install it elsewhere.<br />
* Running and developing out-of-tree modules does not require GNU Radio to be installed from source. <br />
* <b>If you want to use GNU Radio with a USRP, you FIRST must clone and install UHD</b>. Follow the instructions in [[InstallingGRFromSource_on_Raspberry_Pi#Load_prerequisites|Install UHD from source]].<br />
* To install on a Raspberry Pi, see [[InstallingGRFromSource on Raspberry Pi]].<br />
* To build from source from within a conda environment, see [[CondaInstall#Building GNU Radio from source within a conda environment|the conda install guide]].<br />
<br />
=== For GNU Radio 3.10, 3.9, and Main Branch ===<br />
<br />
This section describes how to install GNU Radio 3.10, 3.9, and the Main branch from source code.<br />
<br />
==== Installing Dependencies ====<br />
<br />
Refer to [[InstallingGR#Linux|this page for your specific Linux distro]] to find how to install dependencies. For example, on Ubuntu 20.04 [[UbuntuInstall#Focal_Fossa_.2820.04.29_through_Impish_Indri_.2821.10.29|use this command]].<br />
<br />
==== Installing Volk ====<br />
<br />
Since Volk is no longer considered as a submodule of GNU Radio (GNU Radio commit #80c04479da962d048d41165081b026aafdaa0316),<br> you <b>MUST FIRST</b> install Volk, and then install GNU Radio. <br />
<br />
The basic idea is the same, but instead of building Volk along with GNU Radio, you need to clone and build it separately. For this example, we will start in the home directory. You can, of course, use any directory you wish and the results will be the same.<br />
<br />
* <code>cd</code><br />
* <code>git clone --recursive https://github.com/gnuradio/volk.git</code><br />
* <code>cd volk</code><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
<b>Note:</b> In the following command, you can add <code>-DCMAKE_INSTALL_PREFIX=XXX</code> to install Volk into the PREFIX <code>XXX</code>; if not specified, then the PREFIX is <code>/usr/local</code>. See other CMake options in [[#Common_cmake_flags|Common cmake flags]].<br><br />
* <code>cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../</code><br />
* <code>make</code><br />
* <code>make test</code><br />
* <code>sudo make install</code><br />
<br />
If you're running Linux, then always remember to do the following command after installing any library:<br />
* <code>sudo ldconfig</code><br />
<br />
==== Installing GNU Radio ====<br />
<br />
* <code>cd</code><br />
* <code>git clone https://github.com/gnuradio/gnuradio.git</code><br />
* <code>cd gnuradio</code><br />
<b>Note:</b> If you want to build the <code>maint-3.10</code> or <code>maint-3.9</code> branch rather than the default <code>main</code> branch, enter:<br />
<code>git checkout maint-3.10</code> and then<br><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
<b>Note:</b> In the following command, you can add <code>-DCMAKE_INSTALL_PREFIX=XXX</code> to install GNU Radio into the PREFIX <code>XXX</code>; if not specified, then the PREFIX is <code>/usr/local</code>. See other CMake options in [[#Common_cmake_flags|Common cmake flags]].<br><br />
* <code>cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../</code><br />
* <code>make -j3</code> (e.g. if you want to use 3 CPU cores during the build. To use 8 do -j8, to use 1, leave out the -j flag.)<br />
<b>Note:</b> In the following command, it is very possible that not all tests pass. Generally any error is a sign of a missing dependency such as the Python interface to ZMQ or NumPy or SciPy, none of which are required for building GNU Radio but are required for testing.<br />
* <code>make test</code><br />
* <code>sudo make install</code><br />
If you're running Linux, then always remember to do the following command after installing any library:<br />
* <code>sudo ldconfig</code><br />
As an optional step to increase performance, we recommend running the following, although it can take 10-15 minutes and you can always do it later:<br />
* <code>volk_profile</code><br />
If you encounter "Cannot import gnuradio" error, then go to [[ModuleNotFoundError#B._Finding_the_Python_library|Finding the Python library]] to set your PYTHONPATH and LD_LIBRARY_PATH.<br><b>After setting these environment variables, you need to do</b> <code>sudo ldconfig</code> <b>again</b> for the Linux dynamic library loader to find the just-installed GNU Radio libraries.<br><br />
If you have installed in a custom path with <code>-DCMAKE_INSTALL_PREFIX=XXX</code>, you will need to add that path to $PATH in order to find gnuradio-companion.<br />
<br />
=== For GNU Radio 3.8 or Earlier ===<br />
<br />
==== Installing Dependencies ====<br />
<br />
Refer to [[InstallingGR#Linux|this page for your specific Linux distro]] to find how to install dependencies. For example, on Ubuntu 20.04 [[UbuntuInstall#Focal_Fossa_.2820.04.29_through_Impish_Indri_.2821.10.29|use this command]].<br />
<br />
==== Installing GNU Radio ====<br />
For this example, we will start in the home directory; you can, of course, use any directory you wish and the results will be the same.<br />
<br />
* <code>cd</code><br />
* <code>git clone https://github.com/gnuradio/gnuradio.git</code><br />
* <code>cd gnuradio</code><br />
<br />
<b>Note:</b> In the following command, change <code>maint-3.8</code> to some other branch or tag if you want to build a different version of GNU Radio; see [https://github.com/gnuradio/gnuradio/tags tags] for tagged releases including pre-releases ("rc"). For [https://github.com/gnuradio/gnuradio/branches branches], it's generally wise to stick with "master" (the default after cloning), and, currently: <code>maint-3.7</code> or <code>maint-3.8</code>. Here we checkout the <code>maint-3.8</code> branch, which contains the latest 3.8 release plus any fixes or augmentations to it that will be in the next 3.8 release.<br />
<br />
* <code>git checkout maint-3.8</code><br />
* <code>git submodule update --init --recursive</code><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
<br />
<b>Note:</b> In the following command, you can add <code>-DCMAKE_INSTALL_PREFIX=XXX</code> to install GNU Radio into the PREFIX <code>XXX</code>; if not specified, then the PREFIX is <code>/usr/local</code>. See other CMake options in [[#Common_cmake_flags|Common cmake flags]].<br><br />
<br />
* <code>cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../</code><br />
* <code>make -j3</code> (e.g. if you want to use 3 CPU cores during the build. To use 8 do -j8, to use 1 leave out the -j flag.)<br />
* <code>sudo make install</code><br />
<br />
If you're running Linux, then always remember to do the following command after installing any library:<br />
* <code>sudo ldconfig</code><br />
<br />
Go to [[ModuleNotFoundError#B._Finding_the_Python_library|Finding the Python library]] to set your PYTHONPATH and LD_LIBRARY_PATH.<br><b>After setting these environment variables, you need to do</b> <code>sudo ldconfig</code> <b>again</b> for the Linux dynamic library loader to find the just-installed GNU Radio libraries.<br><br />
If you have installed in a custom path with <code>-DCMAKE_INSTALL_PREFIX=XXX</code>, you will need to add that path to $PATH in order to find gnuradio-companion.<br />
<br />
==== For Ubuntu 18.04 ====<br />
<br />
An easy way to install GNU Radio 3.8 on many Ubuntu systems is to use the following commands (note that this skips the setup for UHD hardware):<br />
<br />
* <code>sudo apt install git cmake g++ libboost-all-dev libgmp-dev swig python3-numpy python3-mako python3-sphinx python3-lxml doxygen libfftw3-dev libsdl1.2-dev libgsl-dev libqwt-qt5-dev libqt5opengl5-dev python3-pyqt5 liblog4cpp5-dev libzmq3-dev python3-yaml python3-click python3-click-plugins python3-zmq python3-scipy python3-pip python3-gi-cairo</code><br />
* <code>pip3 install git+https://github.com/pyqtgraph/pyqtgraph@develop</code><br />
* <code>pip3 install numpy scipy</code><br />
* <code>echo 'export PYTHONPATH=/usr/local/lib/python3/dist-packages:usr/local/lib/python2.7/site-packages:$PYTHONPATH' >> ~/.bashrc</code><br />
* <code>echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.bashrc</code><br />
* <code>echo 'export PYTHONPATH=/usr/local/lib/python3/dist-packages:usr/local/lib/python2.7/site-packages:$PYTHONPATH' >> ~/.profile</code><br />
* <code>echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.profile</code><br />
* <code>cd ~/</code><br />
* <code>git clone --recursive https://github.com/gnuradio/gnuradio</code><br />
* <code>cd gnuradio</code><br />
* <code>git checkout maint-3.8</code><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
* <code>git pull --recurse-submodules=on</code><br />
* <code>git submodule update --init</code><br />
* <code>cmake -DENABLE_GR_UHD=OFF ..</code><br />
* <code>make -j $(nproc --all)</code><br />
* <code>sudo make install</code><br />
* <code>sudo ldconfig</code><br />
<br />
Once this is done, reboot your computer and GNU Radio should be all set for you.<br />
<br />
== Common cmake flags ==<br />
<br />
* <code>-DENABLE_GR_XXX=ON</code> This enables (or disables for =OFF) the GNU Radio component named XXX. You might not need all of them, and this way, you can compile quicker.<br />
* <code>-DCMAKE_INSTALL_PREFIX=XXX</code> Install your stuff to XXX.<br />
* <code>-DCMAKE_BUILD_TYPE=Debug</code> This causes gcc to add debug symbols to all binaries. Useful for debugging (otherwise, it decreases efficiency!)<br />
* <code>-DPYTHON_EXECUTABLE=/usr/bin/python{2,3}</code> This selects the Python version and executable to be used during build time and will determine which Python libraries will be used for building the Python bindings.<br />
<p>For a list of additional cmake flags, as well as minimum versions of dependencies, see [https://www.gnuradio.org/doc/doxygen/build_guide.html]</p><br />
<br />
= Using PyBOMBS =<br />
<br />
PyBOMBS used to be the go-to method for building GNU Radio, UHD, and various Out of Tree (OOT) modules from source and then installing them into an isolated directory rather than system-wide, not unlike a Python virtualenv. We are no longer including PyBOMBS as a recommended method of installing GNU Radio, unless you want to play around with old versions (e.g. GR 3.7, 3.8, and OOTs of matching version). The PyBOMBS documentation is in the PyBOMBS [https://github.com/gnuradio/pybombs#pybombs README].<br />
<br />
= VMs and Live Images =<br />
Over the years a number of Live Images and VMs have been created. There are currently no official versions but here are some current options:<br />
*[https://github.com/bastibl/instant-gnuradio Instant GNU Radio] A customizable, programmatically generated VM and live environment for GNU Radio. <br />
*[[UbuntuVM]] An Ubuntu 20.04 virtual machine image with GNU Radio 3.8.2.0, Fosphor, GQRX, and several other useful pieces of software. (Created using Instant GNU Radio)<br />
<br />
= OK, it's installed, what now? =<br />
<br />
If the installation worked without any trouble, you're ready to use GNU Radio! If you have no idea how to do that, the best place to start is with the [[Tutorials]].<br />
<br />
Optionally, you may run <code>volk_profile</code> on your terminal to help libvolk to determine the optimal kernels (may speed up GNU Radio). <br />
<br />
[[Category:Installation]]<br />
[[Category:Guide]]</div>777archttps://wiki.gnuradio.org/index.php?title=GNURadioConference&diff=12271GNURadioConference2022-05-09T20:28:51Z<p>777arc: /* GRCon 2021 */</p>
<hr />
<div>= The GNU Radio conference =<br />
<br />
GRCon is the annual GNU Radio conference, first held in 2011. It has grown in size every year. With a stellar program and a very low price, our attendees report an extremely high satisfaction level year after year. Future GNU Radio Conferences will continue many of the successful program aspects from previous years, and add some new items, as well.<br />
<br />
== Regular Features ==<br />
<br />
* Talks<br />
* Tutorials and Walkthroughs<br />
* Published Paper Proceedings<br />
* Keynotes & Panel Sessions<br />
* Vendor Exhibition & Demo Space<br />
* Technology Showcase & Poster Session<br />
* Social Events<br />
* Special Interest Focus Groups<br />
* Developer's Summit<br />
<br />
== GRCon 2021 ==<br />
https://events.gnuradio.org/event/8/<br />
<br />
* Conference Dates: Sept 20, 2021 - Sept 24, 2021<br />
* Location: Charlotte Airport Hotel in Charlotte, NC + Streaming Online<br />
* Nº of attendees: ~100 in person, many remote<br />
<br />
== GRCon 2020 ==<br />
<br />
https://www.gnuradio.org/grcon/grcon20/<br />
<br />
* Conference Dates: Sept 14, 2020 - Sept 18, 2020<br />
* Location: Virtual due to COVID19<br />
* Nº of attendees: 1693 (virtual registrants)<br />
<br />
== GRCon 2019 ==<br />
<br />
https://www.gnuradio.org/grcon/grcon19/<br />
<br />
* Conference Dates: Sept 16, 2019 – Sept 20, 2019<br />
* Location: Marriott at the Space & Rocket Center in Huntsville, Alabama<br />
* Nº of attendees: 367<br />
<br />
== GRCon 2018 ==<br />
<br />
https://www.gnuradio.org/grcon-2018/<br />
<br />
* Conference Dates: Sept 17, 2018 – Sept 21, 2018<br />
* Location: Henderson Convention Center, Henderson, Nevada<br />
* Nº of attendees: 319<br />
<br />
== GRCon 2017 ==<br />
<br />
https://www.gnuradio.org/grcon-2017/<br />
<br />
* Conference Dates: Sept 11, 2017 – Sept 15, 2017<br />
* Location: Bahia Resort Hotel, San Diego, California<br />
* Nº of attendees: 330<br />
<br />
== GRCon 2016 ==<br />
<br />
https://www.gnuradio.org/grcon-2016/<br />
<br />
* Conference Dates: Sept 12, 2017 – Sept 16, 2017<br />
* Location: University of Colorado, Boulder<br />
* Nº of attendees: 250<br />
<br />
== GRCon 2015 ==<br />
<br />
* Location: Washington, DC<br />
* Nº of attendees:<br />
<br />
# New Developers Day: 128<br />
# Developers Conference: 232<br />
<br />
* [http://www.trondeau.com/gnu-radio-conference-2015/ Official site]<br />
** [http://www.trondeau.com/grcon15-agenda Agenda]<br />
** [http://www.trondeau.com/grcon15-presentations Presentations (slides and videos)]<br />
<br />
== GRCon 2014 ==<br />
<br />
http://www.trondeau.com/gnu-radio-conference-2014/<br />
<br />
* Conference Agenda:<br />
* New Developer Day: Sept 15, 2014<br />
* Conference Dates: Sept 16, 2014 – Sept 18, 2014<br />
* Hackfest Date: Sept 19, 2014<br />
* Location: District Architecture Center, 421 7th Street, NW, Washington, DC 20004<br />
* Attendees: Up to 150<br />
<br />
* Nº of attendees:<br />
<br />
# New Developers Day: 55<br />
# Developers Conference: 92<br />
<br />
== GRCon 2013 ==<br />
<br />
* Conference Date: Oct 1, 2013 – Oct 3, 2013<br />
* Hackfest Date: Oct 4, 2013<br />
* Location: 281 Summer Street, Boston, MA 02210<br />
* More Info: http://www.trondeau.com/gnu-radio-conference-2013/<br />
<br />
* Nº of attendees: about 80<br />
<br />
== GRCon 2012 ==<br />
<br />
This year's conference will be held from Sept. 24 - 27. We will be hosted by the Sheraton Gateway Hotel near the Atlanta Airport (ATL).<br />
<br />
* Main website: http://www.trondeau.com/gnu-radio-conference-2012/<br />
* [http://www.trondeau.com/grc2012-call-for-presentations/ Call for presentations]<br />
* [http://www.trondeau.com/gnu-radio-conference-2012/ General information] , schedule etc.<br />
<br />
* Nº of attendees: about 70<br />
<br />
== GRCon 2011 ==<br />
<br />
The 2011 GRCon was held at the University of Pennsylvania, Philadelphia.<br />
<br />
* Nº of attendees: 55<br />
* [[GRConf2011|Presentations from the GNU Radio conference 2011]]</div>777archttps://wiki.gnuradio.org/index.php?title=GNURadioConference&diff=12270GNURadioConference2022-05-09T20:28:23Z<p>777arc: /* GRCon 2021 */</p>
<hr />
<div>= The GNU Radio conference =<br />
<br />
GRCon is the annual GNU Radio conference, first held in 2011. It has grown in size every year. With a stellar program and a very low price, our attendees report an extremely high satisfaction level year after year. Future GNU Radio Conferences will continue many of the successful program aspects from previous years, and add some new items, as well.<br />
<br />
== Regular Features ==<br />
<br />
* Talks<br />
* Tutorials and Walkthroughs<br />
* Published Paper Proceedings<br />
* Keynotes & Panel Sessions<br />
* Vendor Exhibition & Demo Space<br />
* Technology Showcase & Poster Session<br />
* Social Events<br />
* Special Interest Focus Groups<br />
* Developer's Summit<br />
<br />
== GRCon 2021 ==<br />
https://www.gnuradio.org/grcon/grcon21/ (redirects to https://events.gnuradio.org/event/8/)<br />
<br />
* Conference Dates: Sept 20, 2021 - Sept 24, 2021<br />
* Location: Charlotte Airport Hotel in Charlotte, NC + Streaming Online<br />
* Nº of attendees: ~100 in person, many remote<br />
<br />
== GRCon 2020 ==<br />
<br />
https://www.gnuradio.org/grcon/grcon20/<br />
<br />
* Conference Dates: Sept 14, 2020 - Sept 18, 2020<br />
* Location: Virtual due to COVID19<br />
* Nº of attendees: 1693 (virtual registrants)<br />
<br />
== GRCon 2019 ==<br />
<br />
https://www.gnuradio.org/grcon/grcon19/<br />
<br />
* Conference Dates: Sept 16, 2019 – Sept 20, 2019<br />
* Location: Marriott at the Space & Rocket Center in Huntsville, Alabama<br />
* Nº of attendees: 367<br />
<br />
== GRCon 2018 ==<br />
<br />
https://www.gnuradio.org/grcon-2018/<br />
<br />
* Conference Dates: Sept 17, 2018 – Sept 21, 2018<br />
* Location: Henderson Convention Center, Henderson, Nevada<br />
* Nº of attendees: 319<br />
<br />
== GRCon 2017 ==<br />
<br />
https://www.gnuradio.org/grcon-2017/<br />
<br />
* Conference Dates: Sept 11, 2017 – Sept 15, 2017<br />
* Location: Bahia Resort Hotel, San Diego, California<br />
* Nº of attendees: 330<br />
<br />
== GRCon 2016 ==<br />
<br />
https://www.gnuradio.org/grcon-2016/<br />
<br />
* Conference Dates: Sept 12, 2017 – Sept 16, 2017<br />
* Location: University of Colorado, Boulder<br />
* Nº of attendees: 250<br />
<br />
== GRCon 2015 ==<br />
<br />
* Location: Washington, DC<br />
* Nº of attendees:<br />
<br />
# New Developers Day: 128<br />
# Developers Conference: 232<br />
<br />
* [http://www.trondeau.com/gnu-radio-conference-2015/ Official site]<br />
** [http://www.trondeau.com/grcon15-agenda Agenda]<br />
** [http://www.trondeau.com/grcon15-presentations Presentations (slides and videos)]<br />
<br />
== GRCon 2014 ==<br />
<br />
http://www.trondeau.com/gnu-radio-conference-2014/<br />
<br />
* Conference Agenda:<br />
* New Developer Day: Sept 15, 2014<br />
* Conference Dates: Sept 16, 2014 – Sept 18, 2014<br />
* Hackfest Date: Sept 19, 2014<br />
* Location: District Architecture Center, 421 7th Street, NW, Washington, DC 20004<br />
* Attendees: Up to 150<br />
<br />
* Nº of attendees:<br />
<br />
# New Developers Day: 55<br />
# Developers Conference: 92<br />
<br />
== GRCon 2013 ==<br />
<br />
* Conference Date: Oct 1, 2013 – Oct 3, 2013<br />
* Hackfest Date: Oct 4, 2013<br />
* Location: 281 Summer Street, Boston, MA 02210<br />
* More Info: http://www.trondeau.com/gnu-radio-conference-2013/<br />
<br />
* Nº of attendees: about 80<br />
<br />
== GRCon 2012 ==<br />
<br />
This year's conference will be held from Sept. 24 - 27. We will be hosted by the Sheraton Gateway Hotel near the Atlanta Airport (ATL).<br />
<br />
* Main website: http://www.trondeau.com/gnu-radio-conference-2012/<br />
* [http://www.trondeau.com/grc2012-call-for-presentations/ Call for presentations]<br />
* [http://www.trondeau.com/gnu-radio-conference-2012/ General information] , schedule etc.<br />
<br />
* Nº of attendees: about 70<br />
<br />
== GRCon 2011 ==<br />
<br />
The 2011 GRCon was held at the University of Pennsylvania, Philadelphia.<br />
<br />
* Nº of attendees: 55<br />
* [[GRConf2011|Presentations from the GNU Radio conference 2011]]</div>777archttps://wiki.gnuradio.org/index.php?title=GNURadioConference&diff=12269GNURadioConference2022-05-09T20:23:26Z<p>777arc: /* GRCon 2015 */</p>
<hr />
<div>= The GNU Radio conference =<br />
<br />
GRCon is the annual GNU Radio conference, first held in 2011. It has grown in size every year. With a stellar program and a very low price, our attendees report an extremely high satisfaction level year after year. Future GNU Radio Conferences will continue many of the successful program aspects from previous years, and add some new items, as well.<br />
<br />
== Regular Features ==<br />
<br />
* Talks<br />
* Tutorials and Walkthroughs<br />
* Published Paper Proceedings<br />
* Keynotes & Panel Sessions<br />
* Vendor Exhibition & Demo Space<br />
* Technology Showcase & Poster Session<br />
* Social Events<br />
* Special Interest Focus Groups<br />
* Developer's Summit<br />
<br />
== GRCon 2021 ==<br />
https://www.gnuradio.org/grcon/grcon21/ (redirects to https://events.gnuradio.org/event/8/)<br />
<br />
* Conference Dates: Sept 20, 2021 - Sept 24, 2021<br />
* Location: Charlotte Airport Hotel in Charlotte, NC + Streaming Online<br />
* Nº of attendees: <br />
<br />
== GRCon 2020 ==<br />
<br />
https://www.gnuradio.org/grcon/grcon20/<br />
<br />
* Conference Dates: Sept 14, 2020 - Sept 18, 2020<br />
* Location: Virtual due to COVID19<br />
* Nº of attendees: 1693 (virtual registrants)<br />
<br />
== GRCon 2019 ==<br />
<br />
https://www.gnuradio.org/grcon/grcon19/<br />
<br />
* Conference Dates: Sept 16, 2019 – Sept 20, 2019<br />
* Location: Marriott at the Space & Rocket Center in Huntsville, Alabama<br />
* Nº of attendees: 367<br />
<br />
== GRCon 2018 ==<br />
<br />
https://www.gnuradio.org/grcon-2018/<br />
<br />
* Conference Dates: Sept 17, 2018 – Sept 21, 2018<br />
* Location: Henderson Convention Center, Henderson, Nevada<br />
* Nº of attendees: 319<br />
<br />
== GRCon 2017 ==<br />
<br />
https://www.gnuradio.org/grcon-2017/<br />
<br />
* Conference Dates: Sept 11, 2017 – Sept 15, 2017<br />
* Location: Bahia Resort Hotel, San Diego, California<br />
* Nº of attendees: 330<br />
<br />
== GRCon 2016 ==<br />
<br />
https://www.gnuradio.org/grcon-2016/<br />
<br />
* Conference Dates: Sept 12, 2017 – Sept 16, 2017<br />
* Location: University of Colorado, Boulder<br />
* Nº of attendees: 250<br />
<br />
== GRCon 2015 ==<br />
<br />
* Location: Washington, DC<br />
* Nº of attendees:<br />
<br />
# New Developers Day: 128<br />
# Developers Conference: 232<br />
<br />
* [http://www.trondeau.com/gnu-radio-conference-2015/ Official site]<br />
** [http://www.trondeau.com/grcon15-agenda Agenda]<br />
** [http://www.trondeau.com/grcon15-presentations Presentations (slides and videos)]<br />
<br />
== GRCon 2014 ==<br />
<br />
http://www.trondeau.com/gnu-radio-conference-2014/<br />
<br />
* Conference Agenda:<br />
* New Developer Day: Sept 15, 2014<br />
* Conference Dates: Sept 16, 2014 – Sept 18, 2014<br />
* Hackfest Date: Sept 19, 2014<br />
* Location: District Architecture Center, 421 7th Street, NW, Washington, DC 20004<br />
* Attendees: Up to 150<br />
<br />
* Nº of attendees:<br />
<br />
# New Developers Day: 55<br />
# Developers Conference: 92<br />
<br />
== GRCon 2013 ==<br />
<br />
* Conference Date: Oct 1, 2013 – Oct 3, 2013<br />
* Hackfest Date: Oct 4, 2013<br />
* Location: 281 Summer Street, Boston, MA 02210<br />
* More Info: http://www.trondeau.com/gnu-radio-conference-2013/<br />
<br />
* Nº of attendees: about 80<br />
<br />
== GRCon 2012 ==<br />
<br />
This year's conference will be held from Sept. 24 - 27. We will be hosted by the Sheraton Gateway Hotel near the Atlanta Airport (ATL).<br />
<br />
* Main website: http://www.trondeau.com/gnu-radio-conference-2012/<br />
* [http://www.trondeau.com/grc2012-call-for-presentations/ Call for presentations]<br />
* [http://www.trondeau.com/gnu-radio-conference-2012/ General information] , schedule etc.<br />
<br />
* Nº of attendees: about 70<br />
<br />
== GRCon 2011 ==<br />
<br />
The 2011 GRCon was held at the University of Pennsylvania, Philadelphia.<br />
<br />
* Nº of attendees: 55<br />
* [[GRConf2011|Presentations from the GNU Radio conference 2011]]</div>777archttps://wiki.gnuradio.org/index.php?title=InstallingGR&diff=12184InstallingGR2022-04-09T00:35:11Z<p>777arc: </p>
<hr />
<div><div style="float:right"><br />
{{Template:BeginnerTutorials}}<br />
</div><br />
<br />
{| class="wikitable"<br />
|+ Install Quickstart<br>(Refer to the rest of this page for more OS and installation options)<br />
! Linux<br />
||<br />
# [https://releases.ubuntu.com/20.04/ Install Ubuntu 20.04] (either as a VM or natively)<br />
# <code>sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.9</code><br />
# <code>sudo apt-get update</code><br />
# <code>sudo apt-get install gnuradio python3-packaging</code><br />
||v3.9.5<br />
|-<br />
! Windows<br />
||<br />
# Install the latest [https://github.com/ryanvolz/radioconda/releases Radioconda installer]<br />
# Launch "GNU Radio Companion" from the Start menu<br />
||v3.10.0<br />
|-<br />
! macOS<br />
||<br />
# [https://brew.sh/ Install Homebrew]<br />
# <code>brew install gnuradio</code><br />
# You'll have to edit gnuradio/grc/gui/DrawingArea.py and [https://github.com/gnuradio/gnuradio/pull/5111/files make this change]<br />
||v3.9.3<br />
|}<br />
<br />
<br />
= Types of Installation Methods =<br />
<br />
The recommended way to install GNU Radio on most platforms is using already available binary packages. Find your platform below in the [[#From_Binaries|From Binaries]] section for instructions on how to get GNU Radio through your regular package manager (e.g. [[#Ubuntu_PPA_Installation|Ubuntu PPA Installation]]), or visit the [[CondaInstall|Conda Installation]] page for instructions on how to use the Conda package manager to install GNU Radio on any Linux distribution, macOS, or Windows. For some platforms there are no binaries provided by available package managers or the GNU Radio project. In these cases please contact the maintainer of the package manager or the GNU Radio project to find a sensible way to provide binaries for your platform.<br />
<br />
In addition to using binaries, GNU Radio can be installed:<br />
<br />
# '''[[#From_Source|From source]]''' (for those who want full control)<br />
# '''[[#Using_PyBOMBS|Using PyBOMBS]]''' (for those who want it built from source and/or installed to a specific directory using a script)<br />
<br />
= From Binaries =<br />
<br />
== Linux ==<br />
<br />
Most distributions contain a package named <code>gnuradio</code> or similar in their standard repositories. For most use cases it is enough to install this package and start developing.<br />
<br />
The development of GNU Radio can be fast-paced, and binaries provided by your distribution may be outdated. '''Do check if the version you're installing is up to date! Sometimes old versions are not updated in the packaging systems.''' If you find a bug in a older GNU Radio version, please check if the bug still exists in the newer version of GNU Radio before filing a new issue.<br />
<br />
If the version shipped in your distribution is outdated please contact the corresponding maintainer to update it in the packaging system.<br />
<br />
Here are examples of how to install GNU Radio in various Linux distributions. <b>Click the link under &quot;Distribution&quot; for how to install dependencies.</b><br />
<br />
{|class="wikitable" style="margin: auto; width: 90%;"<br />
!scope="col"|Distribution<br />
!scope="col"|Command<br />
|-<br />
| [[UbuntuInstall|Debian/Ubuntu and derivates]]<br />
| <pre># apt install gnuradio</pre><br />
|-<br />
| [[FedoraInstall|Fedora]]<br />
| <pre># dnf install gnuradio</pre><br />
|-<br />
| RHEL/CentOS/Rocky Linux/AlmaLinux<br />
| <pre># yum install gnuradio</pre><br />
|-<br />
| [[ArchInstall|Archlinux]]<br />
| <pre># pacman -S gnuradio</pre><br />
|-<br />
| [[GentooInstall|Gentoo Linux]]<br />
| <pre># emerge net-wireless/gnuradio</pre><br />
|-<br />
| [[SuseInstall|Suse Linux]]<br />
| <br />
|-<br />
| [[InstallingGRFromSource_on_Raspberry_Pi|Raspberry Pi OS]]<br />
| <br />
|-<br />
|}<br />
<br />
On other distributions, simply use the appropriate package management command to install the <code>gnuradio</code> package and then please add it to this list. If you need newer versions or have a different platform please contact the package maintainer of your distribution or raise your issue on the mailing list.<br />
<br />
=== Ubuntu PPA Installation ===<br />
For Ubuntu, the latest builds (both released and pulled from master branch) are maintained as PPAs on [https://launchpad.net/~gnuradio launchpad]. Be sure to uninstall any previously installed versions of gnuradio first.<br />
<br />
To access the current released version (3.10), add the gnuradio/gnuradio-releases ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases</pre><br />
<br />
To access the 3.9 released version, add the gnuradio/gnuradio-releases-3.9 ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.9</pre><br />
<br />
To access the 3.8 released version, add the gnuradio/gnuradio-releases-3.8 ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.8</pre><br />
<br />
To access the 3.7 released version (legacy), add the gnuradio/gnuradio-releases-3.7 ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.7</pre><br />
<br />
Then, update the apt sources, and install gnuradio<br />
<pre>$ sudo apt-get update</pre><br />
<pre>$ sudo apt install gnuradio</pre><br />
<br />
'''Attention:''' Do '''NOT''' try to install further packages like `gr-osmosdr` via Ubuntu's package management (i.e. using "apt"). Ubuntu will try to install a potentially incompatible version and your system will be in an undefined state.<br />
<br />
<br />
'''Note on 3.10 packaging dependency'''<br />
For some distributions you may need to install the python module 'packaging' using pip (which may also need to be installed).<br />
<br />
$ sudo apt install python3-pip<br />
$ pip install packaging<br />
<br />
==== Modtool on Ubuntu ====<br />
NOTE: On released builds for Ubuntu 18.04 (bionic), there is an issue using gr_modtool after GNU Radio has been installed from the PPA. This is due to byte-compiled code that remains in the modtool templates after installation. To work around this issue:<br />
<br />
<pre>$ cd /usr/share/gnuradio/modtool/templates/gr-newmod<br />
$ sudo py3clean .</pre><br />
<br />
This issue does not appear for Ubuntu 19 and later packages<br />
<br />
=== Fedora COPR Installation ===<br />
<br />
**NOTE: FEDORA COPR not currently maintained**<br />
<br />
Packages are available for Fedora 29, 30, 31 hosted under COPR:<br />
<br />
https://copr.fedorainfracloud.org/coprs/gnuradio/<br />
<br />
1. Add the repository:<br />
<br />
-- For the latest released version:<br />
<pre>$ sudo dnf copr enable gnuradio/gnuradio-releases </pre><br />
-- For the latest pull from git master:<br />
<pre>$ sudo dnf copr enable gnuradio/gnuradio-master </pre><br />
<br />
2. Install GNU Radio<br />
<pre>$ sudo dnf install gnuradio </pre><br />
<br />
== Windows ==<br />
<br />
See the [[CondaInstall|Conda install guide]] or [https://github.com/ryanvolz/radioconda radioconda] to install GNU Radio 3.8 or newer on Windows.<br /><br />
<br />
If you need to install GNU Radio from source refer to the [[WindowsInstall|Windows install guide]].<br />
<br />
'''Note''': GNU Radio support on Windows is improving significantly but remains less tested and there are known problems and even significant bugs which affect regular usage of GNU Radio Companion. Please report bugs on the [https://github.com/gnuradio/gnuradio/issues GitHub Issues page] and if you have Windows development experience please consider investigating some of the [https://github.com/gnuradio/gnuradio/issues?q=is%3Aopen+is%3Aissue+label%3AWindows known issues].<br />
<br />
== Mac OS X ==<br />
<br />
Refer to the [[MacInstall|Mac OS X install guide page]].<br />
<br />
= From Source =<br />
<br />
Binary installation should be sufficient for most users, and certainly for anyone who is new to GNU Radio. However, if you have special requirements, want the latest version, or the binary packages are not working for you, you may want to install GNU Radio from source.<br />
<br />
=== Notes ===<br />
<br />
* By default GNU Radio will be installed in the <code>/usr/local</code> directory. See notes about [[InstallingGR#Common_cmake_flags|-DCMAKE_INSTALL_PREFIX]] to install it elsewhere.<br />
* Running and developing out-of-tree modules does not require GNU Radio to be installed from source. <br />
* <b>If you want to use GNU Radio with a USRP, you FIRST must clone and install UHD</b>. See the [https://kb.ettus.com/Building_and_Installing_the_USRP_Open-Source_Toolchain_(UHD_and_GNU_Radio)_on_Linux UHD Installation Page] for more info, <b>OR</b> follow the instructions in [[InstallingGRFromSource_on_Raspberry_Pi#Load_prerequisites|Install UHD from source]].<br />
* To install on a Raspberry Pi, see [[InstallingGRFromSource on Raspberry Pi]].<br />
* To build from source from within a conda environment, see [[CondaInstall#Building GNU Radio from source within a conda environment|the conda install guide]].<br />
<br />
=== For GNU Radio 3.10, 3.9, and Main Branch ===<br />
<br />
This section describes how to install GNU Radio 3.10, 3.9, and the Main branch from source code.<br />
<br />
==== Installing Dependencies ====<br />
<br />
Refer to [[InstallingGR#Linux|this page for your specific Linux distro]] to find how to install dependencies. For example, on Ubuntu 20.04 [[UbuntuInstall#Focal_Fossa_.2820.04.29_through_Impish_Indri_.2821.10.29|use this command]].<br />
<br />
==== Installing Volk ====<br />
<br />
Since Volk is no longer considered as a submodule of GNU Radio (GNU Radio commit #80c04479da962d048d41165081b026aafdaa0316),<br> you <b>MUST FIRST</b> install Volk, and then install GNU Radio. <br />
<br />
The basic idea is the same, but instead of building Volk along with GNU Radio, you need to clone and build it separately. For this example, we will start in the home directory. You can, of course, use any directory you wish and the results will be the same.<br />
<br />
* <code>cd</code><br />
* <code>git clone --recursive https://github.com/gnuradio/volk.git</code><br />
* <code>cd volk</code><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
<b>Note:</b> In the following command, you can add <code>-DCMAKE_INSTALL_PREFIX=XXX</code> to install Volk into the PREFIX <code>XXX</code>; if not specified, then the PREFIX is <code>/usr/local</code>. See other CMake options in [[#Common_cmake_flags|Common cmake flags]].<br><br />
* <code>cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../</code><br />
* <code>make</code><br />
* <code>make test</code><br />
* <code>sudo make install</code><br />
<br />
If you're running Linux, then always remember to do the following command after installing any library:<br />
* <code>sudo ldconfig</code><br />
<br />
==== Installing GNU Radio ====<br />
<br />
* <code>cd</code><br />
* <code>git clone https://github.com/gnuradio/gnuradio.git</code><br />
* <code>cd gnuradio</code><br />
<b>Note:</b> If you want to build the <code>maint-3.10</code> or <code>maint-3.9</code> branch rather than the default <code>main</code> branch, enter:<br />
<code>git checkout maint-3.10</code> and then<br><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
<b>Note:</b> In the following command, you can add <code>-DCMAKE_INSTALL_PREFIX=XXX</code> to install GNU Radio into the PREFIX <code>XXX</code>; if not specified, then the PREFIX is <code>/usr/local</code>. See other CMake options in [[#Common_cmake_flags|Common cmake flags]].<br><br />
* <code>cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../</code><br />
* <code>make -j3</code> (e.g. if you want to use 3 CPU cores during the build. To use 8 do -j8, to use 1, leave out the -j flag.)<br />
<b>Note:</b> In the following command, it is very possible that not all tests pass. Generally any error is a sign of a missing dependency such as the Python interface to ZMQ or NumPy or SciPy, none of which are required for building GNU Radio but are required for testing.<br />
* <code>make test</code><br />
* <code>sudo make install</code><br />
If you're running Linux, then always remember to do the following command after installing any library:<br />
* <code>sudo ldconfig</code><br />
As an optional step to increase performance, we recommend running the following, although it can take 10-15 minutes and you can always do it later:<br />
* <code>volk_profile</code><br />
If you encounter "Cannot import gnuradio" error, then go to [[ModuleNotFoundError#B._Finding_the_Python_library|Finding the Python library]] to set your PYTHONPATH and LD_LIBRARY_PATH.<br><b>After setting these environment variables, you need to do</b> <code>sudo ldconfig</code> <b>again</b> for the Linux dynamic library loader to find the just-installed GNU Radio libraries.<br><br />
If you have installed in a custom path with <code>-DCMAKE_INSTALL_PREFIX=XXX</code>, you will need to add that path to $PATH in order to find gnuradio-companion.<br />
<br />
=== For GNU Radio 3.8 or Earlier ===<br />
<br />
==== Installing Dependencies ====<br />
<br />
Refer to [[InstallingGR#Linux|this page for your specific Linux distro]] to find how to install dependencies. For example, on Ubuntu 20.04 [[UbuntuInstall#Focal_Fossa_.2820.04.29_through_Impish_Indri_.2821.10.29|use this command]].<br />
<br />
==== Installing GNU Radio ====<br />
For this example, we will start in the home directory; you can, of course, use any directory you wish and the results will be the same.<br />
<br />
* <code>cd</code><br />
* <code>git clone https://github.com/gnuradio/gnuradio.git</code><br />
* <code>cd gnuradio</code><br />
<br />
<b>Note:</b> In the following command, change <code>maint-3.8</code> to some other branch or tag if you want to build a different version of GNU Radio; see [https://github.com/gnuradio/gnuradio/tags tags] for tagged releases including pre-releases ("rc"). For [https://github.com/gnuradio/gnuradio/branches branches], it's generally wise to stick with "master" (the default after cloning), and, currently: <code>maint-3.7</code> or <code>maint-3.8</code>. Here we checkout the <code>maint-3.8</code> branch, which contains the latest 3.8 release plus any fixes or augmentations to it that will be in the next 3.8 release.<br />
<br />
* <code>git checkout maint-3.8</code><br />
* <code>git submodule update --init --recursive</code><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
<br />
<b>Note:</b> In the following command, you can add <code>-DCMAKE_INSTALL_PREFIX=XXX</code> to install GNU Radio into the PREFIX <code>XXX</code>; if not specified, then the PREFIX is <code>/usr/local</code>. See other CMake options in [[#Common_cmake_flags|Common cmake flags]].<br><br />
<br />
* <code>cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../</code><br />
* <code>make -j3</code> (e.g. if you want to use 3 CPU cores during the build. To use 8 do -j8, to use 1 leave out the -j flag.)<br />
* <code>sudo make install</code><br />
<br />
If you're running Linux, then always remember to do the following command after installing any library:<br />
* <code>sudo ldconfig</code><br />
<br />
Go to [[ModuleNotFoundError#B._Finding_the_Python_library|Finding the Python library]] to set your PYTHONPATH and LD_LIBRARY_PATH.<br><b>After setting these environment variables, you need to do</b> <code>sudo ldconfig</code> <b>again</b> for the Linux dynamic library loader to find the just-installed GNU Radio libraries.<br><br />
If you have installed in a custom path with <code>-DCMAKE_INSTALL_PREFIX=XXX</code>, you will need to add that path to $PATH in order to find gnuradio-companion.<br />
<br />
==== For Ubuntu 18.04 ====<br />
<br />
An easy way to install GNU Radio 3.8 on many Ubuntu systems is to use the following commands (note that this skips the setup for UHD hardware):<br />
<br />
* <code>sudo apt install git cmake g++ libboost-all-dev libgmp-dev swig python3-numpy python3-mako python3-sphinx python3-lxml doxygen libfftw3-dev libsdl1.2-dev libgsl-dev libqwt-qt5-dev libqt5opengl5-dev python3-pyqt5 liblog4cpp5-dev libzmq3-dev python3-yaml python3-click python3-click-plugins python3-zmq python3-scipy python3-pip python3-gi-cairo</code><br />
* <code>pip3 install git+https://github.com/pyqtgraph/pyqtgraph@develop</code><br />
* <code>pip3 install numpy scipy</code><br />
* <code>echo 'export PYTHONPATH=/usr/local/lib/python3/dist-packages:usr/local/lib/python2.7/site-packages:$PYTHONPATH' >> ~/.bashrc</code><br />
* <code>echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.bashrc</code><br />
* <code>echo 'export PYTHONPATH=/usr/local/lib/python3/dist-packages:usr/local/lib/python2.7/site-packages:$PYTHONPATH' >> ~/.profile</code><br />
* <code>echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.profile</code><br />
* <code>cd ~/</code><br />
* <code>git clone --recursive https://github.com/gnuradio/gnuradio</code><br />
* <code>cd gnuradio</code><br />
* <code>git checkout maint-3.8</code><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
* <code>git pull --recurse-submodules=on</code><br />
* <code>git submodule update --init</code><br />
* <code>cmake -DENABLE_GR_UHD=OFF ..</code><br />
* <code>make -j $(nproc --all)</code><br />
* <code>sudo make install</code><br />
* <code>sudo ldconfig</code><br />
<br />
Once this is done, reboot your computer and GNU Radio should be all set for you.<br />
<br />
== Common cmake flags ==<br />
<br />
* <code>-DENABLE_GR_XXX=ON</code> This enables (or disables for =OFF) the GNU Radio component named XXX. You might not need all of them, and this way, you can compile quicker.<br />
* <code>-DCMAKE_INSTALL_PREFIX=XXX</code> Install your stuff to XXX.<br />
* <code>-DCMAKE_BUILD_TYPE=Debug</code> This causes gcc to add debug symbols to all binaries. Useful for debugging (otherwise, it decreases efficiency!)<br />
* <code>-DPYTHON_EXECUTABLE=/usr/bin/python{2,3}</code> This selects the Python version and executable to be used during build time and will determine which Python libraries will be used for building the Python bindings.<br />
<p>For a list of additional cmake flags, as well as minimum versions of dependencies, see [https://www.gnuradio.org/doc/doxygen/build_guide.html]</p><br />
<br />
= Using PyBOMBS =<br />
<br />
PyBOMBS used to be the go-to method for building GNU Radio, UHD, and various Out of Tree (OOT) modules from source and then installing them into an isolated directory rather than system-wide, not unlike a Python virtualenv. We are no longer including PyBOMBS as a recommended method of installing GNU Radio, unless you want to play around with old versions (e.g. GR 3.7, 3.8, and OOTs of matching version). The PyBOMBS documentation is in the PyBOMBS [https://github.com/gnuradio/pybombs#pybombs README].<br />
<br />
= VMs and Live Images =<br />
Over the years a number of Live Images and VMs have been created. There are currently no official versions but here are some current options:<br />
*[https://github.com/bastibl/instant-gnuradio Instant GNU Radio] A customizable, programmatically generated VM and live environment for GNU Radio. <br />
*[[UbuntuVM]] An Ubuntu 20.04 virtual machine image with GNU Radio 3.8.2.0, Fosphor, GQRX, and several other useful pieces of software. (Created using Instant GNU Radio)<br />
<br />
= OK, it's installed, what now? =<br />
<br />
If the installation worked without any trouble, you're ready to use GNU Radio! If you have no idea how to do that, the best place to start is with the [[Tutorials]].<br />
<br />
Optionally, you may run <code>volk_profile</code> on your terminal to help libvolk to determine the optimal kernels (may speed up GNU Radio). <br />
<br />
[[Category:Installation]]<br />
[[Category:Guide]]</div>777archttps://wiki.gnuradio.org/index.php?title=InstallingGR&diff=12180InstallingGR2022-04-08T05:29:49Z<p>777arc: </p>
<hr />
<div><div style="float:right"><br />
{{Template:BeginnerTutorials}}<br />
</div><br />
<br />
{| class="wikitable"<br />
|+ Install Quickstart<br>(Refer to the rest of this page for more OS and installation options)<br />
! Linux<br />
||<br />
# [https://releases.ubuntu.com/20.04/ Install Ubuntu 20.04] (either as a VM or natively)<br />
# <code>sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.9</code><br />
# <code>sudo apt-get update</code><br />
# <code>sudo apt-get install gnuradio</code><br />
||v3.9.5<br />
|-<br />
! Windows<br />
||<br />
# Install the latest [https://github.com/ryanvolz/radioconda/releases Radioconda installer]<br />
# Launch "GNU Radio Companion" from the Start menu<br />
||v3.10.0<br />
|-<br />
! macOS<br />
||<br />
# [https://brew.sh/ Install Homebrew]<br />
# <code>brew install gnuradio</code><br />
# You'll have to edit gnuradio/grc/gui/DrawingArea.py and [https://github.com/gnuradio/gnuradio/pull/5111/files make this change]<br />
||v3.9.3<br />
|}<br />
<br />
<br />
= Types of Installation Methods =<br />
<br />
The recommended way to install GNU Radio on most platforms is using already available binary packages. Find your platform below in the [[#From_Binaries|From Binaries]] section for instructions on how to get GNU Radio through your regular package manager (e.g. [[#Ubuntu_PPA_Installation|Ubuntu PPA Installation]]), or visit the [[CondaInstall|Conda Installation]] page for instructions on how to use the Conda package manager to install GNU Radio on any Linux distribution, macOS, or Windows. For some platforms there are no binaries provided by available package managers or the GNU Radio project. In these cases please contact the maintainer of the package manager or the GNU Radio project to find a sensible way to provide binaries for your platform.<br />
<br />
In addition to using binaries, GNU Radio can be installed:<br />
<br />
# '''[[#From_Source|From source]]''' (for those who want full control)<br />
# '''[[#Using_PyBOMBS|Using PyBOMBS]]''' (for those who want it built from source and/or installed to a specific directory using a script)<br />
<br />
= From Binaries =<br />
<br />
== Linux ==<br />
<br />
Most distributions contain a package named <code>gnuradio</code> or similar in their standard repositories. For most use cases it is enough to install this package and start developing.<br />
<br />
The development of GNU Radio can be fast-paced, and binaries provided by your distribution may be outdated. '''Do check if the version you're installing is up to date! Sometimes old versions are not updated in the packaging systems.''' If you find a bug in a older GNU Radio version, please check if the bug still exists in the newer version of GNU Radio before filing a new issue.<br />
<br />
If the version shipped in your distribution is outdated please contact the corresponding maintainer to update it in the packaging system.<br />
<br />
Here are examples of how to install GNU Radio in various Linux distributions. <b>Click the link under &quot;Distribution&quot; for how to install dependencies.</b><br />
<br />
{|class="wikitable" style="margin: auto; width: 90%;"<br />
!scope="col"|Distribution<br />
!scope="col"|Command<br />
|-<br />
| [[UbuntuInstall|Debian/Ubuntu and derivates]]<br />
| <pre># apt install gnuradio</pre><br />
|-<br />
| [[FedoraInstall|Fedora]]<br />
| <pre># dnf install gnuradio</pre><br />
|-<br />
| RHEL/CentOS/Rocky Linux/AlmaLinux<br />
| <pre># yum install gnuradio</pre><br />
|-<br />
| [[ArchInstall|Archlinux]]<br />
| <pre># pacman -S gnuradio</pre><br />
|-<br />
| [[GentooInstall|Gentoo Linux]]<br />
| <pre># emerge net-wireless/gnuradio</pre><br />
|-<br />
| [[SuseInstall|Suse Linux]]<br />
| <br />
|-<br />
| [[InstallingGRFromSource_on_Raspberry_Pi|Raspberry Pi OS]]<br />
| <br />
|-<br />
|}<br />
<br />
On other distributions, simply use the appropriate package management command to install the <code>gnuradio</code> package and then please add it to this list. If you need newer versions or have a different platform please contact the package maintainer of your distribution or raise your issue on the mailing list.<br />
<br />
=== Ubuntu PPA Installation ===<br />
For Ubuntu, the latest builds (both released and pulled from master branch) are maintained as PPAs on [https://launchpad.net/~gnuradio launchpad]. Be sure to uninstall any previously installed versions of gnuradio first.<br />
<br />
To access the current released version (3.10), add the gnuradio/gnuradio-releases ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases</pre><br />
<br />
To access the 3.9 released version, add the gnuradio/gnuradio-releases-3.9 ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.9</pre><br />
<br />
To access the 3.8 released version, add the gnuradio/gnuradio-releases-3.8 ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.8</pre><br />
<br />
To access the 3.7 released version (legacy), add the gnuradio/gnuradio-releases-3.7 ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.7</pre><br />
<br />
Then, update the apt sources, and install gnuradio<br />
<pre>$ sudo apt-get update</pre><br />
<pre>$ sudo apt install gnuradio</pre><br />
<br />
'''Attention:''' Do '''NOT''' try to install further packages like `gr-osmosdr` via Ubuntu's package management (i.e. using "apt"). Ubuntu will try to install a potentially incompatible version and your system will be in an undefined state.<br />
<br />
<br />
'''Note on 3.10 packaging dependency'''<br />
For some distributions you may need to install the python module 'packaging' using pip (which may also need to be installed).<br />
<br />
$ sudo apt install python3-pip<br />
$ pip install packaging<br />
<br />
==== Modtool on Ubuntu ====<br />
NOTE: On released builds for Ubuntu 18.04 (bionic), there is an issue using gr_modtool after GNU Radio has been installed from the PPA. This is due to byte-compiled code that remains in the modtool templates after installation. To work around this issue:<br />
<br />
<pre>$ cd /usr/share/gnuradio/modtool/templates/gr-newmod<br />
$ sudo py3clean .</pre><br />
<br />
This issue does not appear for Ubuntu 19 and later packages<br />
<br />
=== Fedora COPR Installation ===<br />
<br />
**NOTE: FEDORA COPR not currently maintained**<br />
<br />
Packages are available for Fedora 29, 30, 31 hosted under COPR:<br />
<br />
https://copr.fedorainfracloud.org/coprs/gnuradio/<br />
<br />
1. Add the repository:<br />
<br />
-- For the latest released version:<br />
<pre>$ sudo dnf copr enable gnuradio/gnuradio-releases </pre><br />
-- For the latest pull from git master:<br />
<pre>$ sudo dnf copr enable gnuradio/gnuradio-master </pre><br />
<br />
2. Install GNU Radio<br />
<pre>$ sudo dnf install gnuradio </pre><br />
<br />
== Windows ==<br />
<br />
See the [[CondaInstall|Conda install guide]] or [https://github.com/ryanvolz/radioconda radioconda] to install GNU Radio 3.8 or newer on Windows.<br /><br />
<br />
If you need to install GNU Radio from source refer to the [[WindowsInstall|Windows install guide]].<br />
<br />
'''Note''': GNU Radio support on Windows is improving significantly but remains less tested and there are known problems and even significant bugs which affect regular usage of GNU Radio Companion. Please report bugs on the [https://github.com/gnuradio/gnuradio/issues GitHub Issues page] and if you have Windows development experience please consider investigating some of the [https://github.com/gnuradio/gnuradio/issues?q=is%3Aopen+is%3Aissue+label%3AWindows known issues].<br />
<br />
== Mac OS X ==<br />
<br />
Refer to the [[MacInstall|Mac OS X install guide page]].<br />
<br />
= From Source =<br />
<br />
Binary installation should be sufficient for most users, and certainly for anyone who is new to GNU Radio. However, if you have special requirements, want the latest version, or the binary packages are not working for you, you may want to install GNU Radio from source.<br />
<br />
=== Notes ===<br />
<br />
* By default GNU Radio will be installed in the <code>/usr/local</code> directory. See notes about [[InstallingGR#Common_cmake_flags|-DCMAKE_INSTALL_PREFIX]] to install it elsewhere.<br />
* Running and developing out-of-tree modules does not require GNU Radio to be installed from source. <br />
* <b>If you want to use GNU Radio with a USRP, you FIRST must clone and install UHD</b>. See the [https://kb.ettus.com/Building_and_Installing_the_USRP_Open-Source_Toolchain_(UHD_and_GNU_Radio)_on_Linux UHD Installation Page] for more info, <b>OR</b> follow the instructions in [[InstallingGRFromSource_on_Raspberry_Pi#Load_prerequisites|Install UHD from source]].<br />
* To install on a Raspberry Pi, see [[InstallingGRFromSource on Raspberry Pi]].<br />
* To build from source from within a conda environment, see [[CondaInstall#Building GNU Radio from source within a conda environment|the conda install guide]].<br />
<br />
=== For GNU Radio 3.10, 3.9, and Main Branch ===<br />
<br />
This section describes how to install GNU Radio 3.10, 3.9, and the Main branch from source code.<br />
<br />
==== Installing Dependencies ====<br />
<br />
Refer to [[InstallingGR#Linux|this page for your specific Linux distro]] to find how to install dependencies. For example, on Ubuntu 20.04 [[UbuntuInstall#Focal_Fossa_.2820.04.29_through_Impish_Indri_.2821.10.29|use this command]].<br />
<br />
==== Installing Volk ====<br />
<br />
Since Volk is no longer considered as a submodule of GNU Radio (GNU Radio commit #80c04479da962d048d41165081b026aafdaa0316),<br> you <b>MUST FIRST</b> install Volk, and then install GNU Radio. <br />
<br />
The basic idea is the same, but instead of building Volk along with GNU Radio, you need to clone and build it separately. For this example, we will start in the home directory. You can, of course, use any directory you wish and the results will be the same.<br />
<br />
* <code>cd</code><br />
* <code>git clone --recursive https://github.com/gnuradio/volk.git</code><br />
* <code>cd volk</code><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
<b>Note:</b> In the following command, you can add <code>-DCMAKE_INSTALL_PREFIX=XXX</code> to install Volk into the PREFIX <code>XXX</code>; if not specified, then the PREFIX is <code>/usr/local</code>. See other CMake options in [[#Common_cmake_flags|Common cmake flags]].<br><br />
* <code>cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../</code><br />
* <code>make</code><br />
* <code>make test</code><br />
* <code>sudo make install</code><br />
<br />
If you're running Linux, then always remember to do the following command after installing any library:<br />
* <code>sudo ldconfig</code><br />
<br />
==== Installing GNU Radio ====<br />
<br />
* <code>cd</code><br />
* <code>git clone https://github.com/gnuradio/gnuradio.git</code><br />
* <code>cd gnuradio</code><br />
<b>Note:</b> If you want to build the <code>maint-3.10</code> or <code>maint-3.9</code> branch rather than the default <code>main</code> branch, enter:<br />
<code>git checkout maint-3.10</code> and then<br><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
<b>Note:</b> In the following command, you can add <code>-DCMAKE_INSTALL_PREFIX=XXX</code> to install GNU Radio into the PREFIX <code>XXX</code>; if not specified, then the PREFIX is <code>/usr/local</code>. See other CMake options in [[#Common_cmake_flags|Common cmake flags]].<br><br />
* <code>cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../</code><br />
* <code>make -j3</code> (e.g. if you want to use 3 CPU cores during the build. To use 8 do -j8, to use 1, leave out the -j flag.)<br />
<b>Note:</b> In the following command, it is very possible that not all tests pass. Generally any error is a sign of a missing dependency such as the Python interface to ZMQ or NumPy or SciPy, none of which are required for building GNU Radio but are required for testing.<br />
* <code>make test</code><br />
* <code>sudo make install</code><br />
If you're running Linux, then always remember to do the following command after installing any library:<br />
* <code>sudo ldconfig</code><br />
As an optional step to increase performance, we recommend running the following, although it can take 10-15 minutes and you can always do it later:<br />
* <code>volk_profile</code><br />
If you encounter "Cannot import gnuradio" error, then go to [[ModuleNotFoundError#B._Finding_the_Python_library|Finding the Python library]] to set your PYTHONPATH and LD_LIBRARY_PATH.<br><b>After setting these environment variables, you need to do</b> <code>sudo ldconfig</code> <b>again</b> for the Linux dynamic library loader to find the just-installed GNU Radio libraries.<br><br />
If you have installed in a custom path with <code>-DCMAKE_INSTALL_PREFIX=XXX</code>, you will need to add that path to $PATH in order to find gnuradio-companion.<br />
<br />
=== For GNU Radio 3.8 or Earlier ===<br />
<br />
==== Installing Dependencies ====<br />
<br />
Refer to [[InstallingGR#Linux|this page for your specific Linux distro]] to find how to install dependencies. For example, on Ubuntu 20.04 [[UbuntuInstall#Focal_Fossa_.2820.04.29_through_Impish_Indri_.2821.10.29|use this command]].<br />
<br />
==== Installing GNU Radio ====<br />
For this example, we will start in the home directory; you can, of course, use any directory you wish and the results will be the same.<br />
<br />
* <code>cd</code><br />
* <code>git clone https://github.com/gnuradio/gnuradio.git</code><br />
* <code>cd gnuradio</code><br />
<br />
<b>Note:</b> In the following command, change <code>maint-3.8</code> to some other branch or tag if you want to build a different version of GNU Radio; see [https://github.com/gnuradio/gnuradio/tags tags] for tagged releases including pre-releases ("rc"). For [https://github.com/gnuradio/gnuradio/branches branches], it's generally wise to stick with "master" (the default after cloning), and, currently: <code>maint-3.7</code> or <code>maint-3.8</code>. Here we checkout the <code>maint-3.8</code> branch, which contains the latest 3.8 release plus any fixes or augmentations to it that will be in the next 3.8 release.<br />
<br />
* <code>git checkout maint-3.8</code><br />
* <code>git submodule update --init --recursive</code><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
<br />
<b>Note:</b> In the following command, you can add <code>-DCMAKE_INSTALL_PREFIX=XXX</code> to install GNU Radio into the PREFIX <code>XXX</code>; if not specified, then the PREFIX is <code>/usr/local</code>. See other CMake options in [[#Common_cmake_flags|Common cmake flags]].<br><br />
<br />
* <code>cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../</code><br />
* <code>make -j3</code> (e.g. if you want to use 3 CPU cores during the build. To use 8 do -j8, to use 1 leave out the -j flag.)<br />
* <code>sudo make install</code><br />
<br />
If you're running Linux, then always remember to do the following command after installing any library:<br />
* <code>sudo ldconfig</code><br />
<br />
Go to [[ModuleNotFoundError#B._Finding_the_Python_library|Finding the Python library]] to set your PYTHONPATH and LD_LIBRARY_PATH.<br><b>After setting these environment variables, you need to do</b> <code>sudo ldconfig</code> <b>again</b> for the Linux dynamic library loader to find the just-installed GNU Radio libraries.<br><br />
If you have installed in a custom path with <code>-DCMAKE_INSTALL_PREFIX=XXX</code>, you will need to add that path to $PATH in order to find gnuradio-companion.<br />
<br />
==== For Ubuntu 18.04 ====<br />
<br />
An easy way to install GNU Radio 3.8 on many Ubuntu systems is to use the following commands (note that this skips the setup for UHD hardware):<br />
<br />
* <code>sudo apt install git cmake g++ libboost-all-dev libgmp-dev swig python3-numpy python3-mako python3-sphinx python3-lxml doxygen libfftw3-dev libsdl1.2-dev libgsl-dev libqwt-qt5-dev libqt5opengl5-dev python3-pyqt5 liblog4cpp5-dev libzmq3-dev python3-yaml python3-click python3-click-plugins python3-zmq python3-scipy python3-pip python3-gi-cairo</code><br />
* <code>pip3 install git+https://github.com/pyqtgraph/pyqtgraph@develop</code><br />
* <code>pip3 install numpy scipy</code><br />
* <code>echo 'export PYTHONPATH=/usr/local/lib/python3/dist-packages:usr/local/lib/python2.7/site-packages:$PYTHONPATH' >> ~/.bashrc</code><br />
* <code>echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.bashrc</code><br />
* <code>echo 'export PYTHONPATH=/usr/local/lib/python3/dist-packages:usr/local/lib/python2.7/site-packages:$PYTHONPATH' >> ~/.profile</code><br />
* <code>echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.profile</code><br />
* <code>cd ~/</code><br />
* <code>git clone --recursive https://github.com/gnuradio/gnuradio</code><br />
* <code>cd gnuradio</code><br />
* <code>git checkout maint-3.8</code><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
* <code>git pull --recurse-submodules=on</code><br />
* <code>git submodule update --init</code><br />
* <code>cmake -DENABLE_GR_UHD=OFF ..</code><br />
* <code>make -j $(nproc --all)</code><br />
* <code>sudo make install</code><br />
* <code>sudo ldconfig</code><br />
<br />
Once this is done, reboot your computer and GNU Radio should be all set for you.<br />
<br />
== Common cmake flags ==<br />
<br />
* <code>-DENABLE_GR_XXX=ON</code> This enables (or disables for =OFF) the GNU Radio component named XXX. You might not need all of them, and this way, you can compile quicker.<br />
* <code>-DCMAKE_INSTALL_PREFIX=XXX</code> Install your stuff to XXX.<br />
* <code>-DCMAKE_BUILD_TYPE=Debug</code> This causes gcc to add debug symbols to all binaries. Useful for debugging (otherwise, it decreases efficiency!)<br />
* <code>-DPYTHON_EXECUTABLE=/usr/bin/python{2,3}</code> This selects the Python version and executable to be used during build time and will determine which Python libraries will be used for building the Python bindings.<br />
<p>For a list of additional cmake flags, as well as minimum versions of dependencies, see [https://www.gnuradio.org/doc/doxygen/build_guide.html]</p><br />
<br />
= Using PyBOMBS =<br />
<br />
PyBOMBS used to be the go-to method for building GNU Radio, UHD, and various Out of Tree (OOT) modules from source and then installing them into an isolated directory rather than system-wide, not unlike a Python virtualenv. We are no longer including PyBOMBS as a recommended method of installing GNU Radio, unless you want to play around with old versions (e.g. GR 3.7, 3.8, and OOTs of matching version). The PyBOMBS documentation is in the PyBOMBS [https://github.com/gnuradio/pybombs#pybombs README].<br />
<br />
= VMs and Live Images =<br />
Over the years a number of Live Images and VMs have been created. There are currently no official versions but here are some current options:<br />
*[https://github.com/bastibl/instant-gnuradio Instant GNU Radio] A customizable, programmatically generated VM and live environment for GNU Radio. <br />
*[[UbuntuVM]] An Ubuntu 20.04 virtual machine image with GNU Radio 3.8.2.0, Fosphor, GQRX, and several other useful pieces of software. (Created using Instant GNU Radio)<br />
<br />
= OK, it's installed, what now? =<br />
<br />
If the installation worked without any trouble, you're ready to use GNU Radio! If you have no idea how to do that, the best place to start is with the [[Tutorials]].<br />
<br />
Optionally, you may run <code>volk_profile</code> on your terminal to help libvolk to determine the optimal kernels (may speed up GNU Radio). <br />
<br />
[[Category:Installation]]<br />
[[Category:Guide]]</div>777archttps://wiki.gnuradio.org/index.php?title=InstallingGR&diff=12179InstallingGR2022-04-08T05:29:32Z<p>777arc: </p>
<hr />
<div><div style="float:right"><br />
{{Template:BeginnerTutorials}}<br />
</div><br />
<br />
{| class="wikitable"<br />
|+ Install Quickstart<br>(Refer to the rest of this page for more OS and installation options)<br />
! Linux<br />
||<br />
# [https://releases.ubuntu.com/20.04/ Install Ubuntu 20.04] (either as a VM or natively)<br />
# <code>sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.9</code><br />
# <code>sudo apt-get update</code><br />
# <code>sudo apt-get install gnuradio</code><br />
||v3.9.5<br />
|-<br />
! Windows<br />
||<br />
# Install the latest [https://github.com/ryanvolz/radioconda/releases Radioconda installer]<br />
# Launch "GNU Radio Companion" from the Start menu<br />
||v3.10.0<br />
|-<br />
! macOS<br />
||<br />
# [https://brew.sh/ Install Homebrew]<br />
# <code>brew install gnuradio</code><br />
# Until it's updated to 3.9.4+ you'll have to edit gnuradio/grc/gui/DrawingArea.py and [https://github.com/gnuradio/gnuradio/pull/5111/files make this change]<br />
||v3.9.3<br />
|}<br />
<br />
<br />
= Types of Installation Methods =<br />
<br />
The recommended way to install GNU Radio on most platforms is using already available binary packages. Find your platform below in the [[#From_Binaries|From Binaries]] section for instructions on how to get GNU Radio through your regular package manager (e.g. [[#Ubuntu_PPA_Installation|Ubuntu PPA Installation]]), or visit the [[CondaInstall|Conda Installation]] page for instructions on how to use the Conda package manager to install GNU Radio on any Linux distribution, macOS, or Windows. For some platforms there are no binaries provided by available package managers or the GNU Radio project. In these cases please contact the maintainer of the package manager or the GNU Radio project to find a sensible way to provide binaries for your platform.<br />
<br />
In addition to using binaries, GNU Radio can be installed:<br />
<br />
# '''[[#From_Source|From source]]''' (for those who want full control)<br />
# '''[[#Using_PyBOMBS|Using PyBOMBS]]''' (for those who want it built from source and/or installed to a specific directory using a script)<br />
<br />
= From Binaries =<br />
<br />
== Linux ==<br />
<br />
Most distributions contain a package named <code>gnuradio</code> or similar in their standard repositories. For most use cases it is enough to install this package and start developing.<br />
<br />
The development of GNU Radio can be fast-paced, and binaries provided by your distribution may be outdated. '''Do check if the version you're installing is up to date! Sometimes old versions are not updated in the packaging systems.''' If you find a bug in a older GNU Radio version, please check if the bug still exists in the newer version of GNU Radio before filing a new issue.<br />
<br />
If the version shipped in your distribution is outdated please contact the corresponding maintainer to update it in the packaging system.<br />
<br />
Here are examples of how to install GNU Radio in various Linux distributions. <b>Click the link under &quot;Distribution&quot; for how to install dependencies.</b><br />
<br />
{|class="wikitable" style="margin: auto; width: 90%;"<br />
!scope="col"|Distribution<br />
!scope="col"|Command<br />
|-<br />
| [[UbuntuInstall|Debian/Ubuntu and derivates]]<br />
| <pre># apt install gnuradio</pre><br />
|-<br />
| [[FedoraInstall|Fedora]]<br />
| <pre># dnf install gnuradio</pre><br />
|-<br />
| RHEL/CentOS/Rocky Linux/AlmaLinux<br />
| <pre># yum install gnuradio</pre><br />
|-<br />
| [[ArchInstall|Archlinux]]<br />
| <pre># pacman -S gnuradio</pre><br />
|-<br />
| [[GentooInstall|Gentoo Linux]]<br />
| <pre># emerge net-wireless/gnuradio</pre><br />
|-<br />
| [[SuseInstall|Suse Linux]]<br />
| <br />
|-<br />
| [[InstallingGRFromSource_on_Raspberry_Pi|Raspberry Pi OS]]<br />
| <br />
|-<br />
|}<br />
<br />
On other distributions, simply use the appropriate package management command to install the <code>gnuradio</code> package and then please add it to this list. If you need newer versions or have a different platform please contact the package maintainer of your distribution or raise your issue on the mailing list.<br />
<br />
=== Ubuntu PPA Installation ===<br />
For Ubuntu, the latest builds (both released and pulled from master branch) are maintained as PPAs on [https://launchpad.net/~gnuradio launchpad]. Be sure to uninstall any previously installed versions of gnuradio first.<br />
<br />
To access the current released version (3.10), add the gnuradio/gnuradio-releases ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases</pre><br />
<br />
To access the 3.9 released version, add the gnuradio/gnuradio-releases-3.9 ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.9</pre><br />
<br />
To access the 3.8 released version, add the gnuradio/gnuradio-releases-3.8 ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.8</pre><br />
<br />
To access the 3.7 released version (legacy), add the gnuradio/gnuradio-releases-3.7 ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.7</pre><br />
<br />
Then, update the apt sources, and install gnuradio<br />
<pre>$ sudo apt-get update</pre><br />
<pre>$ sudo apt install gnuradio</pre><br />
<br />
'''Attention:''' Do '''NOT''' try to install further packages like `gr-osmosdr` via Ubuntu's package management (i.e. using "apt"). Ubuntu will try to install a potentially incompatible version and your system will be in an undefined state.<br />
<br />
<br />
'''Note on 3.10 packaging dependency'''<br />
For some distributions you may need to install the python module 'packaging' using pip (which may also need to be installed).<br />
<br />
$ sudo apt install python3-pip<br />
$ pip install packaging<br />
<br />
==== Modtool on Ubuntu ====<br />
NOTE: On released builds for Ubuntu 18.04 (bionic), there is an issue using gr_modtool after GNU Radio has been installed from the PPA. This is due to byte-compiled code that remains in the modtool templates after installation. To work around this issue:<br />
<br />
<pre>$ cd /usr/share/gnuradio/modtool/templates/gr-newmod<br />
$ sudo py3clean .</pre><br />
<br />
This issue does not appear for Ubuntu 19 and later packages<br />
<br />
=== Fedora COPR Installation ===<br />
<br />
**NOTE: FEDORA COPR not currently maintained**<br />
<br />
Packages are available for Fedora 29, 30, 31 hosted under COPR:<br />
<br />
https://copr.fedorainfracloud.org/coprs/gnuradio/<br />
<br />
1. Add the repository:<br />
<br />
-- For the latest released version:<br />
<pre>$ sudo dnf copr enable gnuradio/gnuradio-releases </pre><br />
-- For the latest pull from git master:<br />
<pre>$ sudo dnf copr enable gnuradio/gnuradio-master </pre><br />
<br />
2. Install GNU Radio<br />
<pre>$ sudo dnf install gnuradio </pre><br />
<br />
== Windows ==<br />
<br />
See the [[CondaInstall|Conda install guide]] or [https://github.com/ryanvolz/radioconda radioconda] to install GNU Radio 3.8 or newer on Windows.<br /><br />
<br />
If you need to install GNU Radio from source refer to the [[WindowsInstall|Windows install guide]].<br />
<br />
'''Note''': GNU Radio support on Windows is improving significantly but remains less tested and there are known problems and even significant bugs which affect regular usage of GNU Radio Companion. Please report bugs on the [https://github.com/gnuradio/gnuradio/issues GitHub Issues page] and if you have Windows development experience please consider investigating some of the [https://github.com/gnuradio/gnuradio/issues?q=is%3Aopen+is%3Aissue+label%3AWindows known issues].<br />
<br />
== Mac OS X ==<br />
<br />
Refer to the [[MacInstall|Mac OS X install guide page]].<br />
<br />
= From Source =<br />
<br />
Binary installation should be sufficient for most users, and certainly for anyone who is new to GNU Radio. However, if you have special requirements, want the latest version, or the binary packages are not working for you, you may want to install GNU Radio from source.<br />
<br />
=== Notes ===<br />
<br />
* By default GNU Radio will be installed in the <code>/usr/local</code> directory. See notes about [[InstallingGR#Common_cmake_flags|-DCMAKE_INSTALL_PREFIX]] to install it elsewhere.<br />
* Running and developing out-of-tree modules does not require GNU Radio to be installed from source. <br />
* <b>If you want to use GNU Radio with a USRP, you FIRST must clone and install UHD</b>. See the [https://kb.ettus.com/Building_and_Installing_the_USRP_Open-Source_Toolchain_(UHD_and_GNU_Radio)_on_Linux UHD Installation Page] for more info, <b>OR</b> follow the instructions in [[InstallingGRFromSource_on_Raspberry_Pi#Load_prerequisites|Install UHD from source]].<br />
* To install on a Raspberry Pi, see [[InstallingGRFromSource on Raspberry Pi]].<br />
* To build from source from within a conda environment, see [[CondaInstall#Building GNU Radio from source within a conda environment|the conda install guide]].<br />
<br />
=== For GNU Radio 3.10, 3.9, and Main Branch ===<br />
<br />
This section describes how to install GNU Radio 3.10, 3.9, and the Main branch from source code.<br />
<br />
==== Installing Dependencies ====<br />
<br />
Refer to [[InstallingGR#Linux|this page for your specific Linux distro]] to find how to install dependencies. For example, on Ubuntu 20.04 [[UbuntuInstall#Focal_Fossa_.2820.04.29_through_Impish_Indri_.2821.10.29|use this command]].<br />
<br />
==== Installing Volk ====<br />
<br />
Since Volk is no longer considered as a submodule of GNU Radio (GNU Radio commit #80c04479da962d048d41165081b026aafdaa0316),<br> you <b>MUST FIRST</b> install Volk, and then install GNU Radio. <br />
<br />
The basic idea is the same, but instead of building Volk along with GNU Radio, you need to clone and build it separately. For this example, we will start in the home directory. You can, of course, use any directory you wish and the results will be the same.<br />
<br />
* <code>cd</code><br />
* <code>git clone --recursive https://github.com/gnuradio/volk.git</code><br />
* <code>cd volk</code><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
<b>Note:</b> In the following command, you can add <code>-DCMAKE_INSTALL_PREFIX=XXX</code> to install Volk into the PREFIX <code>XXX</code>; if not specified, then the PREFIX is <code>/usr/local</code>. See other CMake options in [[#Common_cmake_flags|Common cmake flags]].<br><br />
* <code>cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../</code><br />
* <code>make</code><br />
* <code>make test</code><br />
* <code>sudo make install</code><br />
<br />
If you're running Linux, then always remember to do the following command after installing any library:<br />
* <code>sudo ldconfig</code><br />
<br />
==== Installing GNU Radio ====<br />
<br />
* <code>cd</code><br />
* <code>git clone https://github.com/gnuradio/gnuradio.git</code><br />
* <code>cd gnuradio</code><br />
<b>Note:</b> If you want to build the <code>maint-3.10</code> or <code>maint-3.9</code> branch rather than the default <code>main</code> branch, enter:<br />
<code>git checkout maint-3.10</code> and then<br><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
<b>Note:</b> In the following command, you can add <code>-DCMAKE_INSTALL_PREFIX=XXX</code> to install GNU Radio into the PREFIX <code>XXX</code>; if not specified, then the PREFIX is <code>/usr/local</code>. See other CMake options in [[#Common_cmake_flags|Common cmake flags]].<br><br />
* <code>cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../</code><br />
* <code>make -j3</code> (e.g. if you want to use 3 CPU cores during the build. To use 8 do -j8, to use 1, leave out the -j flag.)<br />
<b>Note:</b> In the following command, it is very possible that not all tests pass. Generally any error is a sign of a missing dependency such as the Python interface to ZMQ or NumPy or SciPy, none of which are required for building GNU Radio but are required for testing.<br />
* <code>make test</code><br />
* <code>sudo make install</code><br />
If you're running Linux, then always remember to do the following command after installing any library:<br />
* <code>sudo ldconfig</code><br />
As an optional step to increase performance, we recommend running the following, although it can take 10-15 minutes and you can always do it later:<br />
* <code>volk_profile</code><br />
If you encounter "Cannot import gnuradio" error, then go to [[ModuleNotFoundError#B._Finding_the_Python_library|Finding the Python library]] to set your PYTHONPATH and LD_LIBRARY_PATH.<br><b>After setting these environment variables, you need to do</b> <code>sudo ldconfig</code> <b>again</b> for the Linux dynamic library loader to find the just-installed GNU Radio libraries.<br><br />
If you have installed in a custom path with <code>-DCMAKE_INSTALL_PREFIX=XXX</code>, you will need to add that path to $PATH in order to find gnuradio-companion.<br />
<br />
=== For GNU Radio 3.8 or Earlier ===<br />
<br />
==== Installing Dependencies ====<br />
<br />
Refer to [[InstallingGR#Linux|this page for your specific Linux distro]] to find how to install dependencies. For example, on Ubuntu 20.04 [[UbuntuInstall#Focal_Fossa_.2820.04.29_through_Impish_Indri_.2821.10.29|use this command]].<br />
<br />
==== Installing GNU Radio ====<br />
For this example, we will start in the home directory; you can, of course, use any directory you wish and the results will be the same.<br />
<br />
* <code>cd</code><br />
* <code>git clone https://github.com/gnuradio/gnuradio.git</code><br />
* <code>cd gnuradio</code><br />
<br />
<b>Note:</b> In the following command, change <code>maint-3.8</code> to some other branch or tag if you want to build a different version of GNU Radio; see [https://github.com/gnuradio/gnuradio/tags tags] for tagged releases including pre-releases ("rc"). For [https://github.com/gnuradio/gnuradio/branches branches], it's generally wise to stick with "master" (the default after cloning), and, currently: <code>maint-3.7</code> or <code>maint-3.8</code>. Here we checkout the <code>maint-3.8</code> branch, which contains the latest 3.8 release plus any fixes or augmentations to it that will be in the next 3.8 release.<br />
<br />
* <code>git checkout maint-3.8</code><br />
* <code>git submodule update --init --recursive</code><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
<br />
<b>Note:</b> In the following command, you can add <code>-DCMAKE_INSTALL_PREFIX=XXX</code> to install GNU Radio into the PREFIX <code>XXX</code>; if not specified, then the PREFIX is <code>/usr/local</code>. See other CMake options in [[#Common_cmake_flags|Common cmake flags]].<br><br />
<br />
* <code>cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../</code><br />
* <code>make -j3</code> (e.g. if you want to use 3 CPU cores during the build. To use 8 do -j8, to use 1 leave out the -j flag.)<br />
* <code>sudo make install</code><br />
<br />
If you're running Linux, then always remember to do the following command after installing any library:<br />
* <code>sudo ldconfig</code><br />
<br />
Go to [[ModuleNotFoundError#B._Finding_the_Python_library|Finding the Python library]] to set your PYTHONPATH and LD_LIBRARY_PATH.<br><b>After setting these environment variables, you need to do</b> <code>sudo ldconfig</code> <b>again</b> for the Linux dynamic library loader to find the just-installed GNU Radio libraries.<br><br />
If you have installed in a custom path with <code>-DCMAKE_INSTALL_PREFIX=XXX</code>, you will need to add that path to $PATH in order to find gnuradio-companion.<br />
<br />
==== For Ubuntu 18.04 ====<br />
<br />
An easy way to install GNU Radio 3.8 on many Ubuntu systems is to use the following commands (note that this skips the setup for UHD hardware):<br />
<br />
* <code>sudo apt install git cmake g++ libboost-all-dev libgmp-dev swig python3-numpy python3-mako python3-sphinx python3-lxml doxygen libfftw3-dev libsdl1.2-dev libgsl-dev libqwt-qt5-dev libqt5opengl5-dev python3-pyqt5 liblog4cpp5-dev libzmq3-dev python3-yaml python3-click python3-click-plugins python3-zmq python3-scipy python3-pip python3-gi-cairo</code><br />
* <code>pip3 install git+https://github.com/pyqtgraph/pyqtgraph@develop</code><br />
* <code>pip3 install numpy scipy</code><br />
* <code>echo 'export PYTHONPATH=/usr/local/lib/python3/dist-packages:usr/local/lib/python2.7/site-packages:$PYTHONPATH' >> ~/.bashrc</code><br />
* <code>echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.bashrc</code><br />
* <code>echo 'export PYTHONPATH=/usr/local/lib/python3/dist-packages:usr/local/lib/python2.7/site-packages:$PYTHONPATH' >> ~/.profile</code><br />
* <code>echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.profile</code><br />
* <code>cd ~/</code><br />
* <code>git clone --recursive https://github.com/gnuradio/gnuradio</code><br />
* <code>cd gnuradio</code><br />
* <code>git checkout maint-3.8</code><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
* <code>git pull --recurse-submodules=on</code><br />
* <code>git submodule update --init</code><br />
* <code>cmake -DENABLE_GR_UHD=OFF ..</code><br />
* <code>make -j $(nproc --all)</code><br />
* <code>sudo make install</code><br />
* <code>sudo ldconfig</code><br />
<br />
Once this is done, reboot your computer and GNU Radio should be all set for you.<br />
<br />
== Common cmake flags ==<br />
<br />
* <code>-DENABLE_GR_XXX=ON</code> This enables (or disables for =OFF) the GNU Radio component named XXX. You might not need all of them, and this way, you can compile quicker.<br />
* <code>-DCMAKE_INSTALL_PREFIX=XXX</code> Install your stuff to XXX.<br />
* <code>-DCMAKE_BUILD_TYPE=Debug</code> This causes gcc to add debug symbols to all binaries. Useful for debugging (otherwise, it decreases efficiency!)<br />
* <code>-DPYTHON_EXECUTABLE=/usr/bin/python{2,3}</code> This selects the Python version and executable to be used during build time and will determine which Python libraries will be used for building the Python bindings.<br />
<p>For a list of additional cmake flags, as well as minimum versions of dependencies, see [https://www.gnuradio.org/doc/doxygen/build_guide.html]</p><br />
<br />
= Using PyBOMBS =<br />
<br />
PyBOMBS used to be the go-to method for building GNU Radio, UHD, and various Out of Tree (OOT) modules from source and then installing them into an isolated directory rather than system-wide, not unlike a Python virtualenv. We are no longer including PyBOMBS as a recommended method of installing GNU Radio, unless you want to play around with old versions (e.g. GR 3.7, 3.8, and OOTs of matching version). The PyBOMBS documentation is in the PyBOMBS [https://github.com/gnuradio/pybombs#pybombs README].<br />
<br />
= VMs and Live Images =<br />
Over the years a number of Live Images and VMs have been created. There are currently no official versions but here are some current options:<br />
*[https://github.com/bastibl/instant-gnuradio Instant GNU Radio] A customizable, programmatically generated VM and live environment for GNU Radio. <br />
*[[UbuntuVM]] An Ubuntu 20.04 virtual machine image with GNU Radio 3.8.2.0, Fosphor, GQRX, and several other useful pieces of software. (Created using Instant GNU Radio)<br />
<br />
= OK, it's installed, what now? =<br />
<br />
If the installation worked without any trouble, you're ready to use GNU Radio! If you have no idea how to do that, the best place to start is with the [[Tutorials]].<br />
<br />
Optionally, you may run <code>volk_profile</code> on your terminal to help libvolk to determine the optimal kernels (may speed up GNU Radio). <br />
<br />
[[Category:Installation]]<br />
[[Category:Guide]]</div>777archttps://wiki.gnuradio.org/index.php?title=InstallingGR&diff=12178InstallingGR2022-04-08T05:29:13Z<p>777arc: </p>
<hr />
<div><div style="float:right"><br />
{{Template:BeginnerTutorials}}<br />
</div><br />
<br />
{| class="wikitable"<br />
|+ Install Quickstart<br>(Refer to the rest of this page for more OS and installation options)<br />
! Linux<br />
||<br />
# [https://releases.ubuntu.com/20.04/ Install Ubuntu 20.04] (either as a VM or natively)<br />
# <code>sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.9</code><br />
# <code>sudo apt-get update</code><br />
# <code>sudo apt-get install gnuradio</code><br />
||v3.9.5<br />
|-<br />
! Windows<br />
||<br />
# Install the latest [https://github.com/ryanvolz/radioconda/releases Radioconda installer]<br />
# Launch "GNU Radio Companion" from the Start menu<br />
||v3.10.0<br />
|-<br />
! macOS<br />
||<br />
# [https://brew.sh/ Install Homebrew]<br />
# <code>brew install gnuradio</code><br />
# [https://github.com/gnuradio/gnuradio/pull/5111/files Until it's updated to 3.9.4+ you'll have to edit gnuradio/grc/gui/DrawingArea.py and make this change]<br />
||v3.9.3<br />
|}<br />
<br />
<br />
= Types of Installation Methods =<br />
<br />
The recommended way to install GNU Radio on most platforms is using already available binary packages. Find your platform below in the [[#From_Binaries|From Binaries]] section for instructions on how to get GNU Radio through your regular package manager (e.g. [[#Ubuntu_PPA_Installation|Ubuntu PPA Installation]]), or visit the [[CondaInstall|Conda Installation]] page for instructions on how to use the Conda package manager to install GNU Radio on any Linux distribution, macOS, or Windows. For some platforms there are no binaries provided by available package managers or the GNU Radio project. In these cases please contact the maintainer of the package manager or the GNU Radio project to find a sensible way to provide binaries for your platform.<br />
<br />
In addition to using binaries, GNU Radio can be installed:<br />
<br />
# '''[[#From_Source|From source]]''' (for those who want full control)<br />
# '''[[#Using_PyBOMBS|Using PyBOMBS]]''' (for those who want it built from source and/or installed to a specific directory using a script)<br />
<br />
= From Binaries =<br />
<br />
== Linux ==<br />
<br />
Most distributions contain a package named <code>gnuradio</code> or similar in their standard repositories. For most use cases it is enough to install this package and start developing.<br />
<br />
The development of GNU Radio can be fast-paced, and binaries provided by your distribution may be outdated. '''Do check if the version you're installing is up to date! Sometimes old versions are not updated in the packaging systems.''' If you find a bug in a older GNU Radio version, please check if the bug still exists in the newer version of GNU Radio before filing a new issue.<br />
<br />
If the version shipped in your distribution is outdated please contact the corresponding maintainer to update it in the packaging system.<br />
<br />
Here are examples of how to install GNU Radio in various Linux distributions. <b>Click the link under &quot;Distribution&quot; for how to install dependencies.</b><br />
<br />
{|class="wikitable" style="margin: auto; width: 90%;"<br />
!scope="col"|Distribution<br />
!scope="col"|Command<br />
|-<br />
| [[UbuntuInstall|Debian/Ubuntu and derivates]]<br />
| <pre># apt install gnuradio</pre><br />
|-<br />
| [[FedoraInstall|Fedora]]<br />
| <pre># dnf install gnuradio</pre><br />
|-<br />
| RHEL/CentOS/Rocky Linux/AlmaLinux<br />
| <pre># yum install gnuradio</pre><br />
|-<br />
| [[ArchInstall|Archlinux]]<br />
| <pre># pacman -S gnuradio</pre><br />
|-<br />
| [[GentooInstall|Gentoo Linux]]<br />
| <pre># emerge net-wireless/gnuradio</pre><br />
|-<br />
| [[SuseInstall|Suse Linux]]<br />
| <br />
|-<br />
| [[InstallingGRFromSource_on_Raspberry_Pi|Raspberry Pi OS]]<br />
| <br />
|-<br />
|}<br />
<br />
On other distributions, simply use the appropriate package management command to install the <code>gnuradio</code> package and then please add it to this list. If you need newer versions or have a different platform please contact the package maintainer of your distribution or raise your issue on the mailing list.<br />
<br />
=== Ubuntu PPA Installation ===<br />
For Ubuntu, the latest builds (both released and pulled from master branch) are maintained as PPAs on [https://launchpad.net/~gnuradio launchpad]. Be sure to uninstall any previously installed versions of gnuradio first.<br />
<br />
To access the current released version (3.10), add the gnuradio/gnuradio-releases ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases</pre><br />
<br />
To access the 3.9 released version, add the gnuradio/gnuradio-releases-3.9 ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.9</pre><br />
<br />
To access the 3.8 released version, add the gnuradio/gnuradio-releases-3.8 ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.8</pre><br />
<br />
To access the 3.7 released version (legacy), add the gnuradio/gnuradio-releases-3.7 ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.7</pre><br />
<br />
Then, update the apt sources, and install gnuradio<br />
<pre>$ sudo apt-get update</pre><br />
<pre>$ sudo apt install gnuradio</pre><br />
<br />
'''Attention:''' Do '''NOT''' try to install further packages like `gr-osmosdr` via Ubuntu's package management (i.e. using "apt"). Ubuntu will try to install a potentially incompatible version and your system will be in an undefined state.<br />
<br />
<br />
'''Note on 3.10 packaging dependency'''<br />
For some distributions you may need to install the python module 'packaging' using pip (which may also need to be installed).<br />
<br />
$ sudo apt install python3-pip<br />
$ pip install packaging<br />
<br />
==== Modtool on Ubuntu ====<br />
NOTE: On released builds for Ubuntu 18.04 (bionic), there is an issue using gr_modtool after GNU Radio has been installed from the PPA. This is due to byte-compiled code that remains in the modtool templates after installation. To work around this issue:<br />
<br />
<pre>$ cd /usr/share/gnuradio/modtool/templates/gr-newmod<br />
$ sudo py3clean .</pre><br />
<br />
This issue does not appear for Ubuntu 19 and later packages<br />
<br />
=== Fedora COPR Installation ===<br />
<br />
**NOTE: FEDORA COPR not currently maintained**<br />
<br />
Packages are available for Fedora 29, 30, 31 hosted under COPR:<br />
<br />
https://copr.fedorainfracloud.org/coprs/gnuradio/<br />
<br />
1. Add the repository:<br />
<br />
-- For the latest released version:<br />
<pre>$ sudo dnf copr enable gnuradio/gnuradio-releases </pre><br />
-- For the latest pull from git master:<br />
<pre>$ sudo dnf copr enable gnuradio/gnuradio-master </pre><br />
<br />
2. Install GNU Radio<br />
<pre>$ sudo dnf install gnuradio </pre><br />
<br />
== Windows ==<br />
<br />
See the [[CondaInstall|Conda install guide]] or [https://github.com/ryanvolz/radioconda radioconda] to install GNU Radio 3.8 or newer on Windows.<br /><br />
<br />
If you need to install GNU Radio from source refer to the [[WindowsInstall|Windows install guide]].<br />
<br />
'''Note''': GNU Radio support on Windows is improving significantly but remains less tested and there are known problems and even significant bugs which affect regular usage of GNU Radio Companion. Please report bugs on the [https://github.com/gnuradio/gnuradio/issues GitHub Issues page] and if you have Windows development experience please consider investigating some of the [https://github.com/gnuradio/gnuradio/issues?q=is%3Aopen+is%3Aissue+label%3AWindows known issues].<br />
<br />
== Mac OS X ==<br />
<br />
Refer to the [[MacInstall|Mac OS X install guide page]].<br />
<br />
= From Source =<br />
<br />
Binary installation should be sufficient for most users, and certainly for anyone who is new to GNU Radio. However, if you have special requirements, want the latest version, or the binary packages are not working for you, you may want to install GNU Radio from source.<br />
<br />
=== Notes ===<br />
<br />
* By default GNU Radio will be installed in the <code>/usr/local</code> directory. See notes about [[InstallingGR#Common_cmake_flags|-DCMAKE_INSTALL_PREFIX]] to install it elsewhere.<br />
* Running and developing out-of-tree modules does not require GNU Radio to be installed from source. <br />
* <b>If you want to use GNU Radio with a USRP, you FIRST must clone and install UHD</b>. See the [https://kb.ettus.com/Building_and_Installing_the_USRP_Open-Source_Toolchain_(UHD_and_GNU_Radio)_on_Linux UHD Installation Page] for more info, <b>OR</b> follow the instructions in [[InstallingGRFromSource_on_Raspberry_Pi#Load_prerequisites|Install UHD from source]].<br />
* To install on a Raspberry Pi, see [[InstallingGRFromSource on Raspberry Pi]].<br />
* To build from source from within a conda environment, see [[CondaInstall#Building GNU Radio from source within a conda environment|the conda install guide]].<br />
<br />
=== For GNU Radio 3.10, 3.9, and Main Branch ===<br />
<br />
This section describes how to install GNU Radio 3.10, 3.9, and the Main branch from source code.<br />
<br />
==== Installing Dependencies ====<br />
<br />
Refer to [[InstallingGR#Linux|this page for your specific Linux distro]] to find how to install dependencies. For example, on Ubuntu 20.04 [[UbuntuInstall#Focal_Fossa_.2820.04.29_through_Impish_Indri_.2821.10.29|use this command]].<br />
<br />
==== Installing Volk ====<br />
<br />
Since Volk is no longer considered as a submodule of GNU Radio (GNU Radio commit #80c04479da962d048d41165081b026aafdaa0316),<br> you <b>MUST FIRST</b> install Volk, and then install GNU Radio. <br />
<br />
The basic idea is the same, but instead of building Volk along with GNU Radio, you need to clone and build it separately. For this example, we will start in the home directory. You can, of course, use any directory you wish and the results will be the same.<br />
<br />
* <code>cd</code><br />
* <code>git clone --recursive https://github.com/gnuradio/volk.git</code><br />
* <code>cd volk</code><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
<b>Note:</b> In the following command, you can add <code>-DCMAKE_INSTALL_PREFIX=XXX</code> to install Volk into the PREFIX <code>XXX</code>; if not specified, then the PREFIX is <code>/usr/local</code>. See other CMake options in [[#Common_cmake_flags|Common cmake flags]].<br><br />
* <code>cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../</code><br />
* <code>make</code><br />
* <code>make test</code><br />
* <code>sudo make install</code><br />
<br />
If you're running Linux, then always remember to do the following command after installing any library:<br />
* <code>sudo ldconfig</code><br />
<br />
==== Installing GNU Radio ====<br />
<br />
* <code>cd</code><br />
* <code>git clone https://github.com/gnuradio/gnuradio.git</code><br />
* <code>cd gnuradio</code><br />
<b>Note:</b> If you want to build the <code>maint-3.10</code> or <code>maint-3.9</code> branch rather than the default <code>main</code> branch, enter:<br />
<code>git checkout maint-3.10</code> and then<br><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
<b>Note:</b> In the following command, you can add <code>-DCMAKE_INSTALL_PREFIX=XXX</code> to install GNU Radio into the PREFIX <code>XXX</code>; if not specified, then the PREFIX is <code>/usr/local</code>. See other CMake options in [[#Common_cmake_flags|Common cmake flags]].<br><br />
* <code>cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../</code><br />
* <code>make -j3</code> (e.g. if you want to use 3 CPU cores during the build. To use 8 do -j8, to use 1, leave out the -j flag.)<br />
<b>Note:</b> In the following command, it is very possible that not all tests pass. Generally any error is a sign of a missing dependency such as the Python interface to ZMQ or NumPy or SciPy, none of which are required for building GNU Radio but are required for testing.<br />
* <code>make test</code><br />
* <code>sudo make install</code><br />
If you're running Linux, then always remember to do the following command after installing any library:<br />
* <code>sudo ldconfig</code><br />
As an optional step to increase performance, we recommend running the following, although it can take 10-15 minutes and you can always do it later:<br />
* <code>volk_profile</code><br />
If you encounter "Cannot import gnuradio" error, then go to [[ModuleNotFoundError#B._Finding_the_Python_library|Finding the Python library]] to set your PYTHONPATH and LD_LIBRARY_PATH.<br><b>After setting these environment variables, you need to do</b> <code>sudo ldconfig</code> <b>again</b> for the Linux dynamic library loader to find the just-installed GNU Radio libraries.<br><br />
If you have installed in a custom path with <code>-DCMAKE_INSTALL_PREFIX=XXX</code>, you will need to add that path to $PATH in order to find gnuradio-companion.<br />
<br />
=== For GNU Radio 3.8 or Earlier ===<br />
<br />
==== Installing Dependencies ====<br />
<br />
Refer to [[InstallingGR#Linux|this page for your specific Linux distro]] to find how to install dependencies. For example, on Ubuntu 20.04 [[UbuntuInstall#Focal_Fossa_.2820.04.29_through_Impish_Indri_.2821.10.29|use this command]].<br />
<br />
==== Installing GNU Radio ====<br />
For this example, we will start in the home directory; you can, of course, use any directory you wish and the results will be the same.<br />
<br />
* <code>cd</code><br />
* <code>git clone https://github.com/gnuradio/gnuradio.git</code><br />
* <code>cd gnuradio</code><br />
<br />
<b>Note:</b> In the following command, change <code>maint-3.8</code> to some other branch or tag if you want to build a different version of GNU Radio; see [https://github.com/gnuradio/gnuradio/tags tags] for tagged releases including pre-releases ("rc"). For [https://github.com/gnuradio/gnuradio/branches branches], it's generally wise to stick with "master" (the default after cloning), and, currently: <code>maint-3.7</code> or <code>maint-3.8</code>. Here we checkout the <code>maint-3.8</code> branch, which contains the latest 3.8 release plus any fixes or augmentations to it that will be in the next 3.8 release.<br />
<br />
* <code>git checkout maint-3.8</code><br />
* <code>git submodule update --init --recursive</code><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
<br />
<b>Note:</b> In the following command, you can add <code>-DCMAKE_INSTALL_PREFIX=XXX</code> to install GNU Radio into the PREFIX <code>XXX</code>; if not specified, then the PREFIX is <code>/usr/local</code>. See other CMake options in [[#Common_cmake_flags|Common cmake flags]].<br><br />
<br />
* <code>cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../</code><br />
* <code>make -j3</code> (e.g. if you want to use 3 CPU cores during the build. To use 8 do -j8, to use 1 leave out the -j flag.)<br />
* <code>sudo make install</code><br />
<br />
If you're running Linux, then always remember to do the following command after installing any library:<br />
* <code>sudo ldconfig</code><br />
<br />
Go to [[ModuleNotFoundError#B._Finding_the_Python_library|Finding the Python library]] to set your PYTHONPATH and LD_LIBRARY_PATH.<br><b>After setting these environment variables, you need to do</b> <code>sudo ldconfig</code> <b>again</b> for the Linux dynamic library loader to find the just-installed GNU Radio libraries.<br><br />
If you have installed in a custom path with <code>-DCMAKE_INSTALL_PREFIX=XXX</code>, you will need to add that path to $PATH in order to find gnuradio-companion.<br />
<br />
==== For Ubuntu 18.04 ====<br />
<br />
An easy way to install GNU Radio 3.8 on many Ubuntu systems is to use the following commands (note that this skips the setup for UHD hardware):<br />
<br />
* <code>sudo apt install git cmake g++ libboost-all-dev libgmp-dev swig python3-numpy python3-mako python3-sphinx python3-lxml doxygen libfftw3-dev libsdl1.2-dev libgsl-dev libqwt-qt5-dev libqt5opengl5-dev python3-pyqt5 liblog4cpp5-dev libzmq3-dev python3-yaml python3-click python3-click-plugins python3-zmq python3-scipy python3-pip python3-gi-cairo</code><br />
* <code>pip3 install git+https://github.com/pyqtgraph/pyqtgraph@develop</code><br />
* <code>pip3 install numpy scipy</code><br />
* <code>echo 'export PYTHONPATH=/usr/local/lib/python3/dist-packages:usr/local/lib/python2.7/site-packages:$PYTHONPATH' >> ~/.bashrc</code><br />
* <code>echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.bashrc</code><br />
* <code>echo 'export PYTHONPATH=/usr/local/lib/python3/dist-packages:usr/local/lib/python2.7/site-packages:$PYTHONPATH' >> ~/.profile</code><br />
* <code>echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.profile</code><br />
* <code>cd ~/</code><br />
* <code>git clone --recursive https://github.com/gnuradio/gnuradio</code><br />
* <code>cd gnuradio</code><br />
* <code>git checkout maint-3.8</code><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
* <code>git pull --recurse-submodules=on</code><br />
* <code>git submodule update --init</code><br />
* <code>cmake -DENABLE_GR_UHD=OFF ..</code><br />
* <code>make -j $(nproc --all)</code><br />
* <code>sudo make install</code><br />
* <code>sudo ldconfig</code><br />
<br />
Once this is done, reboot your computer and GNU Radio should be all set for you.<br />
<br />
== Common cmake flags ==<br />
<br />
* <code>-DENABLE_GR_XXX=ON</code> This enables (or disables for =OFF) the GNU Radio component named XXX. You might not need all of them, and this way, you can compile quicker.<br />
* <code>-DCMAKE_INSTALL_PREFIX=XXX</code> Install your stuff to XXX.<br />
* <code>-DCMAKE_BUILD_TYPE=Debug</code> This causes gcc to add debug symbols to all binaries. Useful for debugging (otherwise, it decreases efficiency!)<br />
* <code>-DPYTHON_EXECUTABLE=/usr/bin/python{2,3}</code> This selects the Python version and executable to be used during build time and will determine which Python libraries will be used for building the Python bindings.<br />
<p>For a list of additional cmake flags, as well as minimum versions of dependencies, see [https://www.gnuradio.org/doc/doxygen/build_guide.html]</p><br />
<br />
= Using PyBOMBS =<br />
<br />
PyBOMBS used to be the go-to method for building GNU Radio, UHD, and various Out of Tree (OOT) modules from source and then installing them into an isolated directory rather than system-wide, not unlike a Python virtualenv. We are no longer including PyBOMBS as a recommended method of installing GNU Radio, unless you want to play around with old versions (e.g. GR 3.7, 3.8, and OOTs of matching version). The PyBOMBS documentation is in the PyBOMBS [https://github.com/gnuradio/pybombs#pybombs README].<br />
<br />
= VMs and Live Images =<br />
Over the years a number of Live Images and VMs have been created. There are currently no official versions but here are some current options:<br />
*[https://github.com/bastibl/instant-gnuradio Instant GNU Radio] A customizable, programmatically generated VM and live environment for GNU Radio. <br />
*[[UbuntuVM]] An Ubuntu 20.04 virtual machine image with GNU Radio 3.8.2.0, Fosphor, GQRX, and several other useful pieces of software. (Created using Instant GNU Radio)<br />
<br />
= OK, it's installed, what now? =<br />
<br />
If the installation worked without any trouble, you're ready to use GNU Radio! If you have no idea how to do that, the best place to start is with the [[Tutorials]].<br />
<br />
Optionally, you may run <code>volk_profile</code> on your terminal to help libvolk to determine the optimal kernels (may speed up GNU Radio). <br />
<br />
[[Category:Installation]]<br />
[[Category:Guide]]</div>777archttps://wiki.gnuradio.org/index.php?title=SigMF_Recordings_Repo&diff=12148SigMF Recordings Repo2022-03-17T23:22:17Z<p>777arc: </p>
<hr />
<div>The SigMF team is spearheading an effort to create a central repo that will contain a bunch of SigMF example recordings. This will serve multiple purposes, listed below in order of importance:<br />
<br />
# Someone is looking to use SigMF and wants to see examples of recordings, including the more complex meta features (e.g. geolocation, collections, multi-channel, etc)<br />
# Test IQ recordings to be used as unit tests for OOT's flowgraphs or other purposes<br />
# A place to store interesting RF recordings, as a way to promote SigMF adoption, e.g., someone might get linked to the repo not because of SigMF but because of the wealth of example IQ recordings, and then find that it's convenient to use SigMF in their workflow<br />
<br />
What it is not:<br />
<br />
# RFML-centric datasets. There may be examples of many different waveforms, but we make no effort to have the example recordings consistent between each other<br />
# A place to store something that isn't a SigMF recording<br />
<br />
Below is a list of existing RF recordings (doesn't have to be SigMF, we can always make the meta file) that we could potentially pull from:<br />
<br />
# https://www.sigidwiki.com/ some of the signals have raw IQ recordings available. This link shows all the zip files https://www.sigidwiki.com/index.php?title=Special:MIMESearch&limit=500&offset=0&mime=application%2Fzip<br />
# http://pmonta.com/blog/2020/02/01/gnss-sky-recordings/<br />
# https://ieee-dataport.org/open-access/drone-remote-controller-rf-signal-dataset<br />
# https://destevez.net/rf-recordings/<br />
# https://zenodo.org/record/4409595<br />
# other stuff on zenodo, esp Danis stuff<br />
# ETSI provides IQ files for compliance testing <br />
formatted for signal generators<br />
LTE under different load conditions https://github.com/gnuradio/SigMF/issues/171#issuecomment-926192506<br />
FM, FM with noise https://www.etsi.org/deliver/etsi_en/303300_303399/30334503/01.01.00_20/en_30334503v010100a.pdf<br />
AM, AM with noise https://www.etsi.org/deliver/etsi_en/303300_303399/30334502/01.02.01_60/en_30334502v010201p.pdf<br />
zip with AM & FM files https://www.etsi.org/deliver/etsi_en/303300_303399/30334501/01.01.01_60/en_30334501v010101p0.zip</div>777archttps://wiki.gnuradio.org/index.php?title=SigMF_Recordings_Repo&diff=12147SigMF Recordings Repo2022-03-17T22:05:55Z<p>777arc: </p>
<hr />
<div>The SigMF team is spearheading an effort to create a central repo that will contain a bunch of SigMF example recordings. This will serve multiple purposes, listed below in order of importance:<br />
<br />
# Someone is looking to use SigMF and wants to see examples of recordings, including the more complex meta features (e.g. geolocation, collections, multi-channel, etc)<br />
# Test IQ recordings to be used as unit tests for OOT's flowgraphs or other purposes<br />
# A place to store interesting RF recordings, as a way to promote SigMF adoption, e.g., someone might get linked to the repo not because of SigMF but because of the wealth of example IQ recordings, and then find that it's convenient to use SigMF in their workflow<br />
<br />
What it is not:<br />
<br />
# RFML-centric datasets. There may be examples of many different waveforms, but we make no effort to have the example recordings consistent between each other<br />
# A place to store something that isn't a SigMF recording<br />
<br />
Below is a list of existing RF recordings (doesn't have to be SigMF, we can always make the meta file) that we could potentially pull from:<br />
<br />
# https://www.sigidwiki.com/ some of the signals have raw IQ recordings available. This link shows all the zip files https://www.sigidwiki.com/index.php?title=Special:MIMESearch&limit=500&offset=0&mime=application%2Fzip<br />
# http://pmonta.com/blog/2020/02/01/gnss-sky-recordings/<br />
# https://ieee-dataport.org/open-access/drone-remote-controller-rf-signal-dataset<br />
# https://destevez.net/rf-recordings/<br />
# https://zenodo.org/record/4409595<br />
# other stuff on zenodo, esp Danis stuff</div>777archttps://wiki.gnuradio.org/index.php?title=SigMF_Recordings_Repo&diff=12146SigMF Recordings Repo2022-03-17T22:05:46Z<p>777arc: </p>
<hr />
<div>The SigMF team is spearheading an effort to create a central repo that will contain a bunch of SigMF example recordings. This will serve multiple purposes, listed below in order of importance:<br />
<br />
# Someone is looking to use SigMF and wants to see examples of recordings, including the more complex meta features (e.g. geolocation, collections, multi-channel, etc)<br />
# Test IQ recordings to be used as unit tests for OOT's flowgraphs or other purposes<br />
# A place to store interesting RF recordings, as a way to promote SigMF adoption, e.g., someone might get linked to the repo not because of SigMF but because of the wealth of example IQ recordings, and then find that it's convenient to use SigMF in their workflow<br />
<br />
What it is not:<br />
<br />
# RFML-centric datasets. There may be examples of many different waveforms, but we make no effort to have the example recordings consistent between each other<br />
# A place to store something that isn't a SigMF recording<br />
<br />
Below is a list of existing RF recordings (doesn't have to be SigMF, we can always make the meta file) that we could potentially pull from:<br />
<br />
# https://www.sigidwiki.com/ some of the signals have raw IQ recordings available<br />
# # This link shows all the zip files https://www.sigidwiki.com/index.php?title=Special:MIMESearch&limit=500&offset=0&mime=application%2Fzip<br />
# http://pmonta.com/blog/2020/02/01/gnss-sky-recordings/<br />
# https://ieee-dataport.org/open-access/drone-remote-controller-rf-signal-dataset<br />
# https://destevez.net/rf-recordings/<br />
# https://zenodo.org/record/4409595<br />
# other stuff on zenodo, esp Danis stuff</div>777archttps://wiki.gnuradio.org/index.php?title=SigMF_Recordings_Repo&diff=12145SigMF Recordings Repo2022-03-17T22:05:42Z<p>777arc: </p>
<hr />
<div>The SigMF team is spearheading an effort to create a central repo that will contain a bunch of SigMF example recordings. This will serve multiple purposes, listed below in order of importance:<br />
<br />
# Someone is looking to use SigMF and wants to see examples of recordings, including the more complex meta features (e.g. geolocation, collections, multi-channel, etc)<br />
# Test IQ recordings to be used as unit tests for OOT's flowgraphs or other purposes<br />
# A place to store interesting RF recordings, as a way to promote SigMF adoption, e.g., someone might get linked to the repo not because of SigMF but because of the wealth of example IQ recordings, and then find that it's convenient to use SigMF in their workflow<br />
<br />
What it is not:<br />
<br />
# RFML-centric datasets. There may be examples of many different waveforms, but we make no effort to have the example recordings consistent between each other<br />
# A place to store something that isn't a SigMF recording<br />
<br />
Below is a list of existing RF recordings (doesn't have to be SigMF, we can always make the meta file) that we could potentially pull from:<br />
<br />
# https://www.sigidwiki.com/ some of the signals have raw IQ recordings available<br />
# # This link shows all the zip files https://www.sigidwiki.com/index.php?title=Special:MIMESearch&limit=500&offset=0&mime=application%2Fzip<br />
# http://pmonta.com/blog/2020/02/01/gnss-sky-recordings/<br />
# https://ieee-dataport.org/open-access/drone-remote-controller-rf-signal-dataset<br />
# https://destevez.net/rf-recordings/<br />
# https://zenodo.org/record/4409595<br />
# other stuff on zenodo, esp Danis stuff</div>777archttps://wiki.gnuradio.org/index.php?title=SigMF_Recordings_Repo&diff=12144SigMF Recordings Repo2022-03-17T22:05:37Z<p>777arc: </p>
<hr />
<div>The SigMF team is spearheading an effort to create a central repo that will contain a bunch of SigMF example recordings. This will serve multiple purposes, listed below in order of importance:<br />
<br />
# Someone is looking to use SigMF and wants to see examples of recordings, including the more complex meta features (e.g. geolocation, collections, multi-channel, etc)<br />
# Test IQ recordings to be used as unit tests for OOT's flowgraphs or other purposes<br />
# A place to store interesting RF recordings, as a way to promote SigMF adoption, e.g., someone might get linked to the repo not because of SigMF but because of the wealth of example IQ recordings, and then find that it's convenient to use SigMF in their workflow<br />
<br />
What it is not:<br />
<br />
# RFML-centric datasets. There may be examples of many different waveforms, but we make no effort to have the example recordings consistent between each other<br />
# A place to store something that isn't a SigMF recording<br />
<br />
Below is a list of existing RF recordings (doesn't have to be SigMF, we can always make the meta file) that we could potentially pull from:<br />
<br />
# https://www.sigidwiki.com/ some of the signals have raw IQ recordings available<br />
# This link shows all the zip files https://www.sigidwiki.com/index.php?title=Special:MIMESearch&limit=500&offset=0&mime=application%2Fzip<br />
# http://pmonta.com/blog/2020/02/01/gnss-sky-recordings/<br />
# https://ieee-dataport.org/open-access/drone-remote-controller-rf-signal-dataset<br />
# https://destevez.net/rf-recordings/<br />
# https://zenodo.org/record/4409595<br />
# other stuff on zenodo, esp Danis stuff</div>777archttps://wiki.gnuradio.org/index.php?title=SigMF_Recordings_Repo&diff=12143SigMF Recordings Repo2022-03-17T22:05:32Z<p>777arc: </p>
<hr />
<div>The SigMF team is spearheading an effort to create a central repo that will contain a bunch of SigMF example recordings. This will serve multiple purposes, listed below in order of importance:<br />
<br />
# Someone is looking to use SigMF and wants to see examples of recordings, including the more complex meta features (e.g. geolocation, collections, multi-channel, etc)<br />
# Test IQ recordings to be used as unit tests for OOT's flowgraphs or other purposes<br />
# A place to store interesting RF recordings, as a way to promote SigMF adoption, e.g., someone might get linked to the repo not because of SigMF but because of the wealth of example IQ recordings, and then find that it's convenient to use SigMF in their workflow<br />
<br />
What it is not:<br />
<br />
# RFML-centric datasets. There may be examples of many different waveforms, but we make no effort to have the example recordings consistent between each other<br />
# A place to store something that isn't a SigMF recording<br />
<br />
Below is a list of existing RF recordings (doesn't have to be SigMF, we can always make the meta file) that we could potentially pull from:<br />
<br />
# https://www.sigidwiki.com/ some of the signals have raw IQ recordings available<br />
# This link shows all the zip files https://www.sigidwiki.com/index.php?title=Special:MIMESearch&limit=500&offset=0&mime=application%2Fzip<br />
# http://pmonta.com/blog/2020/02/01/gnss-sky-recordings/<br />
# https://ieee-dataport.org/open-access/drone-remote-controller-rf-signal-dataset<br />
# https://destevez.net/rf-recordings/<br />
# https://zenodo.org/record/4409595<br />
# other stuff on zenodo, esp Danis stuff</div>777archttps://wiki.gnuradio.org/index.php?title=Tutorials&diff=12138Tutorials2022-03-17T17:07:51Z<p>777arc: </p>
<hr />
<div>Please leave tutorials-related feedback (either for an individual tutorial or overall organization) in the [[Talk:Tutorials|Discussion]] page of this article (tab at the top), we are always looking for ways to improve.<br />
<br />
{|<br />
|- valign="top"<br />
|{{BeginnerTutorials}}<br />
|<br />
{| class="wikitable" style="background-color:#f1edff;" cellpadding="10"<br />
|'''Intermediate/Advanced Tutorials'''<br />
Core GNU Radio Mechanics<br />
# [[Stream_Tags|Stream Tags]]<br />
# [[Polymorphic_Types_(PMTs)|Polymorphic Types (PMTs)]]<br />
# [[Message_Passing|Message Passing]]<br />
Modulation and Demodulation<br />
# [[Simulation_example:_Narrowband_FM_transceiver|Narrowband FM]]<br />
# [[Simulation_example:_Single_Sideband_transceiver|Single Sideband (SSB)]]<br />
# [[Guided_Tutorial_PSK_Demodulation|QPSK Mod and Demod]]<br />
# [[Simulation_example:_BPSK_Demodulation|BPSK Demodulation]]<br />
# [[Simulation_example:_FSK|Frequency Shift Keying (FSK)]]<br />
# [[Basic_OFDM_Tutorial|OFDM Basics]]<br />
# [[Packet_Communications|Packet Communications]]<br />
Custom Blocks and Out of Tree (OOT) Modules<br />
# [[Creating_Python_OOT_with_gr-modtool|Creating an OOT (Python block example)]]<br />
# [[Creating_c++_OOT_with_gr-modtool|Creating an OOT (C++ block example)]]<br />
# [[YAML_GRC|Writing the YAML file for a block (GR 3.8+)]]<br />
Miscellaneous<br />
# [[Flowgraph_Python_Code|Understanding a Flowgraph's Python Code]]<br />
# [[Guided_Tutorial_Hardware_Considerations|Using GNU Radio With SDRs]]<br />
# [[IQ_Complex_Tutorial|IQ and Complex Signals]]<br />
# [[Sample_Rate_Tutorial|Understanding Sample Rate]]<br />
# [[Understanding_ZMQ_Blocks|Understanding ZMQ Blocks]]<br />
|}<br />
|<br />
{| class="wikitable" style="background-color:#f1edff;" cellpadding="10"<br />
|'''Developer Resources'''<br />
# [[Porting_Existing_Flowgraphs_to_a_Newer_Version|Porting Existing Flowgraphs to Newer Version]]<br />
# [[GNU Radio 3.10 OOT Module Porting Guide|Porting Existing OOTs from 3.9 to 3.10]]<br />
# [[GNU_Radio_3.9_OOT_Module_Porting_Guide|Porting Existing OOTs from 3.8 to 3.9]]<br />
# [[GNU_Radio_3.8_OOT_Module_Porting_Guide|Porting Existing OOTs from 3.7 to 3.8]]<br />
# [[VOLK_Guide|VOLK: What it does, why it rocks, how to write new kernels]]<br />
# [[ALSAPulseAudio|Working with ALSA and Pulse Audio]]<br />
# [[UsingVSCode|Using Visual Studio Code for Source level debugging of C++ OOTs]]<br />
# [[UsingEclipse|Using Eclipse for Building and Source level debugging C++ OOTs]]<br />
# [[UsingCB|Using Code::Blocks IDE for GNU Radio Development]]<br />
# [[DevelopingWithGit|Git and GNU Radio]]<br />
# [[Octave|How to use Octave or Matlab with GNU Radio]]<br />
# [http://www.trondeau.com/blog/2013/9/15/explaining-the-gnu-radio-scheduler.htmlThe GNU Radio Scheduler]<br />
# [[CustomBuffers|Using Custom Buffers for Hardware Accelerated Blocks]]<br />
# [[Understanding_XMLRPC_Blocks|Remote Control and Automation of Flowgraphs with XMLRPC]]<br />
|}<br />
|}</div>777archttps://wiki.gnuradio.org/index.php?title=Tutorials&diff=12137Tutorials2022-03-17T17:07:12Z<p>777arc: </p>
<hr />
<div>Please leave tutorials-related feedback (either for an individual tutorial or overall organization) in the [[Talk:Tutorials|Discussion]] page of this article (tab at the top), we are always looking for ways to improve.<br />
<br />
{|<br />
|- valign="top"<br />
|{{BeginnerTutorials}}<br />
|<br />
{| class="wikitable" style="background-color:#f1edff;" cellpadding="10"<br />
|'''Intermediate/Advanced Tutorials'''<br />
Core GNU Radio Mechanics<br />
# [[Stream_Tags|Stream Tags]]<br />
# [[Polymorphic_Types_(PMTs)|Polymorphic Types (PMTs)]]<br />
# [[Message_Passing|Message Passing]]<br />
Modulation and Demodulation<br />
# [[Simulation_example:_Narrowband_FM_transceiver|Narrowband FM]]<br />
# [[Simulation_example:_Single_Sideband_transceiver|Single Sideband (SSB)]]<br />
# [[Guided_Tutorial_PSK_Demodulation|QPSK Mod and Demod]]<br />
# [[Simulation_example:_BPSK_Demodulation|BPSK Demodulation]]<br />
# [[Simulation_example:_FSK|Frequency Shift Keying (FSK)]]<br />
# [[Basic_OFDM_Tutorial|OFDM Basics]]<br />
# [[Packet_Communications|Packet Communications]]<br />
Custom Blocks and Out of Tree (OOT) Modules<br />
# [[Creating_Python_OOT_with_gr-modtool|Creating Python OOT with gr-modtool]]<br />
# [[Creating_c++_OOT_with_gr-modtool|Creating C++ OOT with gr-modtool]]<br />
# [[YAML_GRC|Writing the YAML file for a block (GR 3.8+)]]<br />
Miscellaneous<br />
# [[Flowgraph_Python_Code|Understanding a Flowgraph's Python Code]]<br />
# [[Guided_Tutorial_Hardware_Considerations|Using GNU Radio With SDRs]]<br />
# [[IQ_Complex_Tutorial|IQ and Complex Signals]]<br />
# [[Sample_Rate_Tutorial|Understanding Sample Rate]]<br />
# [[Understanding_ZMQ_Blocks|Understanding ZMQ Blocks]]<br />
|}<br />
|<br />
{| class="wikitable" style="background-color:#f1edff;" cellpadding="10"<br />
|'''Developer Resources'''<br />
# [[Porting_Existing_Flowgraphs_to_a_Newer_Version|Porting Existing Flowgraphs to Newer Version]]<br />
# [[GNU Radio 3.10 OOT Module Porting Guide|Porting Existing OOTs from 3.9 to 3.10]]<br />
# [[GNU_Radio_3.9_OOT_Module_Porting_Guide|Porting Existing OOTs from 3.8 to 3.9]]<br />
# [[GNU_Radio_3.8_OOT_Module_Porting_Guide|Porting Existing OOTs from 3.7 to 3.8]]<br />
# [[VOLK_Guide|VOLK: What it does, why it rocks, how to write new kernels]]<br />
# [[ALSAPulseAudio|Working with ALSA and Pulse Audio]]<br />
# [[UsingVSCode|Using Visual Studio Code for Source level debugging of C++ OOTs]]<br />
# [[UsingEclipse|Using Eclipse for Building and Source level debugging C++ OOTs]]<br />
# [[UsingCB|Using Code::Blocks IDE for GNU Radio Development]]<br />
# [[DevelopingWithGit|Git and GNU Radio]]<br />
# [[Octave|How to use Octave or Matlab with GNU Radio]]<br />
# [http://www.trondeau.com/blog/2013/9/15/explaining-the-gnu-radio-scheduler.htmlThe GNU Radio Scheduler]<br />
# [[CustomBuffers|Using Custom Buffers for Hardware Accelerated Blocks]]<br />
# [[Understanding_XMLRPC_Blocks|Remote Control and Automation of Flowgraphs with XMLRPC]]<br />
|}<br />
|}</div>777archttps://wiki.gnuradio.org/index.php?title=SigMF_Recordings_Repo&diff=12136SigMF Recordings Repo2022-03-17T17:00:13Z<p>777arc: </p>
<hr />
<div>The SigMF team is spearheading an effort to create a central repo that will contain a bunch of SigMF example recordings. This will serve multiple purposes, listed below in order of importance:<br />
<br />
# Someone is looking to use SigMF and wants to see examples of recordings, including the more complex meta features (e.g. geolocation, collections, multi-channel, etc)<br />
# Test IQ recordings to be used as unit tests for OOT's flowgraphs or other purposes<br />
# A place to store interesting RF recordings, as a way to promote SigMF adoption, e.g., someone might get linked to the repo not because of SigMF but because of the wealth of example IQ recordings, and then find that it's convenient to use SigMF in their workflow<br />
<br />
What it is not:<br />
<br />
# RFML-centric datasets. There may be examples of many different waveforms, but we make no effort to have the example recordings consistent between each other<br />
# A place to store something that isn't a SigMF recording<br />
<br />
Below is a list of existing RF recordings (doesn't have to be SigMF, we can always make the meta file) that we could potentially pull from:<br />
<br />
# https://www.sigidwiki.com/ some of the signals have raw IQ recordings available<br />
# http://pmonta.com/blog/2020/02/01/gnss-sky-recordings/<br />
# https://ieee-dataport.org/open-access/drone-remote-controller-rf-signal-dataset<br />
# https://destevez.net/rf-recordings/<br />
# https://zenodo.org/record/4409595<br />
# other stuff on zenodo, esp Danis stuff</div>777archttps://wiki.gnuradio.org/index.php?title=SigMF_Recordings_Repo&diff=12135SigMF Recordings Repo2022-03-17T16:59:49Z<p>777arc: </p>
<hr />
<div>The SigMF team is spearheading an effort to create a central repo that will contain a bunch of SigMF example recordings. This will serve multiple purposes, listed below in order of importance:<br />
<br />
# Someone is looking to use SigMF and wants to see examples of recordings, including the more complex meta features (e.g. geolocation, collections, multi-channel, etc)<br />
# Test IQ recordings to be used as unit tests for OOT's flowgraphs or other purposes<br />
# A place to store interesting RF recordings, as a way to promote SigMF adoption, e.g., someone might get linked to the repo not because of SigMF but because of the wealth of example IQ recordings, and then find that it's convenient to use SigMF in their workflow<br />
<br />
What it is not:<br />
<br />
# RFML-centric datasets. There may be examples of many different waveforms, but we make no effort to have the example recordings consistent between each other<br />
<br />
Below is a list of existing RF recordings (doesn't have to be SigMF, we can always make the meta file) that we could potentially pull from:<br />
<br />
# https://www.sigidwiki.com/ some of the signals have raw IQ recordings available<br />
# http://pmonta.com/blog/2020/02/01/gnss-sky-recordings/<br />
# https://ieee-dataport.org/open-access/drone-remote-controller-rf-signal-dataset<br />
# https://destevez.net/rf-recordings/<br />
# https://zenodo.org/record/4409595<br />
# other stuff on zenodo, esp Danis stuff</div>777archttps://wiki.gnuradio.org/index.php?title=SigMF_Recordings_Repo&diff=12134SigMF Recordings Repo2022-03-17T16:59:43Z<p>777arc: </p>
<hr />
<div>We are spearheading an effort to create a central repo that will contain a bunch of SigMF example recordings. This will serve multiple purposes, listed below in order of importance:<br />
<br />
# Someone is looking to use SigMF and wants to see examples of recordings, including the more complex meta features (e.g. geolocation, collections, multi-channel, etc)<br />
# Test IQ recordings to be used as unit tests for OOT's flowgraphs or other purposes<br />
# A place to store interesting RF recordings, as a way to promote SigMF adoption, e.g., someone might get linked to the repo not because of SigMF but because of the wealth of example IQ recordings, and then find that it's convenient to use SigMF in their workflow<br />
<br />
What it is not:<br />
<br />
# RFML-centric datasets. There may be examples of many different waveforms, but we make no effort to have the example recordings consistent between each other<br />
<br />
Below is a list of existing RF recordings (doesn't have to be SigMF, we can always make the meta file) that we could potentially pull from:<br />
<br />
# https://www.sigidwiki.com/ some of the signals have raw IQ recordings available<br />
# http://pmonta.com/blog/2020/02/01/gnss-sky-recordings/<br />
# https://ieee-dataport.org/open-access/drone-remote-controller-rf-signal-dataset<br />
# https://destevez.net/rf-recordings/<br />
# https://zenodo.org/record/4409595<br />
# other stuff on zenodo, esp Danis stuff</div>777archttps://wiki.gnuradio.org/index.php?title=SigMF_Recordings_Repo&diff=12133SigMF Recordings Repo2022-03-17T16:59:23Z<p>777arc: </p>
<hr />
<div>Marc is spearheading an effort to create a central repo that will contain a bunch of SigMF example recordings. This will serve multiple purposes, listed below in order of importance:<br />
<br />
# Someone is looking to use SigMF and wants to see examples of recordings, including the more complex meta features (e.g. geolocation, collections, multi-channel, etc)<br />
# Test IQ recordings to be used as unit tests for OOT's flowgraphs or other purposes<br />
# A place to store interesting RF recordings, as a way to promote SigMF adoption, e.g., someone might get linked to the repo not because of SigMF but because of the wealth of example IQ recordings, and then find that it's convenient to use SigMF in their workflow<br />
<br />
What it is not:<br />
<br />
# RFML-centric datasets. There may be examples of many different waveforms, but we make no effort to have the example recordings consistent between each other<br />
<br />
Below is a list of existing RF recordings (doesn't have to be SigMF, we can always make the meta file) that we could potentially pull from:<br />
<br />
# https://www.sigidwiki.com/ some of the signals have raw IQ recordings available<br />
# http://pmonta.com/blog/2020/02/01/gnss-sky-recordings/<br />
# https://ieee-dataport.org/open-access/drone-remote-controller-rf-signal-dataset<br />
# https://destevez.net/rf-recordings/<br />
# https://zenodo.org/record/4409595<br />
# other stuff on zenodo, esp Danis stuff</div>777archttps://wiki.gnuradio.org/index.php?title=SigMF_Recordings_Repo&diff=12132SigMF Recordings Repo2022-03-17T16:43:54Z<p>777arc: </p>
<hr />
<div>Marc is spearheading an effort to create a central repo that will contain a bunch of SigMF example recordings. This will serve multiple purposes, listed below in order of importance:<br />
<br />
# Someone is looking to use SigMF and wants to see examples of recordings, including the more complex meta features (e.g. geolocation, collections, multi-channel, etc)<br />
# Test IQ recordings to be used as unit tests for OOT's flowgraphs or other purposes<br />
# A place to store interesting RF recordings, as a way to promote SigMF adoption, e.g., someone might get linked to the repo not because of SigMF but because of the wealth of example IQ recordings, and then find that it's convenient to use SigMF in their workflow<br />
<br />
What it is not:<br />
<br />
# RFML-centric datasets. There may be examples of many different waveforms, but we make no effort to have the example recordings consistent between each other<br />
<br />
Below is a list of existing RF recordings (doesn't have to be SigMF, we can always make the meta file) that we could potentially pull from:</div>777archttps://wiki.gnuradio.org/index.php?title=SigMF_Recordings_Repo&diff=12131SigMF Recordings Repo2022-03-17T16:43:43Z<p>777arc: Created page with "Marc is spearheading an effort to create a central repo that will contain a bunch of SigMF example recordings. This will serve multiple purposes, listed below in order of importance: 1. Someone is looking to use SigMF and wants to see examples of recordings, including the more complex meta features (e.g. geolocation, collections, multi-channel, etc) 2. Test IQ recordings to be used as unit tests for OOT's flowgraphs or other purposes 3. A place to store interesting RF..."</p>
<hr />
<div>Marc is spearheading an effort to create a central repo that will contain a bunch of SigMF example recordings. This will serve multiple purposes, listed below in order of importance:<br />
<br />
1. Someone is looking to use SigMF and wants to see examples of recordings, including the more complex meta features (e.g. geolocation, collections, multi-channel, etc)<br />
2. Test IQ recordings to be used as unit tests for OOT's flowgraphs or other purposes<br />
3. A place to store interesting RF recordings, as a way to promote SigMF adoption, e.g., someone might get linked to the repo not because of SigMF but because of the wealth of example IQ recordings, and then find that it's convenient to use SigMF in their workflow<br />
<br />
What it is not:<br />
<br />
1. RFML-centric datasets. There may be examples of many different waveforms, but we make no effort to have the example recordings consistent between each other<br />
<br />
Below is a list of existing RF recordings (doesn't have to be SigMF, we can always make the meta file) that we could potentially pull from:</div>777archttps://wiki.gnuradio.org/index.php?title=GNU_Radio_3.10_OOT_Module_Porting_Guide&diff=11676GNU Radio 3.10 OOT Module Porting Guide2022-03-08T18:49:26Z<p>777arc: </p>
<hr />
<div>[[Category:3.10]]<br />
The major changes in the GNU Radio 3.10 release that impact OOTs are:<br />
<br />
* C++ modernization (C++17)<br />
* Introduction of gr-pdu<br />
* ATSC Block Refactoring<br />
* New Logging Infrastructure<br />
* OOT structure<br />
* QT Frequency/Waterfall block ranges<br />
<br />
There is a decent chance that your OOT doesn't actually require changes to be transitioned to 3.10.<br />
<br />
= Porting Guide = <br />
<br />
== C++ modernization ==<br />
GR 3.10 uses C++17 which allows some nice language features. Some might affect your OOT. Please document any needed changes here<br />
<br />
== Versioning Your shared object files ==<br />
You may want to edit the /lib/CMakeList.txt file in order to set a version. The default VERSION_PATCH is set<br />
to git, you may want to edit it to 0 for your first version. Then when you need to push out a modified version remember<br />
to edit the version numbers before building. If you leave the VERSION_PATCH at git the install directory may eventually become<br />
littered with old libgnuradio-yourproject.so.git-commit-number files and soft links.<br />
<br />
== OOT Structure ==<br />
3.10 restructures the OOT file structure to more closely resemble the in-tree components. OOTs created with 3.9 should have no issue being interpreted by <br />
modtool and the macros to do python bindings. But creating a new OOT will be slightly different and have a different structure. OOTs created with 3.10 will<br />
not work with modtool from 3.9, but they still should be able to compile with 3.9<br />
<br />
== Logging ==<br />
<br />
The logging backend was overhauled, but most of the old logging API remains in place. So, <syntaxhighlight lang="shell" inline>GR_LOG_WARN(d_logger, "Warning!");</syntaxhighlight> still works.<br />
<br />
You are, however, encouraged to use the newer API that allows for in-line format string usage (which is only evaluated if the logging at the given level is actually activated).<br />
Benefit: This might remove the need to use Boost just to get <syntaxhighlight lang="shell" inline>boost::format</syntaxhighlight>; it's also faster when active, and the overhead when inactive is minimal (TODO: link to PR comment where speed was benchmarked).<br />
<syntaxhighlight lang="c++"><br />
d_logger->warn("Unable to read {:d} items from buffer '{:s}'; resetting to default value {:f}",<br />
num_items,<br />
name,<br />
default_float_value);<br />
</syntaxhighlight><br />
<br />
Outside of blocks, where you might not have access to a readily set up logger:<br />
<br />
<syntaxhighlight lang="c++"><br />
#include <gnuradio/logger.h><br />
…<br />
gr::logger logger("my thing that logs");<br />
logger.info("Setting up this rather complicated thing");<br />
</syntaxhighlight><br />
<br />
Notice that this is really a logger object, not a smart pointer, as the use cases for non-block loggers aren't always clearly cut. If you have a (non-block) class that needs to log something:<br />
<br />
<syntaxhighlight lang="c++"><br />
// test.cc<br />
#include <gnuradio/logger.h><br />
<br />
class my_thing<br />
{<br />
private:<br />
gr::logger _logger;<br />
<br />
public:<br />
my_thing(const std::string& name)<br />
: _logger("my thing " + name)<br />
{<br />
_logger.info("constructed");<br />
}<br />
~my_thing() { _logger.warn("I don't like being destructed!"); }<br />
};<br />
<br />
int main() { my_thing thing("gizmo"); }<br />
</syntaxhighlight><br />
yielding (after a <syntaxhighlight lang="shell" inline>$CXX $(pkg-config --cflags --libs gnuradio-runtime) $(pkg-config --cflags --libs spdlog) -o test test.cc && ./test</syntaxhighlight>)<br />
<pre><br />
my thing gizmo :info: constructed<br />
my thing gizmo :warning: I don't like being destructed!<br />
</pre><br />
<br />
== QT FFT Size Ranges ==<br />
For QT Frequency Sink and QT Waterfall Sink: because of the interaction between the block and some of the graphical elements such as the control panel, we have limited the available fft sizes<br />
to powers of 2 between 32 and 32768 to keep the widget in a well defined state. Flowgraphs with values for fft size that are not powers of 2 will show an error<br />
in GRC, but for python flowgraphs, will force it to a default value.<br />
<br />
== API Changes == <br />
<br />
=== Removal of Decimation Parameter from FIR objects ===<br />
<br />
There was previously a decimation value in the constructor of a kernel::fir_xxx object that has now been removed<br />
<br />
=== ATSC Blocks ===<br />
<br />
The inputs and outputs of the ATSC blocks previously passed structs that contained data and metadata. These have now been broken out into separate streams.</div>777archttps://wiki.gnuradio.org/index.php?title=InstallingGR&diff=11602InstallingGR2022-03-08T15:18:42Z<p>777arc: </p>
<hr />
<div><div style="float:right"><br />
{{Template:BeginnerTutorials}}<br />
</div><br />
<br />
{| class="wikitable"<br />
|+ Install Quickstart<br>(Refer to the rest of this page for more OS and installation options)<br />
! Linux<br />
||<br />
# [https://releases.ubuntu.com/20.04/ Install Ubuntu 20.04] (either as a VM or natively)<br />
# <code>sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.9</code><br />
# <code>sudo apt-get update</code><br />
# <code>sudo apt-get install gnuradio</code><br />
||v3.9.5<br />
|-<br />
! Windows<br />
||<br />
# Install the latest [https://github.com/ryanvolz/radioconda/releases Radioconda installer]<br />
# Launch "GNU Radio Companion" from the Start menu<br />
||v3.10.0<br />
|-<br />
! macOS<br />
||<br />
# [https://brew.sh/ Install Homebrew]<br />
# <code>brew install gnuradio</code><br />
# [https://github.com/gnuradio/gnuradio/pull/4814#issuecomment-925190019 Until it's updated to 3.9.4+ you'll have to do this quick fix]<br />
||v3.9.3<br />
|}<br />
<br />
<br />
= Types of Installation Methods =<br />
<br />
The recommended way to install GNU Radio on most platforms is using already available binary packages. Find your platform below in the [[#From_Binaries|From Binaries]] section for instructions on how to get GNU Radio through your regular package manager (e.g. [[#Ubuntu_PPA_Installation|Ubuntu PPA Installation]]), or visit the [[CondaInstall|Conda Installation]] page for instructions on how to use the Conda package manager to install GNU Radio on any Linux distribution, macOS, or Windows. For some platforms there are no binaries provided by available package managers or the GNU Radio project. In these cases please contact the maintainer of the package manager or the GNU Radio project to find a sensible way to provide binaries for your platform.<br />
<br />
In addition to using binaries, GNU Radio can be installed:<br />
<br />
# '''[[#From_Source|From source]]''' (for those who want full control)<br />
# '''[[#Using_PyBOMBS|Using PyBOMBS]]''' (for those who want it built from source and/or installed to a specific directory using a script)<br />
<br />
= From Binaries =<br />
<br />
== Linux ==<br />
<br />
Most distributions contain a package named <code>gnuradio</code> or similar in their standard repositories. For most use cases it is enough to install this package and start developing.<br />
<br />
The development of GNU Radio can be fast-paced, and binaries provided by your distribution may be outdated. '''Do check if the version you're installing is up to date! Sometimes old versions are not updated in the packaging systems.''' If you find a bug in a older GNU Radio version, please check if the bug still exists in the newer version of GNU Radio before filing a new issue.<br />
<br />
If the version shipped in your distribution is outdated please contact the corresponding maintainer to update it in the packaging system.<br />
<br />
Here are examples of how to install GNU Radio in various Linux distributions. <b>Click the link under &quot;Distribution&quot; for how to install dependencies.</b><br />
<br />
{|class="wikitable" style="margin: auto; width: 90%;"<br />
!scope="col"|Distribution<br />
!scope="col"|Command<br />
|-<br />
| [[UbuntuInstall|Debian/Ubuntu and derivates]]<br />
| <pre># apt install gnuradio</pre><br />
|-<br />
| [[FedoraInstall|Fedora]]<br />
| <pre># dnf install gnuradio</pre><br />
|-<br />
| RHEL/CentOS<br />
| <pre># yum install gnuradio</pre><br />
|-<br />
| [[ArchInstall|Archlinux]]<br />
| <pre># pacman -S gnuradio</pre><br />
|-<br />
| [[GentooInstall|Gentoo Linux]]<br />
| <pre># emerge net-wireless/gnuradio</pre><br />
|-<br />
| [[SuseInstall|Suse Linux]]<br />
| <br />
|-<br />
| [[InstallingGRFromSource_on_Raspberry_Pi|Raspberry Pi OS]]<br />
| <br />
|-<br />
|}<br />
<br />
On other distributions, simply use the appropriate package management command to install the <code>gnuradio</code> package and then please add it to this list. If you need newer versions or have a different platform please contact the package maintainer of your distribution or raise your issue on the mailing list.<br />
<br />
=== Ubuntu PPA Installation ===<br />
For Ubuntu, the latest builds (both released and pulled from master branch) are maintained as PPAs on [https://launchpad.net/~gnuradio launchpad]. Be sure to uninstall any previously installed versions of gnuradio first.<br />
<br />
To access the current released version (3.10), add the gnuradio/gnuradio-releases ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases</pre><br />
<br />
To access the 3.9 released version, add the gnuradio/gnuradio-releases-3.9 ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.9</pre><br />
<br />
To access the 3.8 released version, add the gnuradio/gnuradio-releases-3.8 ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.8</pre><br />
<br />
To access the 3.7 released version (legacy), add the gnuradio/gnuradio-releases-3.7 ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.7</pre><br />
<br />
Then, update the apt sources, and install gnuradio<br />
<pre>$ sudo apt-get update</pre><br />
<pre>$ sudo apt install gnuradio</pre><br />
<br />
'''Attention:''' Do '''NOT''' try to install further packages like `gr-osmosdr` via Ubuntu's package management (i.e. using "apt"). Ubuntu will try to install a potentially incompatible version and your system will be in an undefined state.<br />
<br />
<br />
'''Note on 3.10 packaging dependency'''<br />
For some distributions you may need to install the python module 'packaging' using pip (which may also need to be installed).<br />
<br />
$ sudo apt install python3-pip<br />
$ pip install packaging<br />
<br />
==== Modtool on Ubuntu ====<br />
NOTE: On released builds for Ubuntu 18.04 (bionic), there is an issue using gr_modtool after GNU Radio has been installed from the PPA. This is due to byte-compiled code that remains in the modtool templates after installation. To work around this issue:<br />
<br />
<pre>$ cd /usr/share/gnuradio/modtool/templates/gr-newmod<br />
$ sudo py3clean .</pre><br />
<br />
This issue does not appear for Ubuntu 19 and later packages<br />
<br />
=== Fedora COPR Installation ===<br />
<br />
**NOTE: FEDORA COPR not currently maintained**<br />
<br />
Packages are available for Fedora 29, 30, 31 hosted under COPR:<br />
<br />
https://copr.fedorainfracloud.org/coprs/gnuradio/<br />
<br />
1. Add the repository:<br />
<br />
-- For the latest released version:<br />
<pre>$ sudo dnf copr enable gnuradio/gnuradio-releases </pre><br />
-- For the latest pull from git master:<br />
<pre>$ sudo dnf copr enable gnuradio/gnuradio-master </pre><br />
<br />
2. Install GNU Radio<br />
<pre>$ sudo dnf install gnuradio </pre><br />
<br />
== Windows ==<br />
<br />
See the [[CondaInstall|Conda install guide]] or [https://github.com/ryanvolz/radioconda radioconda] to install GNU Radio 3.8 or newer on Windows.<br /><br />
<br />
If you need to install GNU Radio from source refer to the [[WindowsInstall|Windows install guide]].<br />
<br />
'''Note''': GNU Radio support on Windows is improving significantly but remains less tested and there are known problems and even significant bugs which affect regular usage of GNU Radio Companion. Please report bugs on the [https://github.com/gnuradio/gnuradio/issues GitHub Issues page] and if you have Windows development experience please consider investigating some of the [https://github.com/gnuradio/gnuradio/issues?q=is%3Aopen+is%3Aissue+label%3AWindows known issues].<br />
<br />
== Mac OS X ==<br />
<br />
Refer to the [[MacInstall|Mac OS X install guide page]].<br />
<br />
= From Source =<br />
<br />
Binary installation should be sufficient for most users, and certainly for anyone who is new to GNU Radio. However, if you have special requirements, want the latest version, or the binary packages are not working for you, you may want to install GNU Radio from source.<br />
<br />
=== Notes ===<br />
<br />
* By default GNU Radio will be installed in the <code>/usr/local</code> directory. See notes about [[InstallingGR#Common_cmake_flags|-DCMAKE_INSTALL_PREFIX]] to install it elsewhere.<br />
* Running and developing out-of-tree modules does not require GNU Radio to be installed from source. <br />
* <b>If you want to use GNU Radio with a USRP, you FIRST must clone and install UHD</b>. See the [https://kb.ettus.com/Building_and_Installing_the_USRP_Open-Source_Toolchain_(UHD_and_GNU_Radio)_on_Linux UHD Installation Page] for more info, <b>OR</b> follow the instructions in [[InstallingGRFromSource_on_Raspberry_Pi#Load_prerequisites|Install UHD from source]].<br />
* To install on a Raspberry Pi, see [[InstallingGRFromSource on Raspberry Pi]].<br />
* To build from source from within a conda environment, see [[CondaInstall#Building GNU Radio from source within a conda environment|the conda install guide]].<br />
<br />
=== For GNU Radio 3.10, 3.9, and Main Branch ===<br />
<br />
This section describes how to install GNU Radio 3.10, 3.9, and the Main branch from source code.<br />
<br />
==== Installing Dependencies ====<br />
<br />
Refer to [[InstallingGR#Linux|this page for your specific Linux distro]] to find how to install dependencies. For example, on Ubuntu 20.04 [[UbuntuInstall#Focal_Fossa_.2820.04.29_through_Impish_Indri_.2821.10.29|use this command]].<br />
<br />
==== Installing Volk ====<br />
<br />
Since Volk is no longer considered as a submodule of GNU Radio (GNU Radio commit #80c04479da962d048d41165081b026aafdaa0316),<br> you <b>MUST FIRST</b> install Volk, and then install GNU Radio. <br />
<br />
The basic idea is the same, but instead of building Volk along with GNU Radio, you need to clone and build it separately. For this example, we will start in the home directory. You can, of course, use any directory you wish and the results will be the same.<br />
<br />
* <code>cd</code><br />
* <code>git clone --recursive https://github.com/gnuradio/volk.git</code><br />
* <code>cd volk</code><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
<b>Note:</b> In the following command, you can add <code>-DCMAKE_INSTALL_PREFIX=XXX</code> to install Volk into the PREFIX <code>XXX</code>; if not specified, then the PREFIX is <code>/usr/local</code>. See other CMake options in [[#Common_cmake_flags|Common cmake flags]].<br><br />
* <code>cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../</code><br />
* <code>make</code><br />
* <code>make test</code><br />
* <code>sudo make install</code><br />
<br />
If you're running Linux, then always remember to do the following command after installing any library:<br />
* <code>sudo ldconfig</code><br />
<br />
==== Installing GNU Radio ====<br />
<br />
* <code>cd</code><br />
* <code>git clone https://github.com/gnuradio/gnuradio.git</code><br />
* <code>cd gnuradio</code><br />
<b>Note:</b> If you want to build the <code>maint-3.10</code> or <code>maint-3.9</code> branch rather than the default <code>main</code> branch, enter:<br />
<code>git checkout maint-3.10</code> and then<br><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
<b>Note:</b> In the following command, you can add <code>-DCMAKE_INSTALL_PREFIX=XXX</code> to install GNU Radio into the PREFIX <code>XXX</code>; if not specified, then the PREFIX is <code>/usr/local</code>. See other CMake options in [[#Common_cmake_flags|Common cmake flags]].<br><br />
* <code>cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../</code><br />
* <code>make -j3</code> (e.g. if you want to use 3 CPU cores during the build. To use 8 do -j8, to use 1, leave out the -j flag.)<br />
<b>Note:</b> In the following command, it is very possible that not all tests pass. Generally any error is a sign of a missing dependency such as the Python interface to ZMQ or NumPy or SciPy, none of which are required for building GNU Radio but are required for testing.<br />
* <code>make test</code><br />
* <code>sudo make install</code><br />
If you're running Linux, then always remember to do the following command after installing any library:<br />
* <code>sudo ldconfig</code><br />
As an optional step to increase performance, we recommend running the following, although it can take 10-15 minutes and you can always do it later:<br />
* <code>volk_profile</code><br />
If you encounter "Cannot import gnuradio" error, then go to [[ModuleNotFoundError#B._Finding_the_Python_library|Finding the Python library]] to set your PYTHONPATH and LD_LIBRARY_PATH.<br><b>After setting these environment variables, you need to do</b> <code>sudo ldconfig</code> <b>again</b> for the Linux dynamic library loader to find the just-installed GNU Radio libraries.<br><br />
If you have installed in a custom path with <code>-DCMAKE_INSTALL_PREFIX=XXX</code>, you will need to add that path to $PATH in order to find gnuradio-companion.<br />
<br />
=== For GNU Radio 3.8 or Earlier ===<br />
<br />
==== Installing Dependencies ====<br />
<br />
Refer to [[InstallingGR#Linux|this page for your specific Linux distro]] to find how to install dependencies. For example, on Ubuntu 20.04 [[UbuntuInstall#Focal_Fossa_.2820.04.29_through_Impish_Indri_.2821.10.29|use this command]].<br />
<br />
==== Installing GNU Radio ====<br />
For this example, we will start in the home directory; you can, of course, use any directory you wish and the results will be the same.<br />
<br />
* <code>cd</code><br />
* <code>git clone https://github.com/gnuradio/gnuradio.git</code><br />
* <code>cd gnuradio</code><br />
<br />
<b>Note:</b> In the following command, change <code>maint-3.8</code> to some other branch or tag if you want to build a different version of GNU Radio; see [https://github.com/gnuradio/gnuradio/tags tags] for tagged releases including pre-releases ("rc"). For [https://github.com/gnuradio/gnuradio/branches branches], it's generally wise to stick with "master" (the default after cloning), and, currently: <code>maint-3.7</code> or <code>maint-3.8</code>. Here we checkout the <code>maint-3.8</code> branch, which contains the latest 3.8 release plus any fixes or augmentations to it that will be in the next 3.8 release.<br />
<br />
* <code>git checkout maint-3.8</code><br />
* <code>git submodule update --init --recursive</code><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
<br />
<b>Note:</b> In the following command, you can add <code>-DCMAKE_INSTALL_PREFIX=XXX</code> to install GNU Radio into the PREFIX <code>XXX</code>; if not specified, then the PREFIX is <code>/usr/local</code>. See other CMake options in [[#Common_cmake_flags|Common cmake flags]].<br><br />
<br />
* <code>cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../</code><br />
* <code>make -j3</code> (e.g. if you want to use 3 CPU cores during the build. To use 8 do -j8, to use 1 leave out the -j flag.)<br />
* <code>sudo make install</code><br />
<br />
If you're running Linux, then always remember to do the following command after installing any library:<br />
* <code>sudo ldconfig</code><br />
<br />
Go to [[ModuleNotFoundError#B._Finding_the_Python_library|Finding the Python library]] to set your PYTHONPATH and LD_LIBRARY_PATH.<br><b>After setting these environment variables, you need to do</b> <code>sudo ldconfig</code> <b>again</b> for the Linux dynamic library loader to find the just-installed GNU Radio libraries.<br><br />
If you have installed in a custom path with <code>-DCMAKE_INSTALL_PREFIX=XXX</code>, you will need to add that path to $PATH in order to find gnuradio-companion.<br />
<br />
==== For Ubuntu 18.04 ====<br />
<br />
An easy way to install GNU Radio 3.8 on many Ubuntu systems is to use the following commands (note that this skips the setup for UHD hardware):<br />
<br />
* <code>sudo apt install git cmake g++ libboost-all-dev libgmp-dev swig python3-numpy python3-mako python3-sphinx python3-lxml doxygen libfftw3-dev libsdl1.2-dev libgsl-dev libqwt-qt5-dev libqt5opengl5-dev python3-pyqt5 liblog4cpp5-dev libzmq3-dev python3-yaml python3-click python3-click-plugins python3-zmq python3-scipy python3-pip python3-gi-cairo</code><br />
* <code>pip3 install git+https://github.com/pyqtgraph/pyqtgraph@develop</code><br />
* <code>pip3 install numpy scipy</code><br />
* <code>echo 'export PYTHONPATH=/usr/local/lib/python3/dist-packages:usr/local/lib/python2.7/site-packages:$PYTHONPATH' >> ~/.bashrc</code><br />
* <code>echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.bashrc</code><br />
* <code>echo 'export PYTHONPATH=/usr/local/lib/python3/dist-packages:usr/local/lib/python2.7/site-packages:$PYTHONPATH' >> ~/.profile</code><br />
* <code>echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.profile</code><br />
* <code>cd ~/</code><br />
* <code>git clone --recursive https://github.com/gnuradio/gnuradio</code><br />
* <code>cd gnuradio</code><br />
* <code>git checkout maint-3.8</code><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
* <code>git pull --recurse-submodules=on</code><br />
* <code>git submodule update --init</code><br />
* <code>cmake -DENABLE_GR_UHD=OFF ..</code><br />
* <code>make -j $(nproc --all)</code><br />
* <code>sudo make install</code><br />
* <code>sudo ldconfig</code><br />
<br />
Once this is done, reboot your computer and GNU Radio should be all set for you.<br />
<br />
== Common cmake flags ==<br />
<br />
* <code>-DENABLE_GR_XXX=ON</code> This enables (or disables for =OFF) the GNU Radio component named XXX. You might not need all of them, and this way, you can compile quicker.<br />
* <code>-DCMAKE_INSTALL_PREFIX=XXX</code> Install your stuff to XXX.<br />
* <code>-DCMAKE_BUILD_TYPE=Debug</code> This causes gcc to add debug symbols to all binaries. Useful for debugging (otherwise, it decreases efficiency!)<br />
* <code>-DPYTHON_EXECUTABLE=/usr/bin/python{2,3}</code> This selects the Python version and executable to be used during build time and will determine which Python libraries will be used for building the Python bindings.<br />
<p>For a list of additional cmake flags, as well as minimum versions of dependencies, see [https://www.gnuradio.org/doc/doxygen/build_guide.html]</p><br />
<br />
= Using PyBOMBS =<br />
<br />
PyBOMBS used to be the go-to method for building GNU Radio, UHD, and various Out of Tree (OOT) modules from source and then installing them into an isolated directory rather than system-wide, not unlike a Python virtualenv. We are no longer including PyBOMBS as a recommended method of installing GNU Radio, unless you want to play around with old versions (e.g. GR 3.7, 3.8, and OOTs of matching version). The PyBOMBS documentation is in the PyBOMBS [https://github.com/gnuradio/pybombs#pybombs README].<br />
<br />
= VMs and Live Images =<br />
Over the years a number of Live Images and VMs have been created. There are currently no official versions but here are some current options:<br />
*[https://github.com/bastibl/instant-gnuradio Instant GNU Radio] A customizable, programmatically generated VM and live environment for GNU Radio. <br />
*[[UbuntuVM]] An Ubuntu 20.04 virtual machine image with GNU Radio 3.8.2.0, Fosphor, GQRX, and several other useful pieces of software. (Created using Instant GNU Radio)<br />
<br />
= OK, it's installed, what now? =<br />
<br />
If the installation worked without any trouble, you're ready to use GNU Radio! If you have no idea how to do that, the best place to start is with the [[Tutorials]].<br />
<br />
Optionally, you may run <code>volk_profile</code> on your terminal to help libvolk to determine the optimal kernels (may speed up GNU Radio). <br />
<br />
[[Category:Installation]]<br />
[[Category:Guide]]</div>777archttps://wiki.gnuradio.org/index.php?title=InstallingGR&diff=11601InstallingGR2022-03-08T15:18:17Z<p>777arc: </p>
<hr />
<div><div style="float:right"><br />
{{Template:BeginnerTutorials}}<br />
</div><br />
<br />
{| class="wikitable"<br />
|+ Install Quickstart<br>(Refer to the rest of this page for more OS and installation options)<br />
! Linux<br />
||<br />
# [https://releases.ubuntu.com/20.04/ Install Ubuntu 20.04] (either as a VM or natively)<br />
# <code>sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.9</code><br />
# <code>sudo apt-get update</code><br />
# <code>sudo apt-get install gnuradio</code><br />
||v3.9.5<br />
|-<br />
! Windows<br />
||<br />
# Install the latest [https://github.com/ryanvolz/radioconda/releases Radioconda installer]<br />
# Launch "GNU Radio Companion" from the Start menu<br />
||v3.10.0<br />
|-<br />
! macOS<br />
||<br />
# [https://brew.sh/ Install Homebrew]<br />
# <code>brew install gnuradio</code><br />
# [https://github.com/gnuradio/gnuradio/pull/4814#issuecomment-925190019 Until brew is updated to 3.9.4+ you'll have to do this quick fix]<br />
||v3.9.3<br />
|}<br />
<br />
<br />
= Types of Installation Methods =<br />
<br />
The recommended way to install GNU Radio on most platforms is using already available binary packages. Find your platform below in the [[#From_Binaries|From Binaries]] section for instructions on how to get GNU Radio through your regular package manager (e.g. [[#Ubuntu_PPA_Installation|Ubuntu PPA Installation]]), or visit the [[CondaInstall|Conda Installation]] page for instructions on how to use the Conda package manager to install GNU Radio on any Linux distribution, macOS, or Windows. For some platforms there are no binaries provided by available package managers or the GNU Radio project. In these cases please contact the maintainer of the package manager or the GNU Radio project to find a sensible way to provide binaries for your platform.<br />
<br />
In addition to using binaries, GNU Radio can be installed:<br />
<br />
# '''[[#From_Source|From source]]''' (for those who want full control)<br />
# '''[[#Using_PyBOMBS|Using PyBOMBS]]''' (for those who want it built from source and/or installed to a specific directory using a script)<br />
<br />
= From Binaries =<br />
<br />
== Linux ==<br />
<br />
Most distributions contain a package named <code>gnuradio</code> or similar in their standard repositories. For most use cases it is enough to install this package and start developing.<br />
<br />
The development of GNU Radio can be fast-paced, and binaries provided by your distribution may be outdated. '''Do check if the version you're installing is up to date! Sometimes old versions are not updated in the packaging systems.''' If you find a bug in a older GNU Radio version, please check if the bug still exists in the newer version of GNU Radio before filing a new issue.<br />
<br />
If the version shipped in your distribution is outdated please contact the corresponding maintainer to update it in the packaging system.<br />
<br />
Here are examples of how to install GNU Radio in various Linux distributions. <b>Click the link under &quot;Distribution&quot; for how to install dependencies.</b><br />
<br />
{|class="wikitable" style="margin: auto; width: 90%;"<br />
!scope="col"|Distribution<br />
!scope="col"|Command<br />
|-<br />
| [[UbuntuInstall|Debian/Ubuntu and derivates]]<br />
| <pre># apt install gnuradio</pre><br />
|-<br />
| [[FedoraInstall|Fedora]]<br />
| <pre># dnf install gnuradio</pre><br />
|-<br />
| RHEL/CentOS<br />
| <pre># yum install gnuradio</pre><br />
|-<br />
| [[ArchInstall|Archlinux]]<br />
| <pre># pacman -S gnuradio</pre><br />
|-<br />
| [[GentooInstall|Gentoo Linux]]<br />
| <pre># emerge net-wireless/gnuradio</pre><br />
|-<br />
| [[SuseInstall|Suse Linux]]<br />
| <br />
|-<br />
| [[InstallingGRFromSource_on_Raspberry_Pi|Raspberry Pi OS]]<br />
| <br />
|-<br />
|}<br />
<br />
On other distributions, simply use the appropriate package management command to install the <code>gnuradio</code> package and then please add it to this list. If you need newer versions or have a different platform please contact the package maintainer of your distribution or raise your issue on the mailing list.<br />
<br />
=== Ubuntu PPA Installation ===<br />
For Ubuntu, the latest builds (both released and pulled from master branch) are maintained as PPAs on [https://launchpad.net/~gnuradio launchpad]. Be sure to uninstall any previously installed versions of gnuradio first.<br />
<br />
To access the current released version (3.10), add the gnuradio/gnuradio-releases ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases</pre><br />
<br />
To access the 3.9 released version, add the gnuradio/gnuradio-releases-3.9 ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.9</pre><br />
<br />
To access the 3.8 released version, add the gnuradio/gnuradio-releases-3.8 ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.8</pre><br />
<br />
To access the 3.7 released version (legacy), add the gnuradio/gnuradio-releases-3.7 ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.7</pre><br />
<br />
Then, update the apt sources, and install gnuradio<br />
<pre>$ sudo apt-get update</pre><br />
<pre>$ sudo apt install gnuradio</pre><br />
<br />
'''Attention:''' Do '''NOT''' try to install further packages like `gr-osmosdr` via Ubuntu's package management (i.e. using "apt"). Ubuntu will try to install a potentially incompatible version and your system will be in an undefined state.<br />
<br />
<br />
'''Note on 3.10 packaging dependency'''<br />
For some distributions you may need to install the python module 'packaging' using pip (which may also need to be installed).<br />
<br />
$ sudo apt install python3-pip<br />
$ pip install packaging<br />
<br />
==== Modtool on Ubuntu ====<br />
NOTE: On released builds for Ubuntu 18.04 (bionic), there is an issue using gr_modtool after GNU Radio has been installed from the PPA. This is due to byte-compiled code that remains in the modtool templates after installation. To work around this issue:<br />
<br />
<pre>$ cd /usr/share/gnuradio/modtool/templates/gr-newmod<br />
$ sudo py3clean .</pre><br />
<br />
This issue does not appear for Ubuntu 19 and later packages<br />
<br />
=== Fedora COPR Installation ===<br />
<br />
**NOTE: FEDORA COPR not currently maintained**<br />
<br />
Packages are available for Fedora 29, 30, 31 hosted under COPR:<br />
<br />
https://copr.fedorainfracloud.org/coprs/gnuradio/<br />
<br />
1. Add the repository:<br />
<br />
-- For the latest released version:<br />
<pre>$ sudo dnf copr enable gnuradio/gnuradio-releases </pre><br />
-- For the latest pull from git master:<br />
<pre>$ sudo dnf copr enable gnuradio/gnuradio-master </pre><br />
<br />
2. Install GNU Radio<br />
<pre>$ sudo dnf install gnuradio </pre><br />
<br />
== Windows ==<br />
<br />
See the [[CondaInstall|Conda install guide]] or [https://github.com/ryanvolz/radioconda radioconda] to install GNU Radio 3.8 or newer on Windows.<br /><br />
<br />
If you need to install GNU Radio from source refer to the [[WindowsInstall|Windows install guide]].<br />
<br />
'''Note''': GNU Radio support on Windows is improving significantly but remains less tested and there are known problems and even significant bugs which affect regular usage of GNU Radio Companion. Please report bugs on the [https://github.com/gnuradio/gnuradio/issues GitHub Issues page] and if you have Windows development experience please consider investigating some of the [https://github.com/gnuradio/gnuradio/issues?q=is%3Aopen+is%3Aissue+label%3AWindows known issues].<br />
<br />
== Mac OS X ==<br />
<br />
Refer to the [[MacInstall|Mac OS X install guide page]].<br />
<br />
= From Source =<br />
<br />
Binary installation should be sufficient for most users, and certainly for anyone who is new to GNU Radio. However, if you have special requirements, want the latest version, or the binary packages are not working for you, you may want to install GNU Radio from source.<br />
<br />
=== Notes ===<br />
<br />
* By default GNU Radio will be installed in the <code>/usr/local</code> directory. See notes about [[InstallingGR#Common_cmake_flags|-DCMAKE_INSTALL_PREFIX]] to install it elsewhere.<br />
* Running and developing out-of-tree modules does not require GNU Radio to be installed from source. <br />
* <b>If you want to use GNU Radio with a USRP, you FIRST must clone and install UHD</b>. See the [https://kb.ettus.com/Building_and_Installing_the_USRP_Open-Source_Toolchain_(UHD_and_GNU_Radio)_on_Linux UHD Installation Page] for more info, <b>OR</b> follow the instructions in [[InstallingGRFromSource_on_Raspberry_Pi#Load_prerequisites|Install UHD from source]].<br />
* To install on a Raspberry Pi, see [[InstallingGRFromSource on Raspberry Pi]].<br />
* To build from source from within a conda environment, see [[CondaInstall#Building GNU Radio from source within a conda environment|the conda install guide]].<br />
<br />
=== For GNU Radio 3.10, 3.9, and Main Branch ===<br />
<br />
This section describes how to install GNU Radio 3.10, 3.9, and the Main branch from source code.<br />
<br />
==== Installing Dependencies ====<br />
<br />
Refer to [[InstallingGR#Linux|this page for your specific Linux distro]] to find how to install dependencies. For example, on Ubuntu 20.04 [[UbuntuInstall#Focal_Fossa_.2820.04.29_through_Impish_Indri_.2821.10.29|use this command]].<br />
<br />
==== Installing Volk ====<br />
<br />
Since Volk is no longer considered as a submodule of GNU Radio (GNU Radio commit #80c04479da962d048d41165081b026aafdaa0316),<br> you <b>MUST FIRST</b> install Volk, and then install GNU Radio. <br />
<br />
The basic idea is the same, but instead of building Volk along with GNU Radio, you need to clone and build it separately. For this example, we will start in the home directory. You can, of course, use any directory you wish and the results will be the same.<br />
<br />
* <code>cd</code><br />
* <code>git clone --recursive https://github.com/gnuradio/volk.git</code><br />
* <code>cd volk</code><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
<b>Note:</b> In the following command, you can add <code>-DCMAKE_INSTALL_PREFIX=XXX</code> to install Volk into the PREFIX <code>XXX</code>; if not specified, then the PREFIX is <code>/usr/local</code>. See other CMake options in [[#Common_cmake_flags|Common cmake flags]].<br><br />
* <code>cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../</code><br />
* <code>make</code><br />
* <code>make test</code><br />
* <code>sudo make install</code><br />
<br />
If you're running Linux, then always remember to do the following command after installing any library:<br />
* <code>sudo ldconfig</code><br />
<br />
==== Installing GNU Radio ====<br />
<br />
* <code>cd</code><br />
* <code>git clone https://github.com/gnuradio/gnuradio.git</code><br />
* <code>cd gnuradio</code><br />
<b>Note:</b> If you want to build the <code>maint-3.10</code> or <code>maint-3.9</code> branch rather than the default <code>main</code> branch, enter:<br />
<code>git checkout maint-3.10</code> and then<br><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
<b>Note:</b> In the following command, you can add <code>-DCMAKE_INSTALL_PREFIX=XXX</code> to install GNU Radio into the PREFIX <code>XXX</code>; if not specified, then the PREFIX is <code>/usr/local</code>. See other CMake options in [[#Common_cmake_flags|Common cmake flags]].<br><br />
* <code>cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../</code><br />
* <code>make -j3</code> (e.g. if you want to use 3 CPU cores during the build. To use 8 do -j8, to use 1, leave out the -j flag.)<br />
<b>Note:</b> In the following command, it is very possible that not all tests pass. Generally any error is a sign of a missing dependency such as the Python interface to ZMQ or NumPy or SciPy, none of which are required for building GNU Radio but are required for testing.<br />
* <code>make test</code><br />
* <code>sudo make install</code><br />
If you're running Linux, then always remember to do the following command after installing any library:<br />
* <code>sudo ldconfig</code><br />
As an optional step to increase performance, we recommend running the following, although it can take 10-15 minutes and you can always do it later:<br />
* <code>volk_profile</code><br />
If you encounter "Cannot import gnuradio" error, then go to [[ModuleNotFoundError#B._Finding_the_Python_library|Finding the Python library]] to set your PYTHONPATH and LD_LIBRARY_PATH.<br><b>After setting these environment variables, you need to do</b> <code>sudo ldconfig</code> <b>again</b> for the Linux dynamic library loader to find the just-installed GNU Radio libraries.<br><br />
If you have installed in a custom path with <code>-DCMAKE_INSTALL_PREFIX=XXX</code>, you will need to add that path to $PATH in order to find gnuradio-companion.<br />
<br />
=== For GNU Radio 3.8 or Earlier ===<br />
<br />
==== Installing Dependencies ====<br />
<br />
Refer to [[InstallingGR#Linux|this page for your specific Linux distro]] to find how to install dependencies. For example, on Ubuntu 20.04 [[UbuntuInstall#Focal_Fossa_.2820.04.29_through_Impish_Indri_.2821.10.29|use this command]].<br />
<br />
==== Installing GNU Radio ====<br />
For this example, we will start in the home directory; you can, of course, use any directory you wish and the results will be the same.<br />
<br />
* <code>cd</code><br />
* <code>git clone https://github.com/gnuradio/gnuradio.git</code><br />
* <code>cd gnuradio</code><br />
<br />
<b>Note:</b> In the following command, change <code>maint-3.8</code> to some other branch or tag if you want to build a different version of GNU Radio; see [https://github.com/gnuradio/gnuradio/tags tags] for tagged releases including pre-releases ("rc"). For [https://github.com/gnuradio/gnuradio/branches branches], it's generally wise to stick with "master" (the default after cloning), and, currently: <code>maint-3.7</code> or <code>maint-3.8</code>. Here we checkout the <code>maint-3.8</code> branch, which contains the latest 3.8 release plus any fixes or augmentations to it that will be in the next 3.8 release.<br />
<br />
* <code>git checkout maint-3.8</code><br />
* <code>git submodule update --init --recursive</code><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
<br />
<b>Note:</b> In the following command, you can add <code>-DCMAKE_INSTALL_PREFIX=XXX</code> to install GNU Radio into the PREFIX <code>XXX</code>; if not specified, then the PREFIX is <code>/usr/local</code>. See other CMake options in [[#Common_cmake_flags|Common cmake flags]].<br><br />
<br />
* <code>cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../</code><br />
* <code>make -j3</code> (e.g. if you want to use 3 CPU cores during the build. To use 8 do -j8, to use 1 leave out the -j flag.)<br />
* <code>sudo make install</code><br />
<br />
If you're running Linux, then always remember to do the following command after installing any library:<br />
* <code>sudo ldconfig</code><br />
<br />
Go to [[ModuleNotFoundError#B._Finding_the_Python_library|Finding the Python library]] to set your PYTHONPATH and LD_LIBRARY_PATH.<br><b>After setting these environment variables, you need to do</b> <code>sudo ldconfig</code> <b>again</b> for the Linux dynamic library loader to find the just-installed GNU Radio libraries.<br><br />
If you have installed in a custom path with <code>-DCMAKE_INSTALL_PREFIX=XXX</code>, you will need to add that path to $PATH in order to find gnuradio-companion.<br />
<br />
==== For Ubuntu 18.04 ====<br />
<br />
An easy way to install GNU Radio 3.8 on many Ubuntu systems is to use the following commands (note that this skips the setup for UHD hardware):<br />
<br />
* <code>sudo apt install git cmake g++ libboost-all-dev libgmp-dev swig python3-numpy python3-mako python3-sphinx python3-lxml doxygen libfftw3-dev libsdl1.2-dev libgsl-dev libqwt-qt5-dev libqt5opengl5-dev python3-pyqt5 liblog4cpp5-dev libzmq3-dev python3-yaml python3-click python3-click-plugins python3-zmq python3-scipy python3-pip python3-gi-cairo</code><br />
* <code>pip3 install git+https://github.com/pyqtgraph/pyqtgraph@develop</code><br />
* <code>pip3 install numpy scipy</code><br />
* <code>echo 'export PYTHONPATH=/usr/local/lib/python3/dist-packages:usr/local/lib/python2.7/site-packages:$PYTHONPATH' >> ~/.bashrc</code><br />
* <code>echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.bashrc</code><br />
* <code>echo 'export PYTHONPATH=/usr/local/lib/python3/dist-packages:usr/local/lib/python2.7/site-packages:$PYTHONPATH' >> ~/.profile</code><br />
* <code>echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.profile</code><br />
* <code>cd ~/</code><br />
* <code>git clone --recursive https://github.com/gnuradio/gnuradio</code><br />
* <code>cd gnuradio</code><br />
* <code>git checkout maint-3.8</code><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
* <code>git pull --recurse-submodules=on</code><br />
* <code>git submodule update --init</code><br />
* <code>cmake -DENABLE_GR_UHD=OFF ..</code><br />
* <code>make -j $(nproc --all)</code><br />
* <code>sudo make install</code><br />
* <code>sudo ldconfig</code><br />
<br />
Once this is done, reboot your computer and GNU Radio should be all set for you.<br />
<br />
== Common cmake flags ==<br />
<br />
* <code>-DENABLE_GR_XXX=ON</code> This enables (or disables for =OFF) the GNU Radio component named XXX. You might not need all of them, and this way, you can compile quicker.<br />
* <code>-DCMAKE_INSTALL_PREFIX=XXX</code> Install your stuff to XXX.<br />
* <code>-DCMAKE_BUILD_TYPE=Debug</code> This causes gcc to add debug symbols to all binaries. Useful for debugging (otherwise, it decreases efficiency!)<br />
* <code>-DPYTHON_EXECUTABLE=/usr/bin/python{2,3}</code> This selects the Python version and executable to be used during build time and will determine which Python libraries will be used for building the Python bindings.<br />
<p>For a list of additional cmake flags, as well as minimum versions of dependencies, see [https://www.gnuradio.org/doc/doxygen/build_guide.html]</p><br />
<br />
= Using PyBOMBS =<br />
<br />
PyBOMBS used to be the go-to method for building GNU Radio, UHD, and various Out of Tree (OOT) modules from source and then installing them into an isolated directory rather than system-wide, not unlike a Python virtualenv. We are no longer including PyBOMBS as a recommended method of installing GNU Radio, unless you want to play around with old versions (e.g. GR 3.7, 3.8, and OOTs of matching version). The PyBOMBS documentation is in the PyBOMBS [https://github.com/gnuradio/pybombs#pybombs README].<br />
<br />
= VMs and Live Images =<br />
Over the years a number of Live Images and VMs have been created. There are currently no official versions but here are some current options:<br />
*[https://github.com/bastibl/instant-gnuradio Instant GNU Radio] A customizable, programmatically generated VM and live environment for GNU Radio. <br />
*[[UbuntuVM]] An Ubuntu 20.04 virtual machine image with GNU Radio 3.8.2.0, Fosphor, GQRX, and several other useful pieces of software. (Created using Instant GNU Radio)<br />
<br />
= OK, it's installed, what now? =<br />
<br />
If the installation worked without any trouble, you're ready to use GNU Radio! If you have no idea how to do that, the best place to start is with the [[Tutorials]].<br />
<br />
Optionally, you may run <code>volk_profile</code> on your terminal to help libvolk to determine the optimal kernels (may speed up GNU Radio). <br />
<br />
[[Category:Installation]]<br />
[[Category:Guide]]</div>777archttps://wiki.gnuradio.org/index.php?title=InstallingGR&diff=11600InstallingGR2022-03-08T15:18:07Z<p>777arc: </p>
<hr />
<div><div style="float:right"><br />
{{Template:BeginnerTutorials}}<br />
</div><br />
<br />
{| class="wikitable"<br />
|+ Install Quickstart<br>(Refer to the rest of this page for more OS and installation options)<br />
! Linux<br />
||<br />
# [https://releases.ubuntu.com/20.04/ Install Ubuntu 20.04] (either as a VM or natively)<br />
# <code>sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.9</code><br />
# <code>sudo apt-get update</code><br />
# <code>sudo apt-get install gnuradio</code><br />
||v3.9.5<br />
|-<br />
! Windows<br />
||<br />
# Install the latest [https://github.com/ryanvolz/radioconda/releases Radioconda installer]<br />
# Launch "GNU Radio Companion" from the Start menu<br />
||v3.10.0<br />
|-<br />
! macOS<br />
||<br />
# [https://brew.sh/ Install Homebrew]<br />
# <code>brew install gnuradio</code><br />
# [https://github.com/gnuradio/gnuradio/pull/4814#issuecomment-925190019 Until brew is updated to 3.9.4.0+ you'll have to do this quick fix]<br />
||v3.9.3<br />
|}<br />
<br />
<br />
= Types of Installation Methods =<br />
<br />
The recommended way to install GNU Radio on most platforms is using already available binary packages. Find your platform below in the [[#From_Binaries|From Binaries]] section for instructions on how to get GNU Radio through your regular package manager (e.g. [[#Ubuntu_PPA_Installation|Ubuntu PPA Installation]]), or visit the [[CondaInstall|Conda Installation]] page for instructions on how to use the Conda package manager to install GNU Radio on any Linux distribution, macOS, or Windows. For some platforms there are no binaries provided by available package managers or the GNU Radio project. In these cases please contact the maintainer of the package manager or the GNU Radio project to find a sensible way to provide binaries for your platform.<br />
<br />
In addition to using binaries, GNU Radio can be installed:<br />
<br />
# '''[[#From_Source|From source]]''' (for those who want full control)<br />
# '''[[#Using_PyBOMBS|Using PyBOMBS]]''' (for those who want it built from source and/or installed to a specific directory using a script)<br />
<br />
= From Binaries =<br />
<br />
== Linux ==<br />
<br />
Most distributions contain a package named <code>gnuradio</code> or similar in their standard repositories. For most use cases it is enough to install this package and start developing.<br />
<br />
The development of GNU Radio can be fast-paced, and binaries provided by your distribution may be outdated. '''Do check if the version you're installing is up to date! Sometimes old versions are not updated in the packaging systems.''' If you find a bug in a older GNU Radio version, please check if the bug still exists in the newer version of GNU Radio before filing a new issue.<br />
<br />
If the version shipped in your distribution is outdated please contact the corresponding maintainer to update it in the packaging system.<br />
<br />
Here are examples of how to install GNU Radio in various Linux distributions. <b>Click the link under &quot;Distribution&quot; for how to install dependencies.</b><br />
<br />
{|class="wikitable" style="margin: auto; width: 90%;"<br />
!scope="col"|Distribution<br />
!scope="col"|Command<br />
|-<br />
| [[UbuntuInstall|Debian/Ubuntu and derivates]]<br />
| <pre># apt install gnuradio</pre><br />
|-<br />
| [[FedoraInstall|Fedora]]<br />
| <pre># dnf install gnuradio</pre><br />
|-<br />
| RHEL/CentOS<br />
| <pre># yum install gnuradio</pre><br />
|-<br />
| [[ArchInstall|Archlinux]]<br />
| <pre># pacman -S gnuradio</pre><br />
|-<br />
| [[GentooInstall|Gentoo Linux]]<br />
| <pre># emerge net-wireless/gnuradio</pre><br />
|-<br />
| [[SuseInstall|Suse Linux]]<br />
| <br />
|-<br />
| [[InstallingGRFromSource_on_Raspberry_Pi|Raspberry Pi OS]]<br />
| <br />
|-<br />
|}<br />
<br />
On other distributions, simply use the appropriate package management command to install the <code>gnuradio</code> package and then please add it to this list. If you need newer versions or have a different platform please contact the package maintainer of your distribution or raise your issue on the mailing list.<br />
<br />
=== Ubuntu PPA Installation ===<br />
For Ubuntu, the latest builds (both released and pulled from master branch) are maintained as PPAs on [https://launchpad.net/~gnuradio launchpad]. Be sure to uninstall any previously installed versions of gnuradio first.<br />
<br />
To access the current released version (3.10), add the gnuradio/gnuradio-releases ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases</pre><br />
<br />
To access the 3.9 released version, add the gnuradio/gnuradio-releases-3.9 ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.9</pre><br />
<br />
To access the 3.8 released version, add the gnuradio/gnuradio-releases-3.8 ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.8</pre><br />
<br />
To access the 3.7 released version (legacy), add the gnuradio/gnuradio-releases-3.7 ppa (removing other gnuradio ppas if already configured)<br />
<br />
<pre>$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.7</pre><br />
<br />
Then, update the apt sources, and install gnuradio<br />
<pre>$ sudo apt-get update</pre><br />
<pre>$ sudo apt install gnuradio</pre><br />
<br />
'''Attention:''' Do '''NOT''' try to install further packages like `gr-osmosdr` via Ubuntu's package management (i.e. using "apt"). Ubuntu will try to install a potentially incompatible version and your system will be in an undefined state.<br />
<br />
<br />
'''Note on 3.10 packaging dependency'''<br />
For some distributions you may need to install the python module 'packaging' using pip (which may also need to be installed).<br />
<br />
$ sudo apt install python3-pip<br />
$ pip install packaging<br />
<br />
==== Modtool on Ubuntu ====<br />
NOTE: On released builds for Ubuntu 18.04 (bionic), there is an issue using gr_modtool after GNU Radio has been installed from the PPA. This is due to byte-compiled code that remains in the modtool templates after installation. To work around this issue:<br />
<br />
<pre>$ cd /usr/share/gnuradio/modtool/templates/gr-newmod<br />
$ sudo py3clean .</pre><br />
<br />
This issue does not appear for Ubuntu 19 and later packages<br />
<br />
=== Fedora COPR Installation ===<br />
<br />
**NOTE: FEDORA COPR not currently maintained**<br />
<br />
Packages are available for Fedora 29, 30, 31 hosted under COPR:<br />
<br />
https://copr.fedorainfracloud.org/coprs/gnuradio/<br />
<br />
1. Add the repository:<br />
<br />
-- For the latest released version:<br />
<pre>$ sudo dnf copr enable gnuradio/gnuradio-releases </pre><br />
-- For the latest pull from git master:<br />
<pre>$ sudo dnf copr enable gnuradio/gnuradio-master </pre><br />
<br />
2. Install GNU Radio<br />
<pre>$ sudo dnf install gnuradio </pre><br />
<br />
== Windows ==<br />
<br />
See the [[CondaInstall|Conda install guide]] or [https://github.com/ryanvolz/radioconda radioconda] to install GNU Radio 3.8 or newer on Windows.<br /><br />
<br />
If you need to install GNU Radio from source refer to the [[WindowsInstall|Windows install guide]].<br />
<br />
'''Note''': GNU Radio support on Windows is improving significantly but remains less tested and there are known problems and even significant bugs which affect regular usage of GNU Radio Companion. Please report bugs on the [https://github.com/gnuradio/gnuradio/issues GitHub Issues page] and if you have Windows development experience please consider investigating some of the [https://github.com/gnuradio/gnuradio/issues?q=is%3Aopen+is%3Aissue+label%3AWindows known issues].<br />
<br />
== Mac OS X ==<br />
<br />
Refer to the [[MacInstall|Mac OS X install guide page]].<br />
<br />
= From Source =<br />
<br />
Binary installation should be sufficient for most users, and certainly for anyone who is new to GNU Radio. However, if you have special requirements, want the latest version, or the binary packages are not working for you, you may want to install GNU Radio from source.<br />
<br />
=== Notes ===<br />
<br />
* By default GNU Radio will be installed in the <code>/usr/local</code> directory. See notes about [[InstallingGR#Common_cmake_flags|-DCMAKE_INSTALL_PREFIX]] to install it elsewhere.<br />
* Running and developing out-of-tree modules does not require GNU Radio to be installed from source. <br />
* <b>If you want to use GNU Radio with a USRP, you FIRST must clone and install UHD</b>. See the [https://kb.ettus.com/Building_and_Installing_the_USRP_Open-Source_Toolchain_(UHD_and_GNU_Radio)_on_Linux UHD Installation Page] for more info, <b>OR</b> follow the instructions in [[InstallingGRFromSource_on_Raspberry_Pi#Load_prerequisites|Install UHD from source]].<br />
* To install on a Raspberry Pi, see [[InstallingGRFromSource on Raspberry Pi]].<br />
* To build from source from within a conda environment, see [[CondaInstall#Building GNU Radio from source within a conda environment|the conda install guide]].<br />
<br />
=== For GNU Radio 3.10, 3.9, and Main Branch ===<br />
<br />
This section describes how to install GNU Radio 3.10, 3.9, and the Main branch from source code.<br />
<br />
==== Installing Dependencies ====<br />
<br />
Refer to [[InstallingGR#Linux|this page for your specific Linux distro]] to find how to install dependencies. For example, on Ubuntu 20.04 [[UbuntuInstall#Focal_Fossa_.2820.04.29_through_Impish_Indri_.2821.10.29|use this command]].<br />
<br />
==== Installing Volk ====<br />
<br />
Since Volk is no longer considered as a submodule of GNU Radio (GNU Radio commit #80c04479da962d048d41165081b026aafdaa0316),<br> you <b>MUST FIRST</b> install Volk, and then install GNU Radio. <br />
<br />
The basic idea is the same, but instead of building Volk along with GNU Radio, you need to clone and build it separately. For this example, we will start in the home directory. You can, of course, use any directory you wish and the results will be the same.<br />
<br />
* <code>cd</code><br />
* <code>git clone --recursive https://github.com/gnuradio/volk.git</code><br />
* <code>cd volk</code><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
<b>Note:</b> In the following command, you can add <code>-DCMAKE_INSTALL_PREFIX=XXX</code> to install Volk into the PREFIX <code>XXX</code>; if not specified, then the PREFIX is <code>/usr/local</code>. See other CMake options in [[#Common_cmake_flags|Common cmake flags]].<br><br />
* <code>cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../</code><br />
* <code>make</code><br />
* <code>make test</code><br />
* <code>sudo make install</code><br />
<br />
If you're running Linux, then always remember to do the following command after installing any library:<br />
* <code>sudo ldconfig</code><br />
<br />
==== Installing GNU Radio ====<br />
<br />
* <code>cd</code><br />
* <code>git clone https://github.com/gnuradio/gnuradio.git</code><br />
* <code>cd gnuradio</code><br />
<b>Note:</b> If you want to build the <code>maint-3.10</code> or <code>maint-3.9</code> branch rather than the default <code>main</code> branch, enter:<br />
<code>git checkout maint-3.10</code> and then<br><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
<b>Note:</b> In the following command, you can add <code>-DCMAKE_INSTALL_PREFIX=XXX</code> to install GNU Radio into the PREFIX <code>XXX</code>; if not specified, then the PREFIX is <code>/usr/local</code>. See other CMake options in [[#Common_cmake_flags|Common cmake flags]].<br><br />
* <code>cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../</code><br />
* <code>make -j3</code> (e.g. if you want to use 3 CPU cores during the build. To use 8 do -j8, to use 1, leave out the -j flag.)<br />
<b>Note:</b> In the following command, it is very possible that not all tests pass. Generally any error is a sign of a missing dependency such as the Python interface to ZMQ or NumPy or SciPy, none of which are required for building GNU Radio but are required for testing.<br />
* <code>make test</code><br />
* <code>sudo make install</code><br />
If you're running Linux, then always remember to do the following command after installing any library:<br />
* <code>sudo ldconfig</code><br />
As an optional step to increase performance, we recommend running the following, although it can take 10-15 minutes and you can always do it later:<br />
* <code>volk_profile</code><br />
If you encounter "Cannot import gnuradio" error, then go to [[ModuleNotFoundError#B._Finding_the_Python_library|Finding the Python library]] to set your PYTHONPATH and LD_LIBRARY_PATH.<br><b>After setting these environment variables, you need to do</b> <code>sudo ldconfig</code> <b>again</b> for the Linux dynamic library loader to find the just-installed GNU Radio libraries.<br><br />
If you have installed in a custom path with <code>-DCMAKE_INSTALL_PREFIX=XXX</code>, you will need to add that path to $PATH in order to find gnuradio-companion.<br />
<br />
=== For GNU Radio 3.8 or Earlier ===<br />
<br />
==== Installing Dependencies ====<br />
<br />
Refer to [[InstallingGR#Linux|this page for your specific Linux distro]] to find how to install dependencies. For example, on Ubuntu 20.04 [[UbuntuInstall#Focal_Fossa_.2820.04.29_through_Impish_Indri_.2821.10.29|use this command]].<br />
<br />
==== Installing GNU Radio ====<br />
For this example, we will start in the home directory; you can, of course, use any directory you wish and the results will be the same.<br />
<br />
* <code>cd</code><br />
* <code>git clone https://github.com/gnuradio/gnuradio.git</code><br />
* <code>cd gnuradio</code><br />
<br />
<b>Note:</b> In the following command, change <code>maint-3.8</code> to some other branch or tag if you want to build a different version of GNU Radio; see [https://github.com/gnuradio/gnuradio/tags tags] for tagged releases including pre-releases ("rc"). For [https://github.com/gnuradio/gnuradio/branches branches], it's generally wise to stick with "master" (the default after cloning), and, currently: <code>maint-3.7</code> or <code>maint-3.8</code>. Here we checkout the <code>maint-3.8</code> branch, which contains the latest 3.8 release plus any fixes or augmentations to it that will be in the next 3.8 release.<br />
<br />
* <code>git checkout maint-3.8</code><br />
* <code>git submodule update --init --recursive</code><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
<br />
<b>Note:</b> In the following command, you can add <code>-DCMAKE_INSTALL_PREFIX=XXX</code> to install GNU Radio into the PREFIX <code>XXX</code>; if not specified, then the PREFIX is <code>/usr/local</code>. See other CMake options in [[#Common_cmake_flags|Common cmake flags]].<br><br />
<br />
* <code>cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../</code><br />
* <code>make -j3</code> (e.g. if you want to use 3 CPU cores during the build. To use 8 do -j8, to use 1 leave out the -j flag.)<br />
* <code>sudo make install</code><br />
<br />
If you're running Linux, then always remember to do the following command after installing any library:<br />
* <code>sudo ldconfig</code><br />
<br />
Go to [[ModuleNotFoundError#B._Finding_the_Python_library|Finding the Python library]] to set your PYTHONPATH and LD_LIBRARY_PATH.<br><b>After setting these environment variables, you need to do</b> <code>sudo ldconfig</code> <b>again</b> for the Linux dynamic library loader to find the just-installed GNU Radio libraries.<br><br />
If you have installed in a custom path with <code>-DCMAKE_INSTALL_PREFIX=XXX</code>, you will need to add that path to $PATH in order to find gnuradio-companion.<br />
<br />
==== For Ubuntu 18.04 ====<br />
<br />
An easy way to install GNU Radio 3.8 on many Ubuntu systems is to use the following commands (note that this skips the setup for UHD hardware):<br />
<br />
* <code>sudo apt install git cmake g++ libboost-all-dev libgmp-dev swig python3-numpy python3-mako python3-sphinx python3-lxml doxygen libfftw3-dev libsdl1.2-dev libgsl-dev libqwt-qt5-dev libqt5opengl5-dev python3-pyqt5 liblog4cpp5-dev libzmq3-dev python3-yaml python3-click python3-click-plugins python3-zmq python3-scipy python3-pip python3-gi-cairo</code><br />
* <code>pip3 install git+https://github.com/pyqtgraph/pyqtgraph@develop</code><br />
* <code>pip3 install numpy scipy</code><br />
* <code>echo 'export PYTHONPATH=/usr/local/lib/python3/dist-packages:usr/local/lib/python2.7/site-packages:$PYTHONPATH' >> ~/.bashrc</code><br />
* <code>echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.bashrc</code><br />
* <code>echo 'export PYTHONPATH=/usr/local/lib/python3/dist-packages:usr/local/lib/python2.7/site-packages:$PYTHONPATH' >> ~/.profile</code><br />
* <code>echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.profile</code><br />
* <code>cd ~/</code><br />
* <code>git clone --recursive https://github.com/gnuradio/gnuradio</code><br />
* <code>cd gnuradio</code><br />
* <code>git checkout maint-3.8</code><br />
* <code>mkdir build</code><br />
* <code>cd build</code><br />
* <code>git pull --recurse-submodules=on</code><br />
* <code>git submodule update --init</code><br />
* <code>cmake -DENABLE_GR_UHD=OFF ..</code><br />
* <code>make -j $(nproc --all)</code><br />
* <code>sudo make install</code><br />
* <code>sudo ldconfig</code><br />
<br />
Once this is done, reboot your computer and GNU Radio should be all set for you.<br />
<br />
== Common cmake flags ==<br />
<br />
* <code>-DENABLE_GR_XXX=ON</code> This enables (or disables for =OFF) the GNU Radio component named XXX. You might not need all of them, and this way, you can compile quicker.<br />
* <code>-DCMAKE_INSTALL_PREFIX=XXX</code> Install your stuff to XXX.<br />
* <code>-DCMAKE_BUILD_TYPE=Debug</code> This causes gcc to add debug symbols to all binaries. Useful for debugging (otherwise, it decreases efficiency!)<br />
* <code>-DPYTHON_EXECUTABLE=/usr/bin/python{2,3}</code> This selects the Python version and executable to be used during build time and will determine which Python libraries will be used for building the Python bindings.<br />
<p>For a list of additional cmake flags, as well as minimum versions of dependencies, see [https://www.gnuradio.org/doc/doxygen/build_guide.html]</p><br />
<br />
= Using PyBOMBS =<br />
<br />
PyBOMBS used to be the go-to method for building GNU Radio, UHD, and various Out of Tree (OOT) modules from source and then installing them into an isolated directory rather than system-wide, not unlike a Python virtualenv. We are no longer including PyBOMBS as a recommended method of installing GNU Radio, unless you want to play around with old versions (e.g. GR 3.7, 3.8, and OOTs of matching version). The PyBOMBS documentation is in the PyBOMBS [https://github.com/gnuradio/pybombs#pybombs README].<br />
<br />
= VMs and Live Images =<br />
Over the years a number of Live Images and VMs have been created. There are currently no official versions but here are some current options:<br />
*[https://github.com/bastibl/instant-gnuradio Instant GNU Radio] A customizable, programmatically generated VM and live environment for GNU Radio. <br />
*[[UbuntuVM]] An Ubuntu 20.04 virtual machine image with GNU Radio 3.8.2.0, Fosphor, GQRX, and several other useful pieces of software. (Created using Instant GNU Radio)<br />
<br />
= OK, it's installed, what now? =<br />
<br />
If the installation worked without any trouble, you're ready to use GNU Radio! If you have no idea how to do that, the best place to start is with the [[Tutorials]].<br />
<br />
Optionally, you may run <code>volk_profile</code> on your terminal to help libvolk to determine the optimal kernels (may speed up GNU Radio). <br />
<br />
[[Category:Installation]]<br />
[[Category:Guide]]</div>777archttps://wiki.gnuradio.org/index.php?title=Main_Page&diff=11592Main Page2022-03-05T03:17:17Z<p>777arc: /* Hardware */</p>
<hr />
<div>[[File:FunCube_2_meter_NB_FM_fg.png|upright=1.8|thumb|right|Example 2 meter NBFM receiver]]<br />
<br />
GNU Radio is a free &amp; 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.<br />
<br />
= Getting started =<br />
<br />
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.<br />
<br />
* [[WhatIsGR|What is GNU Radio and why do I want it?]] - Read this if you really have no idea what this project is about.<br />
* [[InstallingGR|Installing GNU Radio]] - This will explain all the steps to get a working installation of GNU Radio.<br />
* [[Tutorials|Tutorials]] - The '''GNU Radio Academy''' is a complete course from beginner to advanced user.<br />
* [[Chat|GNU Radio Community Chat]] - For real-time interaction, come join our chat rooms on [https://chat.gnuradio.org Matrix]<br />
* [http://cgran.org The Comprehensive GNU Radio Archive Network (CGRAN)] - A list of 3rd party GNU Radio apps, check out some examples of what folks use GNU Radio to do.<br />
* [[FAQ|Frequently Asked Questions]] - Check this page before asking questions on the mailing list.<br />
<br />
= Documentation =<br />
<br />
* User Documentation<br />
*# The [[Usage Manual]] contains information about various aspects of GNU Radio not specific to a certain block.<br />
*# [[:Category:Block_Docs|List of Blocks]] (or just wiki search the block name)<br />
* Developer Documentation<br />
*# Our [http://gnuradio.org/doc/doxygen/index.html C++ Manual and API Reference] includes documentation targeted for developers. It is based on Doxygen, using markup comments in the public header files. <br />
*# [[GNU Radio 3.10 OOT Module Porting Guide|3.9 to 3.10 OOT Module Porting Guide]]<br />
*# [[GNU Radio 3.9 OOT Module Porting Guide|3.8 to 3.9 OOT Module Porting Guide]]<br />
*# [[GNU Radio 3.8 OOT Module Porting Guide|3.7 to 3.8 OOT Module Porting Guide]]<br />
* [[Tutorials|Tutorials]] - Several tutorials for varying skill levels.<br />
<br />
= Community &amp; Communicating =<br />
<br />
There's a nice community of people involved in GNU Radio. Here's some pointers on how to connect with us.<br />
<br />
* Our [[Code_of_Conduct|Code of Conduct]] describes our expectations for community participation.<br />
* [[ReportingErrors|Asking Questions and Reporting Errors]] - We're helpful people, but '''we expect you to try to help yourself first.'''<br />
* [[MailingLists|Mailing lists]] - Where most of the communication happens, but please read the previous article first.<br />
* [[HowToGetInvolved|How to get involved]] - Do you want to help with the project, or simply become part of the GNU Radio Community? Read this!<br />
* [[Chat|Chat]] - For a more real-time interaction, come join our chat rooms on [https://chat.gnuradio.org Matrix]<br />
* [[MoreCommunity|More GNU Radio on the web and in social media]]<br />
* [https://www.gnuradio.org/about/organization/ GNU Radio organizing members]<br />
* [[WorkingGroups|Working Groups]] - Communities of interest for various aspects of the GNU Radio ecosystem.<br />
* [[DevelopersCalls]] - The developers have monthly VoIP conferences which are open to join.<br />
* [[GNURadioConference|The GNU Radio Conference (GRCon)]] - archive pages: [http://gnuradio.org/grcon-2018/ 2018] | [http://gnuradio.org/grcon-2017/ 2017] | [http://gnuradio.org/grcon-2016/ 2016] | [http://www.trondeau.com/gnu-radio-conference-2015/ 2015] | [http://www.trondeau.com/gnu-radio-conference-2014/ 2014] | [http://www.trondeau.com/gnu-radio-conference-2013/ 2013] | [http://www.trondeau.com/gnu-radio-conference-2012/ 2012] | [http://www.trondeau.com/gnu-radio-conference-2011/ 2011]<br />
* [[Archive of Hack Fests]] and miscellaneous [[Presentations]]<br />
* We have a [[Calendar]] containing project calls and other events<br />
<br />
= Developing GNU Radio =<br />
<br />
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|tutorials]] are also relevant.<br />
<br />
* [[Development|Development Information for Contributors]]<br />
* [[Coding_guide_impl|Coding and style guidelines for GNU Radio]]<br />
* [[BlocksCodingGuide|Block structure guide]]<br />
* [[ChangeSets|API and Code Version Changes]]<br />
* [http://www.trondeau.com/blog/2013/9/15/explaining-the-gnu-radio-scheduler.html An overview of the GNU Radio scheduler]<br />
* YouTube feed from Ettus Research [http://www.youtube.com/user/ettusresearch/feed featuring demos and howtos] for using GNU Radio and USRPs.<br />
* [[Embedded|Embedded Development with GNURadio]]<br />
* [[GSoC|Summer of Code Programs]] - Student Programs from Google (GSoC) and ESA (SOCIS), see [[GSoCIdeas|Summer of Code Project Ideas List]]<br />
<br />
= Hardware =<br />
<br />
GNU Radio 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.<br />
<br />
= Further information and 3rd party extensions =<br />
<br />
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.<br />
<br />
* [[SuggestedReading|Suggested Reading]] - A list of non-GNU Radio-related literature, including good introductions to signal processing, radio engineering and software development.<br />
* [[ExternalDocumentation|Documentation and Videos for GNU Radio on other servers]]<br />
* [[OurUsers|Real world users]] and [[Support|Commercial Support/Training]]<br />
* [[AcademicPapers|Selected Academic papers involving GNU Radio]]<br />
* [http://gqrx.dk/ GQRX] - Very nice spectrum analysis tool, powered by GNU Radio</div>777archttps://wiki.gnuradio.org/index.php?title=Main_Page&diff=11591Main Page2022-03-05T03:17:00Z<p>777arc: /* Hardware */</p>
<hr />
<div>[[File:FunCube_2_meter_NB_FM_fg.png|upright=1.8|thumb|right|Example 2 meter NBFM receiver]]<br />
<br />
GNU Radio is a free &amp; 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.<br />
<br />
= Getting started =<br />
<br />
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.<br />
<br />
* [[WhatIsGR|What is GNU Radio and why do I want it?]] - Read this if you really have no idea what this project is about.<br />
* [[InstallingGR|Installing GNU Radio]] - This will explain all the steps to get a working installation of GNU Radio.<br />
* [[Tutorials|Tutorials]] - The '''GNU Radio Academy''' is a complete course from beginner to advanced user.<br />
* [[Chat|GNU Radio Community Chat]] - For real-time interaction, come join our chat rooms on [https://chat.gnuradio.org Matrix]<br />
* [http://cgran.org The Comprehensive GNU Radio Archive Network (CGRAN)] - A list of 3rd party GNU Radio apps, check out some examples of what folks use GNU Radio to do.<br />
* [[FAQ|Frequently Asked Questions]] - Check this page before asking questions on the mailing list.<br />
<br />
= Documentation =<br />
<br />
* User Documentation<br />
*# The [[Usage Manual]] contains information about various aspects of GNU Radio not specific to a certain block.<br />
*# [[:Category:Block_Docs|List of Blocks]] (or just wiki search the block name)<br />
* Developer Documentation<br />
*# Our [http://gnuradio.org/doc/doxygen/index.html C++ Manual and API Reference] includes documentation targeted for developers. It is based on Doxygen, using markup comments in the public header files. <br />
*# [[GNU Radio 3.10 OOT Module Porting Guide|3.9 to 3.10 OOT Module Porting Guide]]<br />
*# [[GNU Radio 3.9 OOT Module Porting Guide|3.8 to 3.9 OOT Module Porting Guide]]<br />
*# [[GNU Radio 3.8 OOT Module Porting Guide|3.7 to 3.8 OOT Module Porting Guide]]<br />
* [[Tutorials|Tutorials]] - Several tutorials for varying skill levels.<br />
<br />
= Community &amp; Communicating =<br />
<br />
There's a nice community of people involved in GNU Radio. Here's some pointers on how to connect with us.<br />
<br />
* Our [[Code_of_Conduct|Code of Conduct]] describes our expectations for community participation.<br />
* [[ReportingErrors|Asking Questions and Reporting Errors]] - We're helpful people, but '''we expect you to try to help yourself first.'''<br />
* [[MailingLists|Mailing lists]] - Where most of the communication happens, but please read the previous article first.<br />
* [[HowToGetInvolved|How to get involved]] - Do you want to help with the project, or simply become part of the GNU Radio Community? Read this!<br />
* [[Chat|Chat]] - For a more real-time interaction, come join our chat rooms on [https://chat.gnuradio.org Matrix]<br />
* [[MoreCommunity|More GNU Radio on the web and in social media]]<br />
* [https://www.gnuradio.org/about/organization/ GNU Radio organizing members]<br />
* [[WorkingGroups|Working Groups]] - Communities of interest for various aspects of the GNU Radio ecosystem.<br />
* [[DevelopersCalls]] - The developers have monthly VoIP conferences which are open to join.<br />
* [[GNURadioConference|The GNU Radio Conference (GRCon)]] - archive pages: [http://gnuradio.org/grcon-2018/ 2018] | [http://gnuradio.org/grcon-2017/ 2017] | [http://gnuradio.org/grcon-2016/ 2016] | [http://www.trondeau.com/gnu-radio-conference-2015/ 2015] | [http://www.trondeau.com/gnu-radio-conference-2014/ 2014] | [http://www.trondeau.com/gnu-radio-conference-2013/ 2013] | [http://www.trondeau.com/gnu-radio-conference-2012/ 2012] | [http://www.trondeau.com/gnu-radio-conference-2011/ 2011]<br />
* [[Archive of Hack Fests]] and miscellaneous [[Presentations]]<br />
* We have a [[Calendar]] containing project calls and other events<br />
<br />
= Developing GNU Radio =<br />
<br />
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|tutorials]] are also relevant.<br />
<br />
* [[Development|Development Information for Contributors]]<br />
* [[Coding_guide_impl|Coding and style guidelines for GNU Radio]]<br />
* [[BlocksCodingGuide|Block structure guide]]<br />
* [[ChangeSets|API and Code Version Changes]]<br />
* [http://www.trondeau.com/blog/2013/9/15/explaining-the-gnu-radio-scheduler.html An overview of the GNU Radio scheduler]<br />
* YouTube feed from Ettus Research [http://www.youtube.com/user/ettusresearch/feed featuring demos and howtos] for using GNU Radio and USRPs.<br />
* [[Embedded|Embedded Development with GNURadio]]<br />
* [[GSoC|Summer of Code Programs]] - Student Programs from Google (GSoC) and ESA (SOCIS), see [[GSoCIdeas|Summer of Code Project Ideas List]]<br />
<br />
= Hardware =<br />
<br />
GNU Radio 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.<br />
<br />
For a list of supported devices, see our [[Hardware]] page.<br />
<br />
= Further information and 3rd party extensions =<br />
<br />
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.<br />
<br />
* [[SuggestedReading|Suggested Reading]] - A list of non-GNU Radio-related literature, including good introductions to signal processing, radio engineering and software development.<br />
* [[ExternalDocumentation|Documentation and Videos for GNU Radio on other servers]]<br />
* [[OurUsers|Real world users]] and [[Support|Commercial Support/Training]]<br />
* [[AcademicPapers|Selected Academic papers involving GNU Radio]]<br />
* [http://gqrx.dk/ GQRX] - Very nice spectrum analysis tool, powered by GNU Radio</div>777archttps://wiki.gnuradio.org/index.php?title=Main_Page&diff=11590Main Page2022-03-05T03:16:16Z<p>777arc: I shuffled around the main page so that Newbie_Guide_to_GNU_Radio is now redundant</p>
<hr />
<div>[[File:FunCube_2_meter_NB_FM_fg.png|upright=1.8|thumb|right|Example 2 meter NBFM receiver]]<br />
<br />
GNU Radio is a free &amp; 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.<br />
<br />
= Getting started =<br />
<br />
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.<br />
<br />
* [[WhatIsGR|What is GNU Radio and why do I want it?]] - Read this if you really have no idea what this project is about.<br />
* [[InstallingGR|Installing GNU Radio]] - This will explain all the steps to get a working installation of GNU Radio.<br />
* [[Tutorials|Tutorials]] - The '''GNU Radio Academy''' is a complete course from beginner to advanced user.<br />
* [[Chat|GNU Radio Community Chat]] - For real-time interaction, come join our chat rooms on [https://chat.gnuradio.org Matrix]<br />
* [http://cgran.org The Comprehensive GNU Radio Archive Network (CGRAN)] - A list of 3rd party GNU Radio apps, check out some examples of what folks use GNU Radio to do.<br />
* [[FAQ|Frequently Asked Questions]] - Check this page before asking questions on the mailing list.<br />
<br />
= Documentation =<br />
<br />
* User Documentation<br />
*# The [[Usage Manual]] contains information about various aspects of GNU Radio not specific to a certain block.<br />
*# [[:Category:Block_Docs|List of Blocks]] (or just wiki search the block name)<br />
* Developer Documentation<br />
*# Our [http://gnuradio.org/doc/doxygen/index.html C++ Manual and API Reference] includes documentation targeted for developers. It is based on Doxygen, using markup comments in the public header files. <br />
*# [[GNU Radio 3.10 OOT Module Porting Guide|3.9 to 3.10 OOT Module Porting Guide]]<br />
*# [[GNU Radio 3.9 OOT Module Porting Guide|3.8 to 3.9 OOT Module Porting Guide]]<br />
*# [[GNU Radio 3.8 OOT Module Porting Guide|3.7 to 3.8 OOT Module Porting Guide]]<br />
* [[Tutorials|Tutorials]] - Several tutorials for varying skill levels.<br />
<br />
= Community &amp; Communicating =<br />
<br />
There's a nice community of people involved in GNU Radio. Here's some pointers on how to connect with us.<br />
<br />
* Our [[Code_of_Conduct|Code of Conduct]] describes our expectations for community participation.<br />
* [[ReportingErrors|Asking Questions and Reporting Errors]] - We're helpful people, but '''we expect you to try to help yourself first.'''<br />
* [[MailingLists|Mailing lists]] - Where most of the communication happens, but please read the previous article first.<br />
* [[HowToGetInvolved|How to get involved]] - Do you want to help with the project, or simply become part of the GNU Radio Community? Read this!<br />
* [[Chat|Chat]] - For a more real-time interaction, come join our chat rooms on [https://chat.gnuradio.org Matrix]<br />
* [[MoreCommunity|More GNU Radio on the web and in social media]]<br />
* [https://www.gnuradio.org/about/organization/ GNU Radio organizing members]<br />
* [[WorkingGroups|Working Groups]] - Communities of interest for various aspects of the GNU Radio ecosystem.<br />
* [[DevelopersCalls]] - The developers have monthly VoIP conferences which are open to join.<br />
* [[GNURadioConference|The GNU Radio Conference (GRCon)]] - archive pages: [http://gnuradio.org/grcon-2018/ 2018] | [http://gnuradio.org/grcon-2017/ 2017] | [http://gnuradio.org/grcon-2016/ 2016] | [http://www.trondeau.com/gnu-radio-conference-2015/ 2015] | [http://www.trondeau.com/gnu-radio-conference-2014/ 2014] | [http://www.trondeau.com/gnu-radio-conference-2013/ 2013] | [http://www.trondeau.com/gnu-radio-conference-2012/ 2012] | [http://www.trondeau.com/gnu-radio-conference-2011/ 2011]<br />
* [[Archive of Hack Fests]] and miscellaneous [[Presentations]]<br />
* We have a [[Calendar]] containing project calls and other events<br />
<br />
= Developing GNU Radio =<br />
<br />
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|tutorials]] are also relevant.<br />
<br />
* [[Development|Development Information for Contributors]]<br />
* [[Coding_guide_impl|Coding and style guidelines for GNU Radio]]<br />
* [[BlocksCodingGuide|Block structure guide]]<br />
* [[ChangeSets|API and Code Version Changes]]<br />
* [http://www.trondeau.com/blog/2013/9/15/explaining-the-gnu-radio-scheduler.html An overview of the GNU Radio scheduler]<br />
* YouTube feed from Ettus Research [http://www.youtube.com/user/ettusresearch/feed featuring demos and howtos] for using GNU Radio and USRPs.<br />
* [[Embedded|Embedded Development with GNURadio]]<br />
* [[GSoC|Summer of Code Programs]] - Student Programs from Google (GSoC) and ESA (SOCIS), see [[GSoCIdeas|Summer of Code Project Ideas List]]<br />
<br />
= Hardware =<br />
<br />
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.<br />
<br />
For a list of supported devices, see our [[Hardware]] page.<br />
<br />
= Further information and 3rd party extensions =<br />
<br />
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.<br />
<br />
* [[SuggestedReading|Suggested Reading]] - A list of non-GNU Radio-related literature, including good introductions to signal processing, radio engineering and software development.<br />
* [[ExternalDocumentation|Documentation and Videos for GNU Radio on other servers]]<br />
* [[OurUsers|Real world users]] and [[Support|Commercial Support/Training]]<br />
* [[AcademicPapers|Selected Academic papers involving GNU Radio]]<br />
* [http://gqrx.dk/ GQRX] - Very nice spectrum analysis tool, powered by GNU Radio</div>777archttps://wiki.gnuradio.org/index.php?title=Main_Page&diff=11589Main Page2022-03-05T03:15:55Z<p>777arc: /* Getting started */</p>
<hr />
<div>[[File:FunCube_2_meter_NB_FM_fg.png|upright=1.8|thumb|right|Example 2 meter NBFM receiver]]<br />
<br />
GNU Radio is a free &amp; 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.<br />
<br />
= Getting started =<br />
<br />
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.<br />
<br />
* [[Newbie_Guide_to_GNU_Radio|A Newbie's Guide to GNU Radio]] - A beginner's overview.<br />
* [[WhatIsGR|What is GNU Radio and why do I want it?]] - Read this if you really have no idea what this project is about.<br />
* [[InstallingGR|Installing GNU Radio]] - This will explain all the steps to get a working installation of GNU Radio.<br />
* [[Tutorials|Tutorials]] - The '''GNU Radio Academy''' is a complete course from beginner to advanced user.<br />
* [[Chat|GNU Radio Community Chat]] - For real-time interaction, come join our chat rooms on [https://chat.gnuradio.org Matrix]<br />
* [http://cgran.org The Comprehensive GNU Radio Archive Network (CGRAN)] - A list of 3rd party GNU Radio apps, check out some examples of what folks use GNU Radio to do.<br />
* [[FAQ|Frequently Asked Questions]] - Check this page before asking questions on the mailing list.<br />
<br />
= Documentation =<br />
<br />
* User Documentation<br />
*# The [[Usage Manual]] contains information about various aspects of GNU Radio not specific to a certain block.<br />
*# [[:Category:Block_Docs|List of Blocks]] (or just wiki search the block name)<br />
* Developer Documentation<br />
*# Our [http://gnuradio.org/doc/doxygen/index.html C++ Manual and API Reference] includes documentation targeted for developers. It is based on Doxygen, using markup comments in the public header files. <br />
*# [[GNU Radio 3.10 OOT Module Porting Guide|3.9 to 3.10 OOT Module Porting Guide]]<br />
*# [[GNU Radio 3.9 OOT Module Porting Guide|3.8 to 3.9 OOT Module Porting Guide]]<br />
*# [[GNU Radio 3.8 OOT Module Porting Guide|3.7 to 3.8 OOT Module Porting Guide]]<br />
* [[Tutorials|Tutorials]] - Several tutorials for varying skill levels.<br />
<br />
= Community &amp; Communicating =<br />
<br />
There's a nice community of people involved in GNU Radio. Here's some pointers on how to connect with us.<br />
<br />
* Our [[Code_of_Conduct|Code of Conduct]] describes our expectations for community participation.<br />
* [[ReportingErrors|Asking Questions and Reporting Errors]] - We're helpful people, but '''we expect you to try to help yourself first.'''<br />
* [[MailingLists|Mailing lists]] - Where most of the communication happens, but please read the previous article first.<br />
* [[HowToGetInvolved|How to get involved]] - Do you want to help with the project, or simply become part of the GNU Radio Community? Read this!<br />
* [[Chat|Chat]] - For a more real-time interaction, come join our chat rooms on [https://chat.gnuradio.org Matrix]<br />
* [[MoreCommunity|More GNU Radio on the web and in social media]]<br />
* [https://www.gnuradio.org/about/organization/ GNU Radio organizing members]<br />
* [[WorkingGroups|Working Groups]] - Communities of interest for various aspects of the GNU Radio ecosystem.<br />
* [[DevelopersCalls]] - The developers have monthly VoIP conferences which are open to join.<br />
* [[GNURadioConference|The GNU Radio Conference (GRCon)]] - archive pages: [http://gnuradio.org/grcon-2018/ 2018] | [http://gnuradio.org/grcon-2017/ 2017] | [http://gnuradio.org/grcon-2016/ 2016] | [http://www.trondeau.com/gnu-radio-conference-2015/ 2015] | [http://www.trondeau.com/gnu-radio-conference-2014/ 2014] | [http://www.trondeau.com/gnu-radio-conference-2013/ 2013] | [http://www.trondeau.com/gnu-radio-conference-2012/ 2012] | [http://www.trondeau.com/gnu-radio-conference-2011/ 2011]<br />
* [[Archive of Hack Fests]] and miscellaneous [[Presentations]]<br />
* We have a [[Calendar]] containing project calls and other events<br />
<br />
= Developing GNU Radio =<br />
<br />
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|tutorials]] are also relevant.<br />
<br />
* [[Development|Development Information for Contributors]]<br />
* [[Coding_guide_impl|Coding and style guidelines for GNU Radio]]<br />
* [[BlocksCodingGuide|Block structure guide]]<br />
* [[ChangeSets|API and Code Version Changes]]<br />
* [http://www.trondeau.com/blog/2013/9/15/explaining-the-gnu-radio-scheduler.html An overview of the GNU Radio scheduler]<br />
* YouTube feed from Ettus Research [http://www.youtube.com/user/ettusresearch/feed featuring demos and howtos] for using GNU Radio and USRPs.<br />
* [[Embedded|Embedded Development with GNURadio]]<br />
* [[GSoC|Summer of Code Programs]] - Student Programs from Google (GSoC) and ESA (SOCIS), see [[GSoCIdeas|Summer of Code Project Ideas List]]<br />
<br />
= Hardware =<br />
<br />
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.<br />
<br />
For a list of supported devices, see our [[Hardware]] page.<br />
<br />
= Further information and 3rd party extensions =<br />
<br />
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.<br />
<br />
* [[SuggestedReading|Suggested Reading]] - A list of non-GNU Radio-related literature, including good introductions to signal processing, radio engineering and software development.<br />
* [[ExternalDocumentation|Documentation and Videos for GNU Radio on other servers]]<br />
* [[OurUsers|Real world users]] and [[Support|Commercial Support/Training]]<br />
* [[AcademicPapers|Selected Academic papers involving GNU Radio]]<br />
* [http://gqrx.dk/ GQRX] - Very nice spectrum analysis tool, powered by GNU Radio</div>777archttps://wiki.gnuradio.org/index.php?title=Main_Page&diff=11588Main Page2022-03-05T03:15:48Z<p>777arc: /* Getting started */</p>
<hr />
<div>[[File:FunCube_2_meter_NB_FM_fg.png|upright=1.8|thumb|right|Example 2 meter NBFM receiver]]<br />
<br />
GNU Radio is a free &amp; 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.<br />
<br />
= Getting started =<br />
<br />
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.<br />
<br />
* [[Newbie_Guide_to_GNU_Radio|A Newbie's Guide to GNU Radio]] - A beginner's overview.<br />
* [[WhatIsGR|What is GNU Radio and why do I want it?]] - Read this if you really have no idea what this project is about.<br />
* [[InstallingGR|Installing GNU Radio]] - This will explain all the steps to get a working installation of GNU Radio.<br />
* [[Tutorials|Tutorials]] - The '''GNU Radio Academy''' is a complete course from beginner to advanced user.<br />
* [[GNU Radio Community Chat|Chat]] - For real-time interaction, come join our chat rooms on [https://chat.gnuradio.org Matrix]<br />
* [http://cgran.org The Comprehensive GNU Radio Archive Network (CGRAN)] - A list of 3rd party GNU Radio apps, check out some examples of what folks use GNU Radio to do.<br />
* [[FAQ|Frequently Asked Questions]] - Check this page before asking questions on the mailing list.<br />
<br />
= Documentation =<br />
<br />
* User Documentation<br />
*# The [[Usage Manual]] contains information about various aspects of GNU Radio not specific to a certain block.<br />
*# [[:Category:Block_Docs|List of Blocks]] (or just wiki search the block name)<br />
* Developer Documentation<br />
*# Our [http://gnuradio.org/doc/doxygen/index.html C++ Manual and API Reference] includes documentation targeted for developers. It is based on Doxygen, using markup comments in the public header files. <br />
*# [[GNU Radio 3.10 OOT Module Porting Guide|3.9 to 3.10 OOT Module Porting Guide]]<br />
*# [[GNU Radio 3.9 OOT Module Porting Guide|3.8 to 3.9 OOT Module Porting Guide]]<br />
*# [[GNU Radio 3.8 OOT Module Porting Guide|3.7 to 3.8 OOT Module Porting Guide]]<br />
* [[Tutorials|Tutorials]] - Several tutorials for varying skill levels.<br />
<br />
= Community &amp; Communicating =<br />
<br />
There's a nice community of people involved in GNU Radio. Here's some pointers on how to connect with us.<br />
<br />
* Our [[Code_of_Conduct|Code of Conduct]] describes our expectations for community participation.<br />
* [[ReportingErrors|Asking Questions and Reporting Errors]] - We're helpful people, but '''we expect you to try to help yourself first.'''<br />
* [[MailingLists|Mailing lists]] - Where most of the communication happens, but please read the previous article first.<br />
* [[HowToGetInvolved|How to get involved]] - Do you want to help with the project, or simply become part of the GNU Radio Community? Read this!<br />
* [[Chat|Chat]] - For a more real-time interaction, come join our chat rooms on [https://chat.gnuradio.org Matrix]<br />
* [[MoreCommunity|More GNU Radio on the web and in social media]]<br />
* [https://www.gnuradio.org/about/organization/ GNU Radio organizing members]<br />
* [[WorkingGroups|Working Groups]] - Communities of interest for various aspects of the GNU Radio ecosystem.<br />
* [[DevelopersCalls]] - The developers have monthly VoIP conferences which are open to join.<br />
* [[GNURadioConference|The GNU Radio Conference (GRCon)]] - archive pages: [http://gnuradio.org/grcon-2018/ 2018] | [http://gnuradio.org/grcon-2017/ 2017] | [http://gnuradio.org/grcon-2016/ 2016] | [http://www.trondeau.com/gnu-radio-conference-2015/ 2015] | [http://www.trondeau.com/gnu-radio-conference-2014/ 2014] | [http://www.trondeau.com/gnu-radio-conference-2013/ 2013] | [http://www.trondeau.com/gnu-radio-conference-2012/ 2012] | [http://www.trondeau.com/gnu-radio-conference-2011/ 2011]<br />
* [[Archive of Hack Fests]] and miscellaneous [[Presentations]]<br />
* We have a [[Calendar]] containing project calls and other events<br />
<br />
= Developing GNU Radio =<br />
<br />
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|tutorials]] are also relevant.<br />
<br />
* [[Development|Development Information for Contributors]]<br />
* [[Coding_guide_impl|Coding and style guidelines for GNU Radio]]<br />
* [[BlocksCodingGuide|Block structure guide]]<br />
* [[ChangeSets|API and Code Version Changes]]<br />
* [http://www.trondeau.com/blog/2013/9/15/explaining-the-gnu-radio-scheduler.html An overview of the GNU Radio scheduler]<br />
* YouTube feed from Ettus Research [http://www.youtube.com/user/ettusresearch/feed featuring demos and howtos] for using GNU Radio and USRPs.<br />
* [[Embedded|Embedded Development with GNURadio]]<br />
* [[GSoC|Summer of Code Programs]] - Student Programs from Google (GSoC) and ESA (SOCIS), see [[GSoCIdeas|Summer of Code Project Ideas List]]<br />
<br />
= Hardware =<br />
<br />
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.<br />
<br />
For a list of supported devices, see our [[Hardware]] page.<br />
<br />
= Further information and 3rd party extensions =<br />
<br />
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.<br />
<br />
* [[SuggestedReading|Suggested Reading]] - A list of non-GNU Radio-related literature, including good introductions to signal processing, radio engineering and software development.<br />
* [[ExternalDocumentation|Documentation and Videos for GNU Radio on other servers]]<br />
* [[OurUsers|Real world users]] and [[Support|Commercial Support/Training]]<br />
* [[AcademicPapers|Selected Academic papers involving GNU Radio]]<br />
* [http://gqrx.dk/ GQRX] - Very nice spectrum analysis tool, powered by GNU Radio</div>777archttps://wiki.gnuradio.org/index.php?title=Main_Page&diff=11587Main Page2022-03-05T03:15:35Z<p>777arc: /* Getting started */</p>
<hr />
<div>[[File:FunCube_2_meter_NB_FM_fg.png|upright=1.8|thumb|right|Example 2 meter NBFM receiver]]<br />
<br />
GNU Radio is a free &amp; 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.<br />
<br />
= Getting started =<br />
<br />
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.<br />
<br />
* [[Newbie_Guide_to_GNU_Radio|A Newbie's Guide to GNU Radio]] - A beginner's overview.<br />
* [[WhatIsGR|What is GNU Radio and why do I want it?]] - Read this if you really have no idea what this project is about.<br />
* [[InstallingGR|Installing GNU Radio]] - This will explain all the steps to get a working installation of GNU Radio.<br />
* [[Tutorials|Tutorials]] - The '''GNU Radio Academy''' is a complete course from beginner to advanced user.<br />
* [[Chat|Chat]] - For real-time interaction, come join our chat rooms on [https://chat.gnuradio.org Matrix]<br />
* [http://cgran.org The Comprehensive GNU Radio Archive Network (CGRAN)] - A list of 3rd party GNU Radio apps, check out some examples of what folks use GNU Radio to do.<br />
* [[FAQ|Frequently Asked Questions]] - Check this page before asking questions on the mailing list.<br />
<br />
= Documentation =<br />
<br />
* User Documentation<br />
*# The [[Usage Manual]] contains information about various aspects of GNU Radio not specific to a certain block.<br />
*# [[:Category:Block_Docs|List of Blocks]] (or just wiki search the block name)<br />
* Developer Documentation<br />
*# Our [http://gnuradio.org/doc/doxygen/index.html C++ Manual and API Reference] includes documentation targeted for developers. It is based on Doxygen, using markup comments in the public header files. <br />
*# [[GNU Radio 3.10 OOT Module Porting Guide|3.9 to 3.10 OOT Module Porting Guide]]<br />
*# [[GNU Radio 3.9 OOT Module Porting Guide|3.8 to 3.9 OOT Module Porting Guide]]<br />
*# [[GNU Radio 3.8 OOT Module Porting Guide|3.7 to 3.8 OOT Module Porting Guide]]<br />
* [[Tutorials|Tutorials]] - Several tutorials for varying skill levels.<br />
<br />
= Community &amp; Communicating =<br />
<br />
There's a nice community of people involved in GNU Radio. Here's some pointers on how to connect with us.<br />
<br />
* Our [[Code_of_Conduct|Code of Conduct]] describes our expectations for community participation.<br />
* [[ReportingErrors|Asking Questions and Reporting Errors]] - We're helpful people, but '''we expect you to try to help yourself first.'''<br />
* [[MailingLists|Mailing lists]] - Where most of the communication happens, but please read the previous article first.<br />
* [[HowToGetInvolved|How to get involved]] - Do you want to help with the project, or simply become part of the GNU Radio Community? Read this!<br />
* [[Chat|Chat]] - For a more real-time interaction, come join our chat rooms on [https://chat.gnuradio.org Matrix]<br />
* [[MoreCommunity|More GNU Radio on the web and in social media]]<br />
* [https://www.gnuradio.org/about/organization/ GNU Radio organizing members]<br />
* [[WorkingGroups|Working Groups]] - Communities of interest for various aspects of the GNU Radio ecosystem.<br />
* [[DevelopersCalls]] - The developers have monthly VoIP conferences which are open to join.<br />
* [[GNURadioConference|The GNU Radio Conference (GRCon)]] - archive pages: [http://gnuradio.org/grcon-2018/ 2018] | [http://gnuradio.org/grcon-2017/ 2017] | [http://gnuradio.org/grcon-2016/ 2016] | [http://www.trondeau.com/gnu-radio-conference-2015/ 2015] | [http://www.trondeau.com/gnu-radio-conference-2014/ 2014] | [http://www.trondeau.com/gnu-radio-conference-2013/ 2013] | [http://www.trondeau.com/gnu-radio-conference-2012/ 2012] | [http://www.trondeau.com/gnu-radio-conference-2011/ 2011]<br />
* [[Archive of Hack Fests]] and miscellaneous [[Presentations]]<br />
* We have a [[Calendar]] containing project calls and other events<br />
<br />
= Developing GNU Radio =<br />
<br />
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|tutorials]] are also relevant.<br />
<br />
* [[Development|Development Information for Contributors]]<br />
* [[Coding_guide_impl|Coding and style guidelines for GNU Radio]]<br />
* [[BlocksCodingGuide|Block structure guide]]<br />
* [[ChangeSets|API and Code Version Changes]]<br />
* [http://www.trondeau.com/blog/2013/9/15/explaining-the-gnu-radio-scheduler.html An overview of the GNU Radio scheduler]<br />
* YouTube feed from Ettus Research [http://www.youtube.com/user/ettusresearch/feed featuring demos and howtos] for using GNU Radio and USRPs.<br />
* [[Embedded|Embedded Development with GNURadio]]<br />
* [[GSoC|Summer of Code Programs]] - Student Programs from Google (GSoC) and ESA (SOCIS), see [[GSoCIdeas|Summer of Code Project Ideas List]]<br />
<br />
= Hardware =<br />
<br />
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.<br />
<br />
For a list of supported devices, see our [[Hardware]] page.<br />
<br />
= Further information and 3rd party extensions =<br />
<br />
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.<br />
<br />
* [[SuggestedReading|Suggested Reading]] - A list of non-GNU Radio-related literature, including good introductions to signal processing, radio engineering and software development.<br />
* [[ExternalDocumentation|Documentation and Videos for GNU Radio on other servers]]<br />
* [[OurUsers|Real world users]] and [[Support|Commercial Support/Training]]<br />
* [[AcademicPapers|Selected Academic papers involving GNU Radio]]<br />
* [http://gqrx.dk/ GQRX] - Very nice spectrum analysis tool, powered by GNU Radio</div>777archttps://wiki.gnuradio.org/index.php?title=Main_Page&diff=11586Main Page2022-03-05T03:14:15Z<p>777arc: </p>
<hr />
<div>[[File:FunCube_2_meter_NB_FM_fg.png|upright=1.8|thumb|right|Example 2 meter NBFM receiver]]<br />
<br />
GNU Radio is a free &amp; 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.<br />
<br />
= Getting started =<br />
<br />
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.<br />
<br />
* [[Newbie_Guide_to_GNU_Radio|A Newbie's Guide to GNU Radio]] - A beginner's overview.<br />
* [[WhatIsGR|What is GNU Radio and why do I want it?]] - Read this if you really have no idea what this project is about.<br />
* [[InstallingGR|Installing GNU Radio]] - This will explain all the steps to get a working installation of GNU Radio.<br />
* [[Tutorials|Tutorials]] - The '''GNU Radio Academy''' is a complete course from beginner to advanced user.<br />
* [http://cgran.org The Comprehensive GNU Radio Archive Network (CGRAN)] - A list of 3rd party GNU Radio apps, check out some examples of what folks use GNU Radio to do.<br />
* [[FAQ|Frequently Asked Questions]] - Check this page before asking questions on the mailing list.<br />
<br />
= Documentation =<br />
<br />
* User Documentation<br />
*# The [[Usage Manual]] contains information about various aspects of GNU Radio not specific to a certain block.<br />
*# [[:Category:Block_Docs|List of Blocks]] (or just wiki search the block name)<br />
* Developer Documentation<br />
*# Our [http://gnuradio.org/doc/doxygen/index.html C++ Manual and API Reference] includes documentation targeted for developers. It is based on Doxygen, using markup comments in the public header files. <br />
*# [[GNU Radio 3.10 OOT Module Porting Guide|3.9 to 3.10 OOT Module Porting Guide]]<br />
*# [[GNU Radio 3.9 OOT Module Porting Guide|3.8 to 3.9 OOT Module Porting Guide]]<br />
*# [[GNU Radio 3.8 OOT Module Porting Guide|3.7 to 3.8 OOT Module Porting Guide]]<br />
* [[Tutorials|Tutorials]] - Several tutorials for varying skill levels.<br />
<br />
= Community &amp; Communicating =<br />
<br />
There's a nice community of people involved in GNU Radio. Here's some pointers on how to connect with us.<br />
<br />
* Our [[Code_of_Conduct|Code of Conduct]] describes our expectations for community participation.<br />
* [[ReportingErrors|Asking Questions and Reporting Errors]] - We're helpful people, but '''we expect you to try to help yourself first.'''<br />
* [[MailingLists|Mailing lists]] - Where most of the communication happens, but please read the previous article first.<br />
* [[HowToGetInvolved|How to get involved]] - Do you want to help with the project, or simply become part of the GNU Radio Community? Read this!<br />
* [[Chat|Chat]] - For a more real-time interaction, come join our chat rooms on [https://chat.gnuradio.org Matrix]<br />
* [[MoreCommunity|More GNU Radio on the web and in social media]]<br />
* [https://www.gnuradio.org/about/organization/ GNU Radio organizing members]<br />
* [[WorkingGroups|Working Groups]] - Communities of interest for various aspects of the GNU Radio ecosystem.<br />
* [[DevelopersCalls]] - The developers have monthly VoIP conferences which are open to join.<br />
* [[GNURadioConference|The GNU Radio Conference (GRCon)]] - archive pages: [http://gnuradio.org/grcon-2018/ 2018] | [http://gnuradio.org/grcon-2017/ 2017] | [http://gnuradio.org/grcon-2016/ 2016] | [http://www.trondeau.com/gnu-radio-conference-2015/ 2015] | [http://www.trondeau.com/gnu-radio-conference-2014/ 2014] | [http://www.trondeau.com/gnu-radio-conference-2013/ 2013] | [http://www.trondeau.com/gnu-radio-conference-2012/ 2012] | [http://www.trondeau.com/gnu-radio-conference-2011/ 2011]<br />
* [[Archive of Hack Fests]] and miscellaneous [[Presentations]]<br />
* We have a [[Calendar]] containing project calls and other events<br />
<br />
= Developing GNU Radio =<br />
<br />
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|tutorials]] are also relevant.<br />
<br />
* [[Development|Development Information for Contributors]]<br />
* [[Coding_guide_impl|Coding and style guidelines for GNU Radio]]<br />
* [[BlocksCodingGuide|Block structure guide]]<br />
* [[ChangeSets|API and Code Version Changes]]<br />
* [http://www.trondeau.com/blog/2013/9/15/explaining-the-gnu-radio-scheduler.html An overview of the GNU Radio scheduler]<br />
* YouTube feed from Ettus Research [http://www.youtube.com/user/ettusresearch/feed featuring demos and howtos] for using GNU Radio and USRPs.<br />
* [[Embedded|Embedded Development with GNURadio]]<br />
* [[GSoC|Summer of Code Programs]] - Student Programs from Google (GSoC) and ESA (SOCIS), see [[GSoCIdeas|Summer of Code Project Ideas List]]<br />
<br />
= Hardware =<br />
<br />
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.<br />
<br />
For a list of supported devices, see our [[Hardware]] page.<br />
<br />
= Further information and 3rd party extensions =<br />
<br />
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.<br />
<br />
* [[SuggestedReading|Suggested Reading]] - A list of non-GNU Radio-related literature, including good introductions to signal processing, radio engineering and software development.<br />
* [[ExternalDocumentation|Documentation and Videos for GNU Radio on other servers]]<br />
* [[OurUsers|Real world users]] and [[Support|Commercial Support/Training]]<br />
* [[AcademicPapers|Selected Academic papers involving GNU Radio]]<br />
* [http://gqrx.dk/ GQRX] - Very nice spectrum analysis tool, powered by GNU Radio</div>777archttps://wiki.gnuradio.org/index.php?title=Chat&diff=11585Chat2022-03-05T03:13:24Z<p>777arc: </p>
<hr />
<div><br />
The primary medium for chat is Matrix, it can be accessed with a web browser or a separate app such as Element (formerly Riot):<br />
* server: https://chat.gnuradio.org<br />
* room: #gnuradio:gnuradio.org<br />
<br />
If you are using an app that asks for the Matrix homeserver URL <code>gnuradio.org</code> should work. If that doesn't work use: <code>gnuradio.ems.host</code><br />
<br />
To join the main channel directly, use #gnuradio:gnuradio.org or search for rooms (eg, in the Element clients), using gnuradio.org as a server name.<br />
<br />
The IRC #gnuradio and #gnuradio-dev channels (see below) have two way connections to the Matrix #gnuradio:gnuradio.org and #development:gnuradio.org channels if you prefer using that user interface.<br />
<br />
We have many other channels on Matrix, including channels for [[HamRadio|GNU Radio-related Amateur Radio]] discussion, GNU Radio in Education, VOLK, … . They are ''not'' bridged to IRC.<br />
<br />
= IRC Bridge =<br />
<br />
GNU Radio has several channels on the http://libera.chat network where people talk about GNU Radio related topics. GNU Radio has moved away from the Freenode network due to a change in network management and we are <b>only</b> on Libera. The Matrix channel bridging will be with the Libera channels.<br />
<br />
<code>#gnuradio</code> is the official general project chat. Anything GNU Radio, SDR, and DSP related is welcome.<br />
<br />
<code>#gnuradio-dev</code> is used for conversations and questions around the development of the code of GNU Radio itself.<br />
<br />
A useful guide for Libera is the [https://libera.chat/guides/basics#irc-commands-cheat-sheet IRC commands cheat sheet].<br />
<br />
= Basic Etiquette in #gnuradio =<br />
<br />
If you have never used IRC before, going here can be quite daunting and even intimidating. Veteran IRC users might seem unfriendly at times, but this is usually because of etiquette and customs typical to IRC channels.<br />
<br />
Generally, '''if you've not used IRC before, it's likely you'll want to directly use [https://chat.gnuradio.org Matrix]''' (again, we've made sure the same channel can be seen from both Matrix and IRC).<br />
<br />
Some basic guidelines when going to #gnuradio for help:<br />
<br />
* '''Just ask''' – New users often make the mistake of asking &quot;Is anyone in here?&quot;, which is typically ignored (because you already know there's someone there by viewing the list of people in the channel). Briefly explain your problem, and don't wait for permission to ask.<br />
* '''Don't expect immediate answers, but do hang around for a few hours, at least'''. People live in different timezones, and don't always watch their chat window. It is considered impolite to ask a question, and then disconnect after a short while if there was no answer.<br />
* The guidelines on [[ReportingErrors]] still apply, although the nature of IRC means you have to condense your questions, and the direct feedback means you can discuss this in dialog.<br />
* It often happens that discussions go off on a tangent, and suddenly a lot of people participate in discussions that can range from philosophical, across absurd to highly technical. This is just how such chats works. Don't be afraid to participate. Of course, you might not be getting the answer you want because of those discussions, but there's a high chance that people will still have noticed you.<br />
* Of course, any rude or inappropriate behaviour is met by a ban. We want this to be a friendly place. <br />
* If in doubt about what is not in order, see our [[Code of Conduct]].</div>777archttps://wiki.gnuradio.org/index.php?title=Chat&diff=11584Chat2022-03-05T03:12:51Z<p>777arc: </p>
<hr />
<div><br />
The primary medium for chat is Matrix, it can be accessed with a web browser or a separate app such as Element (formerly Riot):<br />
* server: https://chat.gnuradio.org<br />
* room: #gnuradio:gnuradio.org<br />
<br />
= Matrix Chat Server =<br />
<br />
We have our own Matrix server for chat, to join using the web app use [https://chat.gnuradio.org https://chat.gnuradio.org]<br />
<br />
If you are using an app that asks for the Matrix homeserver URL <code>gnuradio.org</code> should work. If that doesn't work use: <code>gnuradio.ems.host</code><br />
<br />
To join the main channel directly, use #gnuradio:gnuradio.org or search for rooms (eg, in the Element clients), using gnuradio.org as a server name.<br />
<br />
The IRC #gnuradio and #gnuradio-dev channels (see below) have two way connections to the Matrix #gnuradio:gnuradio.org and #development:gnuradio.org channels if you prefer using that user interface.<br />
<br />
We have many other channels on Matrix, including channels for [[HamRadio|GNU Radio-related Amateur Radio]] discussion, GNU Radio in Education, VOLK, … . They are ''not'' bridged to IRC.<br />
<br />
= IRC Bridge =<br />
<br />
GNU Radio has several channels on the http://libera.chat network where people talk about GNU Radio related topics. GNU Radio has moved away from the Freenode network due to a change in network management and we are <b>only</b> on Libera. The Matrix channel bridging will be with the Libera channels.<br />
<br />
<code>#gnuradio</code> is the official general project chat. Anything GNU Radio, SDR, and DSP related is welcome.<br />
<br />
<code>#gnuradio-dev</code> is used for conversations and questions around the development of the code of GNU Radio itself.<br />
<br />
A useful guide for Libera is the [https://libera.chat/guides/basics#irc-commands-cheat-sheet IRC commands cheat sheet].<br />
<br />
= Basic Etiquette in #gnuradio =<br />
<br />
If you have never used IRC before, going here can be quite daunting and even intimidating. Veteran IRC users might seem unfriendly at times, but this is usually because of etiquette and customs typical to IRC channels.<br />
<br />
Generally, '''if you've not used IRC before, it's likely you'll want to directly use [https://chat.gnuradio.org Matrix]''' (again, we've made sure the same channel can be seen from both Matrix and IRC).<br />
<br />
Some basic guidelines when going to #gnuradio for help:<br />
<br />
* '''Just ask''' – New users often make the mistake of asking &quot;Is anyone in here?&quot;, which is typically ignored (because you already know there's someone there by viewing the list of people in the channel). Briefly explain your problem, and don't wait for permission to ask.<br />
* '''Don't expect immediate answers, but do hang around for a few hours, at least'''. People live in different timezones, and don't always watch their chat window. It is considered impolite to ask a question, and then disconnect after a short while if there was no answer.<br />
* The guidelines on [[ReportingErrors]] still apply, although the nature of IRC means you have to condense your questions, and the direct feedback means you can discuss this in dialog.<br />
* It often happens that discussions go off on a tangent, and suddenly a lot of people participate in discussions that can range from philosophical, across absurd to highly technical. This is just how such chats works. Don't be afraid to participate. Of course, you might not be getting the answer you want because of those discussions, but there's a high chance that people will still have noticed you.<br />
* Of course, any rude or inappropriate behaviour is met by a ban. We want this to be a friendly place. <br />
* If in doubt about what is not in order, see our [[Code of Conduct]].</div>777archttps://wiki.gnuradio.org/index.php?title=Chat&diff=11583Chat2022-03-05T03:12:32Z<p>777arc: </p>
<hr />
<div><br />
The primary medium for chat is Matrix. See [[Chat#Matrix_Chat_Server|Matrix Chat Server]]. It can be accessed with a web browser or a separate app such as Element (formerly Riot).<br />
* server: https://chat.gnuradio.org<br />
* room: #gnuradio:gnuradio.org<br />
<br />
= Matrix Chat Server =<br />
<br />
We have our own Matrix server for chat, to join using the web app use [https://chat.gnuradio.org https://chat.gnuradio.org]<br />
<br />
If you are using an app that asks for the Matrix homeserver URL <code>gnuradio.org</code> should work. If that doesn't work use: <code>gnuradio.ems.host</code><br />
<br />
To join the main channel directly, use #gnuradio:gnuradio.org or search for rooms (eg, in the Element clients), using gnuradio.org as a server name.<br />
<br />
The IRC #gnuradio and #gnuradio-dev channels (see below) have two way connections to the Matrix #gnuradio:gnuradio.org and #development:gnuradio.org channels if you prefer using that user interface.<br />
<br />
We have many other channels on Matrix, including channels for [[HamRadio|GNU Radio-related Amateur Radio]] discussion, GNU Radio in Education, VOLK, … . They are ''not'' bridged to IRC.<br />
<br />
= IRC Bridge =<br />
<br />
GNU Radio has several channels on the http://libera.chat network where people talk about GNU Radio related topics. GNU Radio has moved away from the Freenode network due to a change in network management and we are <b>only</b> on Libera. The Matrix channel bridging will be with the Libera channels.<br />
<br />
<code>#gnuradio</code> is the official general project chat. Anything GNU Radio, SDR, and DSP related is welcome.<br />
<br />
<code>#gnuradio-dev</code> is used for conversations and questions around the development of the code of GNU Radio itself.<br />
<br />
A useful guide for Libera is the [https://libera.chat/guides/basics#irc-commands-cheat-sheet IRC commands cheat sheet].<br />
<br />
= Basic Etiquette in #gnuradio =<br />
<br />
If you have never used IRC before, going here can be quite daunting and even intimidating. Veteran IRC users might seem unfriendly at times, but this is usually because of etiquette and customs typical to IRC channels.<br />
<br />
Generally, '''if you've not used IRC before, it's likely you'll want to directly use [https://chat.gnuradio.org Matrix]''' (again, we've made sure the same channel can be seen from both Matrix and IRC).<br />
<br />
Some basic guidelines when going to #gnuradio for help:<br />
<br />
* '''Just ask''' – New users often make the mistake of asking &quot;Is anyone in here?&quot;, which is typically ignored (because you already know there's someone there by viewing the list of people in the channel). Briefly explain your problem, and don't wait for permission to ask.<br />
* '''Don't expect immediate answers, but do hang around for a few hours, at least'''. People live in different timezones, and don't always watch their chat window. It is considered impolite to ask a question, and then disconnect after a short while if there was no answer.<br />
* The guidelines on [[ReportingErrors]] still apply, although the nature of IRC means you have to condense your questions, and the direct feedback means you can discuss this in dialog.<br />
* It often happens that discussions go off on a tangent, and suddenly a lot of people participate in discussions that can range from philosophical, across absurd to highly technical. This is just how such chats works. Don't be afraid to participate. Of course, you might not be getting the answer you want because of those discussions, but there's a high chance that people will still have noticed you.<br />
* Of course, any rude or inappropriate behaviour is met by a ban. We want this to be a friendly place. <br />
* If in doubt about what is not in order, see our [[Code of Conduct]].</div>777archttps://wiki.gnuradio.org/index.php?title=PlutoSDR_Source&diff=11577PlutoSDR Source2022-03-02T05:40:37Z<p>777arc: </p>
<hr />
<div><!-- PlutoSDR_Source.mediawiki --><br />
The PlutoSDR (a.k.a. ADALM-PLUTO) is a low-cost SDR made by Analog Devices, based on a [https://en.wikipedia.org/wiki/Product_binning binned] version of the AD9364 RFIC (same RFIC as in the USRP B200) which AD labels AD9363. It can operate from 70 MHz to 6 GHz using simple "hack" described at [https://wiki.analog.com/university/tools/pluto/users/customizing the bottom of this page], and has a max sample rate of 56 MHz, but because it only has USB 2.0, the 56 MHz can only be received in short bursts. The max sample rate when continuously receiving is more like 4 or 5 MHz. It has a Xilinx Zynq Z-7010 FPGA + ARM CPU on board, the ARM CPU runs a lightweight version of linux. It's set up to run as an IP device; the USB port on it appears as a USB to ethernet bridge. It also shows up a mass storage device which lets you easily change the config (e.g. IP address) or load new firmware.<br />
<br />
For more info on getting the PlutoSDR installed and running, see this page https://wiki.analog.com/resources/tools-software/linux-software/gnuradio.<br />
<br />
== Parameters ==<br />
<br />
; LO Frequency<br />
: Selects the RX local oscillator frequency.<br />
<br />
; IIO context URI<br />
: IP address of the unit, e.g. "ip:192.168.2.1" (without the quotes)<br />
<br />
; Sample Rate<br />
: Sample rate in samples per second, this will define how much bandwidth your SDR receives at once (the RF bandwidth parameter below just defines the filter). limits: >= 520833 and <= 61440000<br />
<br />
; RF Bandwidth<br />
: Configures RX analog filters: RX TIA LPF and RX BB LPF. limits: >= 200000 and <= 52000000<br />
<br />
; Buffer size<br />
: Size of the internal buffer in samples. The IIO blocks will only input/output one buffer of samples at a time. To get the highest continuous sample rate, try using a number in the millions.<br />
<br />
; Quadrature<br />
: True/False<br />
<br />
; RF DC Correction<br />
: True/False<br />
<br />
; BB DC Correction<br />
: True/False<br />
<br />
; Gain Mode (Rx1)<br />
: Selects one of the available modes: manual, slow_attack, hybrid and fast_attack. For most spectrum sensing type applications, use a manual gain, so that you actually know when a signal is present or not, and it's relative power.<br />
<br />
; Manual Gain (Rx1)(dB)<br />
: gain value, max of 71 dB, or 62 dB when over 4 GHz center freq<br />
<br />
; Filter<br />
: Allows a FIR filter configuration to be loaded from a file.<br />
<br />
; Filter Auto<br />
: When enabled loads a default filter and thereby enables lower sampling / baseband rates.<br />
<br />
== Example Flowgraph ==<br />
<br />
This flowgraph shows a broadcast FM receiver.<br />
<br />
[[File:Pluto_FM_fg.png]]<br />
<br />
== Source Files ==<br />
<br />
The actual source and sink blocks are created by an 'Industrial I/O' module. See https://wiki.analog.com/resources/tools-software/linux-software/gnuradio for details.<br />
<br />
[[Category:Block Docs]]</div>777archttps://wiki.gnuradio.org/index.php?title=JSON_Config&diff=11569JSON Config2022-02-26T20:09:45Z<p>777arc: /* Example Flowgraph */</p>
<hr />
<div>[[Category:Block Docs]]<br />
This block...<br />
<br />
== Parameters ==<br />
<br />
; Config File <br />
: asdasdasd<br />
<br />
; Config Schema<br />
: (Optional) asdasd<br />
<br />
<br />
<br />
== Example Flowgraph ==<br />
<br />
* Make a new file called <code>example.json</code> with the contents:<br />
<pre><br />
{<br />
"amplitude": 0.1<br />
}<br />
</pre><br />
* Add the JSON Config block and point Config File to that file<br />
* Make a signal source, and for Amplitude enter the value <code>json_config_0[ 'amplitude']</code><br />
* Connect it to a Time Sink through a Throttle and you'll see the amplitude show up as 0.1<br />
<br />
[[File:Screenshot from 2022-02-26 15-05-23.png|400px]]<br />
<br />
[[File:Screenshot from 2022-02-26 15-05-28.png|400px]]<br />
<br />
<br />
[[File:Screenshot from 2022-02-26 15-05-37.png|400px]]<br />
<br />
== Source Files ==<br />
<br />
REPLACE WITH ACTUAL FILES ONCE ITS MERGED<br />
<br />
; C++ files<br />
: [https://github.com/gnuradio/gnuradio/blob/master/gr-fft/lib/fft_vcc_fftw.cc Complex input]<br />
: [https://github.com/gnuradio/gnuradio/blob/master/gr-fft/lib/fft_vfc_fftw.cc Real input]<br />
: [https://github.com/gnuradio/gnuradio/blob/master/gr-fft/lib/fft.cc Core algorithms]<br />
<br />
; Header files<br />
: [https://github.com/gnuradio/gnuradio/blob/master/gr-fft/lib/fft_vcc_fftw.h Complex input]<br />
: [https://github.com/gnuradio/gnuradio/blob/master/gr-fft/lib/fft_vfc_fftw.h Real input]<br />
<br />
; Public header files<br />
: [https://github.com/gnuradio/gnuradio/blob/master/gr-fft/include/gnuradio/fft/fft_vcc.h Complex input]<br />
: [https://github.com/gnuradio/gnuradio/blob/master/gr-fft/include/gnuradio/fft/fft_vfc.h Real input ]<br />
<br />
; Block definition<br />
: [https://github.com/gnuradio/gnuradio/blob/master/gr-fft/grc/fft_fft_vxx.block.yml GRC yaml]</div>777archttps://wiki.gnuradio.org/index.php?title=JSON_Config&diff=11568JSON Config2022-02-26T20:09:29Z<p>777arc: /* Example Flowgraph */</p>
<hr />
<div>[[Category:Block Docs]]<br />
This block...<br />
<br />
== Parameters ==<br />
<br />
; Config File <br />
: asdasdasd<br />
<br />
; Config Schema<br />
: (Optional) asdasd<br />
<br />
<br />
<br />
== Example Flowgraph ==<br />
<br />
* Make a new file called <code>example.json</code> with the contents:<br />
<pre><br />
{<br />
"amplitude": 0.1<br />
}<br />
</pre><br />
* Add the JSON Config block and point Config File to that file<br />
* Make a signal source, and for Amplitude enter the value json_config_0[ 'amplitude']<br />
* Connect it to a Time Sink through a Throttle and you'll see the amplitude show up as 0.1<br />
<br />
[[File:Screenshot from 2022-02-26 15-05-23.png|400px]]<br />
<br />
[[File:Screenshot from 2022-02-26 15-05-28.png|400px]]<br />
<br />
<br />
[[File:Screenshot from 2022-02-26 15-05-37.png|400px]]<br />
<br />
== Source Files ==<br />
<br />
REPLACE WITH ACTUAL FILES ONCE ITS MERGED<br />
<br />
; C++ files<br />
: [https://github.com/gnuradio/gnuradio/blob/master/gr-fft/lib/fft_vcc_fftw.cc Complex input]<br />
: [https://github.com/gnuradio/gnuradio/blob/master/gr-fft/lib/fft_vfc_fftw.cc Real input]<br />
: [https://github.com/gnuradio/gnuradio/blob/master/gr-fft/lib/fft.cc Core algorithms]<br />
<br />
; Header files<br />
: [https://github.com/gnuradio/gnuradio/blob/master/gr-fft/lib/fft_vcc_fftw.h Complex input]<br />
: [https://github.com/gnuradio/gnuradio/blob/master/gr-fft/lib/fft_vfc_fftw.h Real input]<br />
<br />
; Public header files<br />
: [https://github.com/gnuradio/gnuradio/blob/master/gr-fft/include/gnuradio/fft/fft_vcc.h Complex input]<br />
: [https://github.com/gnuradio/gnuradio/blob/master/gr-fft/include/gnuradio/fft/fft_vfc.h Real input ]<br />
<br />
; Block definition<br />
: [https://github.com/gnuradio/gnuradio/blob/master/gr-fft/grc/fft_fft_vxx.block.yml GRC yaml]</div>777arc