Gnuradio windows 10 x64 скачать

Older Releases

GNURadio_3.10.3.0-0_win64_release

GNURadio_3.10.3.0-0_win64_release

This is the release version of GNU Radio for Windows.

Size: 83.2 MB

Version: 3.10.3.0

Published: 7 July, 2022

SHA-256 checksum

0A2BFF6F45C1496E60E4764B5253FDF0A83F497147DEC4492B99A809A9325A11

GNURadio_3.10.3.0-0_win64_symbols

GNURadio_3.10.3.0-0_win64_symbols

PDB files for debugging.

Size: 42.0MB

Version: 3.10.3.0

Published: 7 July, 2022

GNURadio_3.10.1.1-0_win64_release

GNURadio_3.10.1.1-0_win64_release

This is the release version of GNU Radio for Windows.

Size: 83.30 MB

Version: 3.10.1.1

Published: 1 April, 2022

SHA-256 checksum

c0e6e1eb4c807411f96add295904ff0c9aae109ec640f22baa07d120fcf38dea

GNURadio_3.10.1.1-0_win64_symbols

GNURadio_3.10.1.1-0_win64_symbols

PDB files for debugging.

Size: 42.80MB

Version: 3.10.1.1

Published: 1 April, 2022

GNURadio_3.10.0-0_win64_release

GNURadio_3.10.0-0_win64_release

This is the release version of GNU Radio for Windows.

Size: 83.29 MB

Version: 3.10.0

Published: 18 January, 2022

SHA-256 checksum

cdeb047ade57d7d242329b6c4baaa49044591b6c4a4ed2ff6ecd12010657e0d6

GNURadio_3.10.0-0_win64_symbols

GNURadio_3.10.0-0_win64_symbols

PDB files for debugging.

Size: 44.56MB

Version: 3.10.0

Published: 18 January, 2022

GNURadio_3.9.3-0_win64_release

GNURadio_3.9.3-0_win64_release

This is the release version of GNU Radio for Windows.

Size: 82.36 MB

Version: 3.9.3

Published: 22 October, 2021

SHA-256 checksum

5c1f054a8b99b317c28a703a3bd2337bac77674cde09d5360845f6e730281d4f

GNURadio_3.9.3-0_win64_symbols

GNURadio_3.9.3-0_win64_symbols

PDB files for debugging.

Size: 103.16 MB

Version: 3.9.3

Published: 22 October, 2021

GNURadio_3.9.2-1_win64_release

GNURadio_3.9.2-1_win64_release

This is the release version of GNU Radio for Windows.

Size: 82.31 MB

Version: 3.9.2

Published: 25 June, 2021

SHA-256 checksum

5ef7b85408500de4da8b8e3e47c6ab2bcf95e6d9c4fb9803ded6cc60eb654039

GNURadio_3.9.2-0_win64_symbols

GNURadio_3.9.2-0_win64_symbols

PDB files for debugging.

Size: 99.55 MB

Version: 3.9.2

Published: 25 June, 2021

GNURadio_3.8.3-0_win64_release

GNURadio_3.8.3-0_win64_release

This is the release version of GNU Radio for Windows.

Size: 59.97 MB

Version: 3.8.3

Published: 28 May, 2021

SHA-256 checksum

bf26ba0cfd8539b74a7e37c7d623a8b5f2581ef3848d14e519b096d9de039850

GNURadio_3.8.3-0_win64_symbols

GNURadio_3.8.3-0_win64_symbols

PDB files for debugging.

Size: 28.85 MB

Version: 3.8.3

Published: 28 May, 2021

GNURadio_3.8.3.1-1_win64_release

GNURadio_3.8.3.1-1_win64_release

This is the release version of GNU Radio for Windows.

Size: 59.98 MB

Version: 3.8.3.1

Published: 25 June, 2021

SHA-256 checksum

eb4a2e969ce869ef33d96b75e657d25d0a8eaa26b2718e6687686aca187aeac1

GNURadio_3.8.3.1-0_win64_symbols

GNURadio_3.8.3.1-0_win64_symbols

PDB files for debugging.

Size: 28.69 MB

Version: 3.8.3.1

Published: 25 June, 2021

GNURadio_3.9.1-3_win64_release

GNURadio_3.9.1-3_win64_release

This is the release version of GNU Radio for Windows.

Size: 81.74 MB

Version: 3.9.1

Published: 13 April, 2021

SHA-256 checksum

8c4d6641145c771e8ccb6e6cf8528eb22609430265b38135ccc9101168d290ee

GNURadio_3.9.1-0_win64_symbols

GNURadio_3.9.1-0_win64_symbols

PDB files for debugging.

Size: 96.33 MB

Version: 3.9.1

Published: 13 April, 2021

GNURadio_3.9.0-0_win64_release

GNURadio_3.9.0-0_win64_release

This is the release version of GNU Radio for Windows.

Size: 53.04 MB

Version: 3.9.0

Published: 20 January, 2021

SHA-256 checksum

0280aeefc4a1ba2707d4d13a08ba6f6e4594b0e37902b15e4c84197ff01af566

GNURadio_3.9.0-0_win64_symbols

GNURadio_3.9.0-0_win64_symbols

PDB files for debugging.

Size: 98.22 MB

Version: 3.9.0

Published: 20 January, 2021

GNURadio_3.8.2-0_win64_release

GNURadio_3.8.2-0_win64_release

This is the release version of GNU Radio for Windows.

Size: 59.30 MB

Version: 3.8.2

Published: 25 August, 2020

SHA-256 checksum

b9da954df3b0d1c1db336ae50e8dc9c294dc7f42202ce3949a6236b168129fed

GNURadio_3.8.2-0_win64_symbols

GNURadio_3.8.2-0_win64_symbols

PDB files for debugging.

Size: 99.6 MB

Version: 3.8.2

Published: 25 August, 2020

GNURadio_3.8.1-0_win64_release

GNURadio_3.8.1-0_win64_release

This is the release version of GNU Radio for Windows.

Size: 56.37 MB

Version: 3.8.1

Published: 22 April, 2020

SHA-256 checksum

9459b6b87c396e1ca99b0e55db1ea7b7e8e1eddb0b888b086b776e701e175847

GNURadio_3.8.1-0_win64_symbols

GNURadio_3.8.1-0_win64_symbols

PDB files for debugging.

Size: 99.3 MB

Version: 3.8.1

Published: 22 April, 2020

GNURadio_3.8.0-0_win64_release

GNURadio_3.8.0-0_win64_release

This is the release version of GNU Radio for Windows.

Size: 57.45 MB

Version: 3.8.0

Published: 30 September, 2019

SHA-256 checksum

c7f994bfcf23af1f2cfc58d5b53f89a0748feb3692a845b7238333e4ff481db0

GNURadio_3.8.0-0_win64_symbols

GNURadio_3.8.0-0_win64_symbols

PDB files for debugging.

Size: 91.79 MB

Version: 3.8.0

Published: 1 October, 2019

Windows Installation[edit]

Too long, won’t read: Use the RadioConda installer, as linked from our InstallingGR landing page.

Binary Installers[edit]

There are a few different unofficial GNU Radio binary installers that are maintained by the community:

1) Radioconda installer. This binary installer tends to be the most up-to-date, but you should check the list of packages to see if it includes what you need. It utilizes the conda package/environment manager and provides easy access to thousands of Python and other packages that are not strictly related to GNU Radio. This also lets you stay up-to-date without having to re-install. Since this provides the same conda-forge packages available without the installer, the conda install guide might be useful for additional instructions, including how to build additional OOT modules from source.
After installing Radioconda you will get a «GNU Radio Companion» added to your start menu. Run this to start GNU Radio Companion, the graphical GNU Radio design tool.

2) (only outdated versions as of 2023-09) Geof Nieboer’s installer hosted at gcndevelopment.com (recently unreachable in 2022-07, but reachable currently 2022-10-23). This is a binary installer for 64-bit Windows 7/8/10 that includes all dependencies for Windows, a custom python distro, commonly used SDR drivers, and several OOT blocks.

3) (only outdated versions as of 2023-09) Pothos SDR development environment installer. This binary installer includes GNU Radio, Pothos, CubicSDK, and other tools. It has historically been updated about once or twice per year.

Current Windows Status[edit]

Installing core GNU Radio and USRP on Windows is becoming more routine. Many OoT modules may still require compiling locally. Please report any success or failures. Patches and enhancements are especially welcome!

Windows Porting Issues[edit]

Considerable effort has been put into making the GNU Radio code portable among various operating systems, but there are several reasons why it cannot be «simply» compiled and run under Windows:

  • The build and install procedures are based on Linux scripts and tools
  • Several third-party libraries are used, each with its own, often system-dependent, installation procedure
  • Most GNU Radio applications must interface to hardware (e.g., a sound card or USRP) which require system-dependent drivers and installation procedures
  • Because GNU Radio is written as an extension to Python, there are potential problems on Windows if different runtime libraries are used for GNU Radio and Python

The following sections show how these issues can be addressed.

Installation Options[edit]

GNU Radio is designed to be flexible. It has a number of modules, capabilities, and options that can be enabled or disabled to suit the needs of the user, and the user can add custom blocks or modules to the system.

To support this flexibility, it comes with a set of files and scripts to be used with GNU software build tools (sh, make, autoconf, automake, etc.). These tools use Linux-like commands and filenames that are not normally available on Windows systems.

Fortunately, we are not the first to face this problem, and several solutions exist. These are presented in order of increasing difficulty:

Building on Windows with Native Tools[edit]

Ettus Application note [1] describes how to build from source. Similar is a post at [2] for OOT modules.

Powershell scripts are now available at https://www.github.com/gnieboer/gnuradio_windows_build_scripts that fully automate the build process for GNURadio 3.7.9.2+. A few build dependencies are required (MSVC 2015, Git, Doxygen, CMake, Perl, Wix) but all are free. The script has two options:

  1. Build all dependencies from source (including python itself)
  2. Download a prebuilt custom dependency package and then build only GNURadio and a few OOT modules on top.

The binary installers described above are built with these scripts. They ensure that all dependencies are built with the same toolchain against the same runtime libraries, and handle the patches and configuration «tweaks» needed to build them on Windows.
If option 1 is desired, note that to build scipy, the non-free Intel Fortran compiler is required, gfortran cannot build objects that can link with MSVC C objects. If you do not have said compiler, the scripts will download pre-compiled wheels instead.

More information on the build process is available on the GitHub repo readme, and also at http://www.gcndevelopment.com/gnuradio.

GNURadio 3.6 has also been compiled on Windows using native tools as well (see http://voltronics.blogspot.com/2013/01/gnu-radio-windows-build-guide.html and https://lists.gnu.org/archive/html/discuss-gnuradio/2013-08/msg00284.html)

More helpful tips on dependency version information have been reported:
https://lists.gnu.org/archive/html/discuss-gnuradio/2013-12/msg00497.html

MinGW/MSYS[edit]

MinGW (http://www.mingw.org/) provides GNU compilers and Window-specific header files for compiling native Windows applications.
MSYS (http://www.mingw.org/msys.shtml) is a companion set of Linux-like commands, shell, and build tools.
MinGW does not include a Linux programming interface; programs should be smaller and faster than with Cygwin (in theory), but will require more Windows-specific code.
MSYS is intended primarily as a build environment, making it more compact than Cygwin.

Because there is no Linux API emulation, GNU Radio built with MinGW should be used with standard Windows versions of Python and the third-party libraries.
MinGW does not provide as much support as Cygwin for installing third-party libraries, but in many cases precompiled binaries are available.

For detailed installation instructions using MinGW and MSYS see Installing GNU Radio with MinGW.

Cygwin[edit]

Cygwin (http://www.cygwin.com/) is a Linux-like environment for Windows.
It provides the Linux-like shell, file naming, and build tools we need and also makes it easy to install many of the third-party libraries required by GNU Radio. It also provides a Linux programming interface (API); this is not required by GNU Radio, but it lets us use the better-tested Linux versions of some functions.

Because the Linux API uses its own C runtime library, it is best to use Cygwin versions of Python and the third-party libraries when building GNU Radio with Cygwin.

For detailed installation instructions using Cygwin see Installing GNU Radio with Cygwin.

Chocolatey[edit]

To quote from the [|https://chocolatey.org/ Chocolatey homepage]: Chocolatey NuGet is a Machine Package Manager, somewhat like apt-get, but built with Windows in mind..

There are packages for gnuradio (and its dependencies) available in a separate repository (currently the best known source is: https://github.com/ariovistus/chocolatey-packages)

To install, open an Administrative command line session and run:

iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))

Now you need to install a source which has the recipes for gnuradio and dependents. The easiest method is to clone the chocolatey-packages from the github repository listed above (https://github.com/ariovistus/chocolatey-packages), then add the local source from within an Administrative command line session:

choco source add -name gnuradio -source C:\<path-to>\chocolatey-packages

Create the numpy package:

cd <path-to>\chocolatey-package\numpy
cpack

Create the gnuradio package:

cd <path-to>\chocolatey-package\gnuradio
cpack

Now install the gnuradio package:

choco install gnuradio

Follow the command prompts.

WSL | Ubuntu[edit]

Enable WSL from windows features.

Install Ubuntu 20.04 (or newer) from Microsoft Store.

Using the Ubuntu terminal, install gnuradio as you would on linux [3]. If you want to develop GNU Radio’s core you will need to build GNU Radio from source.

WSL 1/2 (before WSLg)[edit]

Install additional package «libgtk-3-dev»

 sudo apt install libgtk-3-dev
 

WSL 1 and 2 (before WSLg) do not have an X server for displaying graphical applications. Install an X server, either VcXsrv [4] or Xming [5] as WSL does not come with an X server. VcXsrv is recommended as it is open source and self-contained instead of being tied to Cygwin, whereas Xming «asks for donations» to the developer as a dubious «sale» for non-existent support.

Launch VcXsrv, making sure to select «Disable access control» option in the Extra settings so that any application can export to X11.

Edit bashrc to set up the display by adding the following lines at the bottom of the file.

WSL1:

 # X11 forwarding for Windows
 export DISPLAY=:0.0
 export LIBGL_ALWAYS_INDIRECT=1

WSL2:

 # X11 forwarding for Windows
 export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0
 export LIBGL_ALWAYS_INDIRECT=1

Restart the Ubuntu terminal and run

 gnuradio-companion

WSLg[edit]

Currently in early testing stages, the WSLg update contains a Wayland graphics server and X interface layer allowing graphical applications to run without extra setup.

From the Ubuntu terminal run

 gnuradio-companion

Using an Azure VM[edit]

Another way to generate a GNU Radio environment if you’re using Windows, is to create an Azure Virtual Machine running Ubuntu Server 18.04 LTS.

If you already have an existing Azure account you can follow the instructions here[6] to create an Ubuntu VM using the Azure portal. Otherwise, you can sign up for an account here[7]. Azure provides free accounts for students[8] with a limited set of credits.

Once your VM is created you should be able to SSH into it, to install a desktop environment. Full instructions can be found here, but in summary:
Install xfce

 sudo apt-get update 
 sudo apt-get -y install xfce4

Install xrdp as a remote desktop server

 sudo apt-get -y install xrdp 
 sudo systemctl enable xrdp

Configure xrdp to use xfce

 echo xfce4-session >~/.xsession

Restart the xrdp service

 sudo service xrdp restart

You will need to create a local password for your Linux VM (on top of your existing SSH key), and open port 3389[9] on the VM.

Finally you can use a remote desktop client, such as Remote Desktop Connection to connect to your VM and follow the instructions for GNU Radio on Ubuntu found here[10].

v3.10.8.0-rc1

Runtime

  • Add MAP_FIXED to circular buffer implementations using shm_open() and
    mmap backed by tmp files. These versions are not used by most system, and
    flaws were discovered during a FreeBSD build.
  • PMTs can be formatted for logging (format wrapper added).
  • New io_signature::make() variant replaces makev(), and optionally specifies
    buffer types. Previous variants are still valid, for backward compatibility. The
    single-stream make(), along with the makev(), make2() and make3() variants
    should not be used in new code, and may be removed in the future.
    make(int min_streams,
         int max_streams,
         const std::vector<size_t>& sizeof_stream_items,
         const gr::gr_vector_buffer_type& buftypes =
             gr::gr_vector_buffer_type(1, default_buftype::type));
  • Fix logging params to be compatible with C++20

GRC

  • Add «Choose Editor» button to Python block properties. Use the GTK app chooser.
    Save choice to the config file.
  • Correct Python Qt imports in Hier blocks and flowgraph templates.

gr-blocks

  • Enable building the benchmark testing executable, which runs tests on various
    math functions.
  • Repeat block implemented as a basic block (vs sync interpolator) and output
    buffer allocation fixed.
  • Add a GRC example for Throttle usage.

gr-digital

  • Add set_sps() to Symbol Sync.
  • Header Format: Fix CRC and OFDM formats, add option to header_buffer to read
    bits lsb first, and refactor extract_bits functions as templates.
  • Constellation Sink uses different colors for each input by default.
  • Rework Constellation Soft Decoder, Constellation Object and LDPC Decoder Definition.
    Previously, the LDPC Decoder did not work at all. The sigma parameter was removed
    from the decoder and an optional noise power npwr parameter was added to the
    constellation.

gr-network

  • Better support for vectorized output from UDP source. The payload size must still
    be a multiple of item size * vector size for this to work.

gr-qtgui

  • Range widget eng_slider and eng modes can now be selected in GRC.
  • Range widget and a couple of UHD apps now accept values on editingFinished, e.g.,
    loss of focus, rather than on returnPressed. Since UIs generated by GRC do not
    have OK/Apply for such values, there is no «correct» behavior. The behavior is
    now selectable on the Entry widget.
  • Frequency Sink startup time improved where sample rate is low

gr-soapy

  • RTLSDR buffer size may be specified

gr-uhd

  • RFNoC NullSrcSink block added. The block may be both source and sink.
  • Add support and examples for RFNoC loopback.
  • RFNoC Rx Radio adds issue_stream_cmd() and block message handler.

gr-zeromq

  • Explicitly shutdown and close source/sinks to prevent hangs in some cases.

Modtool

  • Add cmake-format support for generated modules

Build system and packaging

  • Update Read-the-docs config to include build.tools

Testing

  • Change Debian 11 to Debian 12 in CI

Release v3.10.7.0

[3.10.7.0] — 2023-07-15

Changed

Runtime

  • Setting the minimum buffer size should have the desired effect now, and
    not be overwritten. NOTE: the value returned by min_buffer_size() is not
    intended to indicate the actual buffer size. Header Payload Demod was the
    only block attempting to use this value, and was corrected.
  • Use a set to store thread group (more efficient)
  • Message Debug can now output via the logging system
  • The field prefs.singleton is no longer externally exposed (was unintentional)
  • PMT dict can be generated more easily using pmt::dict_from_mapping()

GRC

  • Save changes under all exit conditions (a couple were previously missed)
  • Prevent silent Generate/Run failures for unsaved flowgraphs

Testing

  • Add Fedora 38, using the clang compiler
  • Remove EOL Fedora 36

gr-analog

  • C++ code generation for Quadrature Demod
  • Add max_gain parameter for AGC

gr-blocks

  • Probe Rate adds a name parameter, for clearer logging
  • Selector has a new «sync» more that consumes the same number of items from all
    inputs. Default is now to consume as many items as possible from the active input,
    and no more than that many items from other inputs. The previous behavior was, well,
    broken.
  • Throttle reset item count on restart, to avoid long delays

gr-digital

  • Constellation Encoder and Decoder: constellation can be changed at runtime

gr-filter

  • Filter design tool: multiple improvements in bounds checking and exception handling
  • Filter design tool: update QMessageBox to work in Qt5

gr-network

  • Multiple memory management errors fixed in UDP Source/Sink and TCP Sink

gr-soapy

  • Better AGC and gain behavior in RTL, AirspyHF and SDRPlay blocks
  • Support bias controls in RTL and SDRPlay blocks

gr-uhd

  • Remove possibility of infinite recursion for network overruns
  • Support fmtlib v10
  • RFNoC: bindings and block yml for Vector IIR, Replay and Log Power blocks
  • RFNoC: add S16 format to RX Streamer

gr-vocoder

  • Support additional codec2 modes

Modtool

  • Don’t override user-defined CMAKE_INSTALL_PREFIX

Release Candidate v3.10.7.0-rc1

Changelog TBD — the following commits were added since v3.10.6.0

8e82849ca gr-uhd: fix infinite recurse in the case a device is poorly connected
f031f641b soapy: fix variable naming in RTL grc
df6fbdeec soapy: fix variable naming in RTL grc
a231e7c87 gr-uhd/lib: support fmtlib 10
cfcba3ee9 soapy: fix sdrplay biasT_ctrl/agc/gain settings
ce24e1896 header_payload_demod: remove buffer size check
626ea296d runtime: do not set max buffer size as side effect of allocation
32b028bed network: Fix various bugs
c57b50ba7 runtime: thread_group use set instead of list for set of threads
077851bf2 digital/constellation_{en,dec,soft_de}oder: mark function overridden
f9e780970 constellation soft decoder: throttle bps warning
5aebf953f constellation encoder/decoder: add warnings Adds warnings when changing to constellation with different dimensionality
0934952a1 constellation encoder/decoder: Fix formatting
b155127bb constellation encoder/decoder: Add const callback
d0095552e runtime: remove unused flat flowgraph field
899204d35 CI: F38 as clang build
70dd627e1 grc: Fix unsaved changes lost if prompt dismissed w/ Esc or window-close
a4d168fbc blocks/message debug: add logging input
f80b93bef runtime/logger: Add adjustable-level log function
13d681c05 blocks/probe rate: Add name field to dictionary, GRC interface
3a6b91fb7 logging: remove configuration remnants from old logging system
d4abaaa6c soapy: add discrete rates for AirspyHF, always show gain in params
c50443281 soapy: sdrplay agc and gain fixes
e8382d41c soapy: rtlsdr bias tee and restore gain after agc
9a3bc6530 analog_quadrature_demod_cf: fix cpp-generation
4b534d43f analog_quadrature_demod_cf: add cpp code generation
71fd7aab9 Include cstdint in gr-fec's alist.h
0ef8fdea4 uhd: pybind: use module_local() for types registered by uhd
f87ee512b ci: add fedora 38
16d52482c CI: disable Fedora 36 Builder, since 36 is EOL
be3a3e0f7 uhd: rename replay stop
89d51e178 filter: Fix exception when dragging in Band Diagram plot
c5abaf6e7 filter: Fix exception when dragging plot axes in Filter Design Tool
8edd1e2c0 filter: Remove duplicate code
926cbbb2e filter: pm_remez fixes/rework
5d7af18f5 filter: fir_design needs to check band edge specifications
bd7f221fb PMT: modern interfaces for dicts and strings
e95786b63 vocoder: codec2 en/decoder GRC: correctly implement string lookup for vlen
efedc021a GRC: Make evaluation errors more expressive by at least supplying the error type
876c1db6e filter: Update QMessageBox to work in Qt5
551c4e313 max_gain parameter added to agc constructors
a31082575 qtgui: sort list of installed headers, remove duplicates
644451b70 runtime: don't expose prefs.singleton
1c5b2189a modtool: cmake: Don't override user-defined CMAKE_INSTALL_PREFIX
d10e7d516 blocks: selector: don't blindly consume same amount from all inputs
e33e70921 New test for agc3
fc8765b89 grc: prevent Generate/Run silent fails for unsaved GRC flowgraphs
e58e8cb63 modtool: fix formatting of python qa template
24498f12c blocks: Reset item count when starting throttle
8a2ca316e uhd: rfnoc: CMakelists alphabetize and add examples to install
f74866531 UHD: fix rfnoc binding hashes
e49dbbfff uhd: rfnoc: Add bindings log-power RFNoC block, expand rx streamer types
130dbcb04 uhd: rfnoc: Add GRC binding and support for replay block
02acbc8dd uhd: rfnoc: fix literal_eval error
e3f913982 uhd: rfnoc: Add GRC binding and support for Vector IIR block

Release v3.10.6.0

[3.10.6.0] — 2023-03-31

Changed

Runtime

  • Add Python loggers to top_block and hier_block2
  • Change the default log level (in the config file) to INFO instead of DEBUG
  • Logging improvements in the scheduler
  • Correctly determine native page size for Windows

GRC

  • Fixed: opening the source of a hierachical block using the toolbar button produced an error
  • Use the logger, instead of print statements, in generated top blocks
  • Remove libX11 load from generated Python code — this was unncessary and produced warnings
  • Choose Editor dialog stays above parent

gr-analog

  • Signal Source: option to hide the message port

gr-blocks

  • Throttle: supports max time or number of samples per work iteration, useful for reducing latency at low sample rates
  • Delay block: option to hide the message port
  • File Meta Sink: fix missing Python import in template code

gr-channels

  • Default taps should be 1.0, not 1.0 + j1.0

gr-digital

  • Async Decoder: several changes to improve performance robustness (see the commit log for more details)

gr-fec

  • Tagged Decoder: correctly calculate the frame size for terminated CC decoder

gr-filter

  • Fixed reverse parameters in fir_filter_with_buffer and pfb_arb_resampler, which could cause crashes
  • Fixed PFB Arbitrary Resampler was ignoring attenuation parameter

gr-iio

  • Set gain mode as specified (was always manual)
  • Use the specified gain parameter for second channel (was same as first channel)

gr-qtgui

  • Histogram Sink: calculate range of bins correctly to avoid strange distributions
  • Save (to image) dialogs add file extensions and have a Save button (i.e., they work now)

gr-soapy

  • Sources: add tags when the frequency changes

gr-uhd

  • Support for more RFNoC blocks
    • Fosphor, which produces data to drive an on-screen, OpenGL-based renderer which is expected to be in the next release
    • Moving Average
    • Switchboard
    • Split Stream
  • FFT: add properties for direction, magnitude and scaling
  • RX Stream: flush after timeout
  • Fully support multi-channel TX/RX (params were available for one one channel)

gr-vocoder

  • Add a number of new codec modes for Codec2 and FreeDV

gr-zmq

  • Selectable bind/connect to support more flexible ZMQ patterns and NAT’d networks
  • Stream sources produce when available, instead of waiting for a buffer to fill, helping with latency

Modtool

  • Use interp and decim keywords correctly when generating blocks

Build system and packaging

  • Uninstall removes icons and desktop files

Release Candidate v3.10.6.0-rc1

[3.10.6.0] — 2023-03-31 (planned release date)

Changed

Runtime

  • Add Python loggers to top_block and hier_block2
  • Change the default log level (in the config file) to INFO instead of DEBUG
  • Logging improvements in the scheduler
  • Correctly determine native page size for Windows

GRC

  • Fixed: opening the source of a hierachical block using the toolbar button produced an error
  • Use the logger, instead of print statements, in generated top blocks
  • Remove libX11 load from generated Python code — this was unncessary and produced warnings
  • Choose Editor dialog stays above parent

gr-analog

  • Signal Source: option to hide the message port

gr-blocks

  • Throttle: supports max time or number of samples per work iteration, useful for reducing latency at low sample rates
  • Delay block: option to hide the message port
  • File Meta Sink: fix missing Python import in template code

gr-channels

  • Default taps should be 1.0, not 1.0 + j1.0

gr-digital

  • Async Decoder: several changes to improve performance robustness (see the commit log for more details)

gr-fec

  • Tagged Decoder: correctly calculate the frame size for terminated CC decoder

gr-filter

  • Fixed reverse parameters in fir_filter_with_buffer and pfb_arb_resampler, which could cause crashes
  • Fixed PFB Arbitrary Resampler was ignoring attenuation parameter

gr-iio

  • Set gain mode as specified (was always manual)
  • Use the specified gain parameter for second channel (was same as first channel)

gr-qtgui

  • Histogram Sink: calculate range of bins correctly to avoid strange distributions
  • Save (to image) dialogs add file extensions and have a Save button (i.e., they work now)

gr-soapy

  • Sources: add tags when the frequency changes

gr-uhd

  • Support for more RFNoC blocks
    • Fosphor, which produces data to drive an on-screen, OpenGL-based renderer which is expected to be in the next release
    • Moving Average
    • Switchboard
    • Split Stream
  • FFT: add properties for direction, magnitude and scaling
  • RX Stream: flush after timeout
  • Fully support multi-channel TX/RX (params were available for one one channel)

gr-vocoder

  • Add a number of new codec modes for Codec2 and FreeDV

gr-zmq

  • Selectable bind/connect to support more flexible ZMQ patterns and NAT’d networks
  • Stream sources produce when available, instead of waiting for a buffer to fill, helping with latency

Modtool

  • Use interp and decim keywords correctly when generating blocks

Build system and packaging

  • Uninstall removes icons and desktop files

Release v3.10.5.1

[3.10.5.1] — 2023-01-25

Some important blocks turned out to be broken in 3.10.5.0. This unscheduled release fixes those regressions and includes a small number of other cleanups and fixes. v3.10.5.1 is intended to be ABI compatible with v3.10.5.0. We’d still recommend rebuilding dependent packages, if possible.

Changed

Runtime

  • Restore the ability to set a default block buffer size using the buffer_size parameter in the config file. This was lost during refactoring in v3.9.

GRC

  • Add Python snipped hook point at «init before blocks», right before blocks are instantiated.

gr-audio

  • Remove support for OSX 10.3 and earlier.

gr-digital

  • Make tags visible to subclasses of OFDM Frame Equalizer.

gr-dtv

  • Correct constant in DVBS2 Modulator.

gr-fec

  • Fix errors in Channel Construction AWGN

gr-iio

  • Fix IIO blocks, which were broken due to a build-time dependency problem.

gr-network

  • Fix crash in UDP Source when buffer overruns.

gr-qtgui

  • Remove support for QWT 6.0 and earlier.

gr-uhd

  • Add async message port to USRP Source and publish overflow notifications.
  • Add bindings and example for RFNoC AddSub block.

Release v3.10.5.0

[3.10.5.0] — 2022-12-19

Runtime

  • Python block have access to the block logger, as in C++
  • Default log level changed to INFO (from OFF)
  • Memory-based logger gr.dictionary_logger_backend() added for log debugging
  • API Note: The Python block gateway is now completely implemented in the PyBind11 wrapper, in order to clean up Python dependencies. This is technically an API change, but should not have any external effect.
  • PMT serialization of Complex32 vectors is now REAL | IMAG on all platforms
  • Python IO signature replication (multiple ports specified by one signature) fixed

GRC

  • Continue processing block connections after a connection error occurs
  • Drawing/scaling fixes that improve user experience on HiDPI and Windows machines

Build system and packaging

  • Many deprecation warnings fixed
  • Make target link libraries PRIVATE wherever possible, removing unnecessary downstream dependencies
  • Add Fedora 37 and drop Fedora 35 CI targets
  • Conda re-rendered with more recent packages — thanks to Ryan Volz for making Conda an easy-to-use, cross-platform method of installing GNU Radio
  • Debian and Fedora packaging specs are no longer included in the code base, since they were out of date, and are maintained by downstreams

Testing

  • Code formatting rules for clang format updated to v14
  • Removed all compiler warning suppression
  • Enable Python block testing for Conda on macOS
  • Many other improvements that make maintenance easier — thanks again to Clayton Smith. In the process of fixing tests, a number of latent bugs were fixed throughout the code.

gr-analog

  • AGC3 performance and bug fixes
  • Python has access to control_loop parent class in PLL blocks
  • CTCSS detection of standard tones improved by fixing floating point comparison

gr-blocks

  • Probe Signal cross platform reliability improved by better thread synchronization

gr-digital

  • CRC32 and CRC16 blocks use little-endian order regardless of host order. This is a wire format change. The options were to have different endian machines unable to communicate, or older and newer versions unable to communicate. Note that there is a more general set of blocks (CRC Append and CRC Check) that are recommended for use wherever possible.
  • Packet headers use consistent bit order across machines
  • Floating point/rounding fix in constellation lookup table

gr-fec

  • LDPC G matrix n and k can be access from Python
  • LDPC matrix output size calculation corrected
  • CCSDS/Viterbi path metrics overflow fix

gr-network

  • Improve UDP Source/Sink efficiency by removing a layer of buffering and using the GR circular buffer instead of the Boost equivalent

gr-qtgui

  • Fixed Python code generation for Msg CheckBox, Digital Number Control, Toggle Button, Toggle Switch

gr-soapy

  • Sources will generate rx_time, rx_freq and rx_rate tags, as in UHD sources, where supported by the underlying Soapy driver

gr-uhd

  • Re-enable uhd.find_devices(), in addition to uhd.find()
  • RFNoC: generate correct Python code when using clock/time source
  • RFNoC: allow specification of adapter IDs for streamers
  • RFNoC: enable setting of vlen and types for streamers
  • RFNoC: streamers pay attention to stream args
  • RFNoC: sync block controller with gr-ettus OOT
  • RFNoC:set_property() and get_property() added to the C++ and Python APIs
  • RFNoC: Python binds added for rfnoc_block_generic

gr-zeromq

  • Sinks will optionally block on full queue, providing backpressure. Previously, overflow data was dropped.

Release Candidate v3.10.5.0-rc1

Release v3.10.4.0

GNU Radio Release v3.10.4.0

[3.10.4.0] — 2022-09-16

Changed

Project Scope

  • Replace get_initial_sptr() calls with make_block_sptr() calls. There were a number of places the incorrect function was being used.

Runtime

  • Use correctly typed arguments to log messages to prevent build errors.

GRC

  • Add xfce4-terminal and urxvt to the list of terminal emulators discovered during the build process.
  • Suppress GUI hint errors that were being shown in the terminal window.
  • Use integers for screenshot size (floats were causing Cairo errors).

Build system and packaging

  • Reformat cmake files and make cmake formatting part of the workflow.
  • Allow GNU Radio to be a part of other cmake-based projects.
  • Correct linking to libiio and libad9361 on macOS.
  • Update method for determining Python installation directory. This should work correctly now on (all?) distro releases.

gr-blocks

  • New Block Interleaver/Deinterleaver interleaves blocks of symbols
  • Correct calculation of items_remaining in File Source, which allows seek() to work correctly.
  • Add an example for Wavefile Sink

gr-digital

  • Deprecate the CRC32 and CRC16 blocks, which will be removed in the future. There are more general CRC blocks which do the same thing (and more).

gr-filter

  • Fix demo for PFB channelizer

gr-iio

  • FMCOMMS2 Sink assumes CS16 data is scaled to 32768, rather than 2048.
  • FMCOMMS2 returns the correct samples for the second channel in 2-channel mode.

gr-trellis

  • Correct Python bindings for trellis::metrics.

gr-qtgui

  • Range widget can now output messages when value changes.
  • Add C++ code generation for Time Sink
  • Regenerate Python bindings for some blocks when necessary.
  • Waterfall Sink correctly uses half spectrum for float input.

gr-uhd

  • Add Python bindings for the UHD find() functino.

gr-zeromq

  • Support newer get() and older/deprecated getsockopt() functions in cppzmq depending on availability.

Modtool

  • Parse IO signatures with or without gr:: prefix.

Documentation

  • Update certain file lists to keep build paths out of documentation.

Testing

  • Update Conda recipe for Qt 5.15 and re-render CI support files.
  • Add testing on Ubuntu 22.04.
  • Link tests directly against spdlog with not linking to GR runtime.
  • Ignore Python «missing whitespace after keywork» formatting error.

Release v3.9.8.0

GNU Radio Release v3.9.8.0

[3.9.8.0] — 2022-09-16

This is last quarterly release of GNU Radio 3.9. Version 3.10 is mostly compatible with 3.9, so we recommend that all users of 3.9 migrate to 3.10 when able.

Changed

Project Scope

  • Replace get_initial_sptr() calls with make_block_sptr() calls. There were a number of places the incorrect function was being used.

GRC

  • Add xfce4-terminal and urxvt to the list of terminal emulators discovered during the build process.
  • Suppress GUI hint errors that were being shown in the terminal window.
  • Use integers for screenshot size (floats were causing Cairo errors).

gr-blocks

  • Correct calculation of items_remaining in File Source, which allows seek() to work correctly.

gr-filter

  • Fix demo for PFB channelizer

gr-trellis

  • Correct Python bindings for trellis::metrics.

gr-uhd

  • Add Python bindings for the UHD find() functino.

Testing

  • Ignore Python «missing whitespace after keywork» formatting error.

Update March 21: 

At the moment on my Windows  10 PC there are GNU Radio 3.7.11 and 3.8.2 installed side by side without issues.

Both can be found following the link below:

http://www.gcndevelopment.com/gnuradio/downloads.htm

I tried some of the precompiled installers but not all worked. I got lucky with 3.7.11 and 3.8.2 :

Version 3.7.11 comes with osmosdr  plugin preinstalled.  Gr-osmosdr can be used to access AIRSPY and other SDR devices.  In addition to that 3.7.11 is compatible with Myriad RF’s GR-limesdr plugin so you can control Lime SDR as well.

Version  3.8.2 comes with soapy and Osmosdr as well.

The direct link to GNU Radio 64 bit  3.7.11 is here :

http://www.gcndevelopment.com/gnuradio/downloads/installers/v1.2.0/gnuradio_3.7.11_win64.msi

The direct link to GNU Radio 64 but 3.8.2 is here:

http://www.gcndevelopment.com/gnuradio/downloads/installers/v3.8.2.1/gnuradio_3.8.2.0_win64.msi

###############################################

In the past I worked with 3.6.4.1 on WinXP, Win7 32 bits and had compiled the instructions below:

Older instruction how to install GNU RADIO 3.6.4.1 on Windows 7 (32 bit)

Most probably, these will work for Windows XP and 8 (32 bit) as well.

I wanted to install GNU Radio 3.6.4.1 on Windows 7 and found some excellent instructions here (click) . User Bhaskar11 uploaded them and below I have just recompiled the instructions based on my experience. Following these instructions GNU Radio worked on my Win7 machine.

Note: I could not get QT GUI blocks working , but this is not a problem for my needs, since WX GUI blocks work fine including FFT, Waterfall, Scope etc.

I have gathered all necessary packages required to install GNU Radio 3.6.4.1  in one place and created a zip folder “stuff_gnuradio” and uploaded it to Dropbox. You just need to download it from there , unzip it to C:\stuff_gnuradio and follow the instructions.

Download “stuff_gnuradio” folder (177MB)

INSTRUCTIONS how to install GNU-RADIO 3.6.4.1 on Windows 7 (32 bit).

Most probably, these will work for Windows XP and 8 (32 bit) as well.

GNU Radio will be installed to C:\gnuradio and the UHD USRP driver to C:\UHD.

Follow the …21 steps below 🙂

1.

Read carefully the provided html file:

“[Discuss-gnuradio] Successful installation of GNURadio 3.6.4.1 on Window”

All the instructions below come from this link 

All credits go to user Bhaskar11 !

I have just recompiled his instructions based on my experience on Win7 and created a zip folder with all the necessary files in one place.

2.

Ensure your Internet connection is up and running

3.

If not already done, download all the necessary files (stuff_gnuradio.zip) from Dropbox and unzip this folder to C:\stuff_gnuradio

4.

Ensure that you have administrative privileges

5.

Go to the stuff_gnuradio folder, double click “vcredist_x86” and install C++ 2010 redistributable package, only  if required.

If it says a copy is already installed and offers to repair it, accept to repair.

If it says a later version is already installed, then accept to close.

6.

Double click “python-2.7.3”, select install for all users and keep the default settings.

7.

Double click “lxml-3.0.2.win32-py2.7” and keep the default settings.

8.

Double click “numpy-1.7.1-win32-superpack-python2.7” and keep the default settings.

9.

Double click “PyQt-Py2.7-x86-gpl-4.9.6-1” and keep the default settings.

10.

Double click “PyQwt-5.2.1-py2.7-x32-pyqt4.9.6-numpy1.7.1” and keep the default settings

11.

At this point you need to install pip.

Open a command terminal (cmd) and change directory to the “stuff_gnuradio” folder:

cd C:\stuff_gnuradio

Then type:

python get-pip.py

If this does not work, you need to add python to your system path.

To do so, add the following paths to your “Path” in the “System variables” :

C:\Python27\;C:\Python27\Scripts;

Close the command terminal you opened before and open a new one.

Type again :

cd C:\stuff_gnuradio

Then type

python get-pip.py

Now the installation of pip should start.

12.

Install the Cheetah whl file by typing

pip install Cheetah-2.4.4-cp27-none-win32.whl

By the way , pip must be recognized as a command . If not,you need to add  C:\Python27\Scripts to your “Path” in the “System variables” as mentioned above.

13.

Install the PyOpenGL whl file by typing:

pip install PyOpenGL-3.1.1b1-cp27-none-win32.whl

14.

Double click “pygtk-all-in-one-2.24.2.win32-py2.7” and keep the default settings.

15.

Double click “wxPython-2.8.12.1.win32-py2.7” and keep the default settings.

On Windows 7 and 8 you may get:

Runtime error R6034 “An application has made an attempt to load the C runtime library incorrectly.

Please contact the application’s support team for more information.”

Ignore the message and continue.

16.

Double click “wxPython-common-2.8.12.1.win32-py2.7”

On Windows 7 and 8 you may get:

Runtime error R6034 “An application has made an attempt to load the C runtime library incorrectly.

Please contact the application’s support team for more information.”

Ignore the message and continue.

17.

If you have a USRP install the drivers now by double-clicking

“uhd_003.005.004-release_Win32”

This is not the latest UHD driver.

I tried the latest but could not get connected to my USRP1.

Select the option to “Add gnuradio to the system path for all users”.

Change installation directory to C:\UHD.

All other settings  default.

Double check that your system path includes C:\UHD\bin; If not,add it.

When you plug in the USRP1 for the first time, point it to this directory:

erllc_uhd_winusb_driver found in the stuff_gnuradio folder.

18.

Double click “gnuradio_3.6.4.1_Win32”

Select the option to “Add gnuradio to the system path for all users”.

Change installation directory to C:\gnuradio.

On Windows 8 you may receive “Warning! PATH too long installer unable to modify PATH!” which seems to be a NSIS

installer problem when it finds the total path to be longer than 1024.

If you receive this message then you must manually add the installation bin directory to the system path.

Double check that your system path includes C:\gnuradio\bin; If not,add it.

19.

Manually add the PYTHONPATH environment variable.

Create a new environmental variable “PYTHONPATH”

Since we have installed gnuradio to C:\gnuradio , its value should be:

C:\gnuradio\lib\site-packages;

20.

Check that the GRC_BLOCKS_PATH environment variable has been set to by GNURadio installer.

Normally this should happen automatically.

If it has not been set, then first create a system variable GRC_BLOCKS_PATH and then set its value manually:

C:\gnuradio\share\gnuradio\grc\blocks;

21.

You are done! Close all open command windows, open a new one and type

gnuradio-companion.py

This will open GNU Radio!

Open TEST_GRC.grc file , hit F5( Generate) ,then hit F6(Execute) .

You can also use the provided “gnuradio.bat” file and create a shortcut to easily launch GNU Radio.

Enjoy !

Michael Margaras – SV1CAL

Older Releases

GNURadio_3.10.1.1-0_win64_release

This is the release version of GNU Radio for Windows.

Size: 83.30 MB

Version: 3.10.1.1

Published: 1 April, 2022

SHA-256 checksum

c0e6e1eb4c807411f96add295904ff0c9aae109ec640f22baa07d120fcf38dea

GNURadio_3.10.1.1-0_win64_symbols

PDB files for debugging.

Size: 42.80MB

Version: 3.10.1.1

Published: 1 April, 2022

GNURadio_3.10.0-0_win64_release

This is the release version of GNU Radio for Windows.

Size: 83.29 MB

Version: 3.10.0

Published: 18 January, 2022

SHA-256 checksum

cdeb047ade57d7d242329b6c4baaa49044591b6c4a4ed2ff6ecd12010657e0d6

GNURadio_3.10.0-0_win64_symbols

PDB files for debugging.

Size: 44.56MB

Version: 3.10.0

Published: 18 January, 2022

GNURadio_3.9.3-0_win64_release

This is the release version of GNU Radio for Windows.

Size: 82.36 MB

Version: 3.9.3

Published: 22 October, 2021

SHA-256 checksum

5c1f054a8b99b317c28a703a3bd2337bac77674cde09d5360845f6e730281d4f

GNURadio_3.9.3-0_win64_symbols

PDB files for debugging.

Size: 103.16 MB

Version: 3.9.3

Published: 22 October, 2021

GNURadio_3.9.2-1_win64_release

This is the release version of GNU Radio for Windows.

Size: 82.31 MB

Version: 3.9.2

Published: 25 June, 2021

SHA-256 checksum

5ef7b85408500de4da8b8e3e47c6ab2bcf95e6d9c4fb9803ded6cc60eb654039

GNURadio_3.9.2-0_win64_symbols

PDB files for debugging.

Size: 99.55 MB

Version: 3.9.2

Published: 25 June, 2021

GNURadio_3.8.3-0_win64_release

This is the release version of GNU Radio for Windows.

Size: 59.97 MB

Version: 3.8.3

Published: 28 May, 2021

SHA-256 checksum

bf26ba0cfd8539b74a7e37c7d623a8b5f2581ef3848d14e519b096d9de039850

GNURadio_3.8.3-0_win64_symbols

PDB files for debugging.

Size: 28.85 MB

Version: 3.8.3

Published: 28 May, 2021

GNURadio_3.8.3.1-1_win64_release

This is the release version of GNU Radio for Windows.

Size: 59.98 MB

Version: 3.8.3.1

Published: 25 June, 2021

SHA-256 checksum

eb4a2e969ce869ef33d96b75e657d25d0a8eaa26b2718e6687686aca187aeac1

GNURadio_3.8.3.1-0_win64_symbols

PDB files for debugging.

Size: 28.69 MB

Version: 3.8.3.1

Published: 25 June, 2021

GNURadio_3.9.1-3_win64_release

This is the release version of GNU Radio for Windows.

Size: 81.74 MB

Version: 3.9.1

Published: 13 April, 2021

SHA-256 checksum

8c4d6641145c771e8ccb6e6cf8528eb22609430265b38135ccc9101168d290ee

GNURadio_3.9.1-0_win64_symbols

PDB files for debugging.

Size: 96.33 MB

Version: 3.9.1

Published: 13 April, 2021

GNURadio_3.9.0-0_win64_release

This is the release version of GNU Radio for Windows.

Size: 53.04 MB

Version: 3.9.0

Published: 20 January, 2021

SHA-256 checksum

0280aeefc4a1ba2707d4d13a08ba6f6e4594b0e37902b15e4c84197ff01af566

GNURadio_3.9.0-0_win64_symbols

PDB files for debugging.

Size: 98.22 MB

Version: 3.9.0

Published: 20 January, 2021

GNURadio_3.8.2-0_win64_release

This is the release version of GNU Radio for Windows.

Size: 59.30 MB

Version: 3.8.2

Published: 25 August, 2020

SHA-256 checksum

b9da954df3b0d1c1db336ae50e8dc9c294dc7f42202ce3949a6236b168129fed

GNURadio_3.8.2-0_win64_symbols

PDB files for debugging.

Size: 99.6 MB

Version: 3.8.2

Published: 25 August, 2020

GNURadio_3.8.1-0_win64_release

This is the release version of GNU Radio for Windows.

Size: 56.37 MB

Version: 3.8.1

Published: 22 April, 2020

SHA-256 checksum

9459b6b87c396e1ca99b0e55db1ea7b7e8e1eddb0b888b086b776e701e175847

GNURadio_3.8.1-0_win64_symbols

PDB files for debugging.

Size: 99.3 MB

Version: 3.8.1

Published: 22 April, 2020

GNURadio_3.8.0-0_win64_release

This is the release version of GNU Radio for Windows.

Size: 57.45 MB

Version: 3.8.0

Published: 30 September, 2019

SHA-256 checksum

c7f994bfcf23af1f2cfc58d5b53f89a0748feb3692a845b7238333e4ff481db0

GNURadio_3.8.0-0_win64_symbols

PDB files for debugging.

Size: 91.79 MB

Version: 3.8.0

Published: 1 October, 2019

Windows Installation[edit]

Binary Installers[edit]

There are a few different unofficial GNU Radio binary installers that are maintained by the community:

1) Radioconda installer. This binary installer tends to be the most up-to-date, but you should check the list of packages to see if it includes what you need. It utilizes the conda package/environment manager and provides easy access to thousands of Python and other packages that are not strictly related to GNU Radio. This also lets you stay up-to-date without having to re-install. Since this provides the same conda-forge packages available without the installer, the conda install guide might be useful for additional instructions, including how to build additional OOT modules from source.
After installing Radioconda you will get a «GNU Radio Companion» added to your start menu. Run this to start GNU Radio Companion, the graphical GNU Radio design tool.

2) Geof Nieboer’s installer hosted at gcndevelopment.com (recently unreachable in 2022-07, but reachable currently 2022-10-23). This is a binary installer for 64-bit Windows 7/8/10 that includes all dependencies for Windows, a custom python distro, commonly used SDR drivers, and several OOT blocks.

3) Pothos SDR development environment installer. This binary installer includes GNU Radio, Pothos, CubicSDK, and other tools. It has historically been updated about once or twice per year.

Current Windows Status[edit]

Installing core GNU Radio and USRP on Windows is becoming more routine. Many OoT modules may still require compiling locally. Please report any success or failures. Patches and enhancements are especially welcome!

Windows Porting Issues[edit]

Considerable effort has been put into making the GNU Radio code portable among various operating systems, but there are several reasons why it cannot be «simply» compiled and run under Windows:

  • The build and install procedures are based on Linux scripts and tools
  • Several third-party libraries are used, each with its own, often system-dependent, installation procedure
  • Most GNU Radio applications must interface to hardware (e.g., a sound card or USRP) which require system-dependent drivers and installation procedures
  • Because GNU Radio is written as an extension to Python, there are potential problems on Windows if different runtime libraries are used for GNU Radio and Python

The following sections show how these issues can be addressed.

Installation Options[edit]

GNU Radio is designed to be flexible. It has a number of modules, capabilities, and options that can be enabled or disabled to suit the needs of the user, and the user can add custom blocks or modules to the system.

To support this flexibility, it comes with a set of files and scripts to be used with GNU software build tools (sh, make, autoconf, automake, etc.). These tools use Linux-like commands and filenames that are not normally available on Windows systems.

Fortunately, we are not the first to face this problem, and several solutions exist. These are presented in order of increasing difficulty:

Building on Windows with Native Tools[edit]

Ettus Application note [1] describes how to build from source. Similar is a post at [2] for OOT modules.

Powershell scripts are now available at https://www.github.com/gnieboer/gnuradio_windows_build_scripts that fully automate the build process for GNURadio 3.7.9.2+. A few build dependencies are required (MSVC 2015, Git, Doxygen, CMake, Perl, Wix) but all are free. The script has two options:

  1. Build all dependencies from source (including python itself)
  2. Download a prebuilt custom dependency package and then build only GNURadio and a few OOT modules on top.

The binary installers described above are built with these scripts. They ensure that all dependencies are built with the same toolchain against the same runtime libraries, and handle the patches and configuration «tweaks» needed to build them on Windows.
If option 1 is desired, note that to build scipy, the non-free Intel Fortran compiler is required, gfortran cannot build objects that can link with MSVC C objects. If you do not have said compiler, the scripts will download pre-compiled wheels instead.

More information on the build process is available on the GitHub repo readme, and also at http://www.gcndevelopment.com/gnuradio.

GNURadio 3.6 has also been compiled on Windows using native tools as well (see http://voltronics.blogspot.com/2013/01/gnu-radio-windows-build-guide.html and https://lists.gnu.org/archive/html/discuss-gnuradio/2013-08/msg00284.html)

More helpful tips on dependency version information have been reported:
https://lists.gnu.org/archive/html/discuss-gnuradio/2013-12/msg00497.html

MinGW/MSYS[edit]

MinGW (http://www.mingw.org/) provides GNU compilers and Window-specific header files for compiling native Windows applications.
MSYS (http://www.mingw.org/msys.shtml) is a companion set of Linux-like commands, shell, and build tools.
MinGW does not include a Linux programming interface; programs should be smaller and faster than with Cygwin (in theory), but will require more Windows-specific code.
MSYS is intended primarily as a build environment, making it more compact than Cygwin.

Because there is no Linux API emulation, GNU Radio built with MinGW should be used with standard Windows versions of Python and the third-party libraries.
MinGW does not provide as much support as Cygwin for installing third-party libraries, but in many cases precompiled binaries are available.

For detailed installation instructions using MinGW and MSYS see Installing GNU Radio with MinGW.

Cygwin[edit]

Cygwin (http://www.cygwin.com/) is a Linux-like environment for Windows.
It provides the Linux-like shell, file naming, and build tools we need and also makes it easy to install many of the third-party libraries required by GNU Radio. It also provides a Linux programming interface (API); this is not required by GNU Radio, but it lets us use the better-tested Linux versions of some functions.

Because the Linux API uses its own C runtime library, it is best to use Cygwin versions of Python and the third-party libraries when building GNU Radio with Cygwin.

For detailed installation instructions using Cygwin see Installing GNU Radio with Cygwin.

Chocolatey[edit]

To quote from the [|https://chocolatey.org/ Chocolatey homepage]: Chocolatey NuGet is a Machine Package Manager, somewhat like apt-get, but built with Windows in mind..

There are packages for gnuradio (and its dependencies) available in a separate repository (currently the best known source is: https://github.com/ariovistus/chocolatey-packages)

To install, open an Administrative command line session and run:

iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))

Now you need to install a source which has the recipes for gnuradio and dependents. The easiest method is to clone the chocolatey-packages from the github repository listed above (https://github.com/ariovistus/chocolatey-packages), then add the local source from within an Administrative command line session:

choco source add -name gnuradio -source C:<path-to>chocolatey-packages

Create the numpy package:

cd <path-to>chocolatey-packagenumpy
cpack

Create the gnuradio package:

cd <path-to>chocolatey-packagegnuradio
cpack

Now install the gnuradio package:

choco install gnuradio

Follow the command prompts.

WSL | Ubuntu[edit]

Enable WSL from windows features.

Install Ubuntu 20.04 (or newer) from Microsoft Store.

Using the Ubuntu terminal, install gnuradio as you would on linux [3]. If you want to develop GNU Radio’s core you will need to build GNU Radio from source.

WSL 1/2 (before WSLg)[edit]

Install additional package «libgtk-3-dev»

 sudo apt install libgtk-3-dev
 

WSL 1 and 2 (before WSLg) do not have an X server for displaying graphical applications. Install an X server, either VcXsrv [4] or Xming [5] as WSL does not come with an X server. VcXsrv is recommended as it is open source and self-contained instead of being tied to Cygwin, whereas Xming «asks for donations» to the developer as a dubious «sale» for non-existent support.

Launch VcXsrv, making sure to select «Disable access control» option in the Extra settings so that any application can export to X11.

Edit bashrc to set up the display by adding the following lines at the bottom of the file.

WSL1:

 # X11 forwarding for Windows
 export DISPLAY=:0.0
 export LIBGL_ALWAYS_INDIRECT=1

WSL2:

 # X11 forwarding for Windows
 export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0
 export LIBGL_ALWAYS_INDIRECT=1

Restart the Ubuntu terminal and run

 gnuradio-companion

WSLg[edit]

Currently in early testing stages, the WSLg update contains a Wayland graphics server and X interface layer allowing graphical applications to run without extra setup.

From the Ubuntu terminal run

 gnuradio-companion

Using an Azure VM[edit]

Another way to generate a GNU Radio environment if you’re using Windows, is to create an Azure Virtual Machine running Ubuntu Server 18.04 LTS.

If you already have an existing Azure account you can follow the instructions here[6] to create an Ubuntu VM using the Azure portal. Otherwise, you can sign up for an account here[7]. Azure provides free accounts for students[8] with a limited set of credits.

Once your VM is created you should be able to SSH into it, to install a desktop environment. Full instructions can be found here, but in summary:
Install xfce

 sudo apt-get update 
 sudo apt-get -y install xfce4

Install xrdp as a remote desktop server

 sudo apt-get -y install xrdp 
 sudo systemctl enable xrdp

Configure xrdp to use xfce

 echo xfce4-session >~/.xsession

Restart the xrdp service

 sudo service xrdp restart

You will need to create a local password for your Linux VM (on top of your existing SSH key), and open port 3389[9] on the VM.

Finally you can use a remote desktop client, such as Remote Desktop Connection to connect to your VM and follow the instructions for GNU Radio on Ubuntu found here[10].

Known Windows Build Issues[edit]

So far, we have workarounds for all reported problems:

  • I got the following error after a clean install «This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.». I fixed this by finding qwindows.dll on my PC (for me it was in C:Program FilesGNURadio-3.8binplatforms), creating a new directory C:Program FilesGNURadio-3.8binpluginsplatforms, and copying the 4 DLLs to C:Program FilesGNURadio-3.8binpluginsplatforms (I had to create the «….pluginsplatforms» sub-directory). I’m sure there’s a more elegant fix, but this seems to work.

Release v3.10.5.1

[3.10.5.1] — 2023-01-25

Some important blocks turned out to be broken in 3.10.5.0. This unscheduled release fixes those regressions and includes a small number of other cleanups and fixes. v3.10.5.1 is intended to be ABI compatible with v3.10.5.0. We’d still recommend rebuilding dependent packages, if possible.

Changed

Runtime

  • Restore the ability to set a default block buffer size using the buffer_size parameter in the config file. This was lost during refactoring in v3.9.

GRC

  • Add Python snipped hook point at «init before blocks», right before blocks are instantiated.

gr-audio

  • Remove support for OSX 10.3 and earlier.

gr-digital

  • Make tags visible to subclasses of OFDM Frame Equalizer.

gr-dtv

  • Correct constant in DVBS2 Modulator.

gr-fec

  • Fix errors in Channel Construction AWGN

gr-iio

  • Fix IIO blocks, which were broken due to a build-time dependency problem.

gr-network

  • Fix crash in UDP Source when buffer overruns.

gr-qtgui

  • Remove support for QWT 6.0 and earlier.

gr-uhd

  • Add async message port to USRP Source and publish overflow notifications.
  • Add bindings and example for RFNoC AddSub block.

Release v3.10.5.0

[3.10.5.0] — 2022-12-19

Runtime

  • Python block have access to the block logger, as in C++
  • Default log level changed to INFO (from OFF)
  • Memory-based logger gr.dictionary_logger_backend() added for log debugging
  • API Note: The Python block gateway is now completely implemented in the PyBind11 wrapper, in order to clean up Python dependencies. This is technically an API change, but should not have any external effect.
  • PMT serialization of Complex32 vectors is now REAL | IMAG on all platforms
  • Python IO signature replication (multiple ports specified by one signature) fixed

GRC

  • Continue processing block connections after a connection error occurs
  • Drawing/scaling fixes that improve user experience on HiDPI and Windows machines

Build system and packaging

  • Many deprecation warnings fixed
  • Make target link libraries PRIVATE wherever possible, removing unnecessary downstream dependencies
  • Add Fedora 37 and drop Fedora 35 CI targets
  • Conda re-rendered with more recent packages — thanks to Ryan Volz for making Conda an easy-to-use, cross-platform method of installing GNU Radio
  • Debian and Fedora packaging specs are no longer included in the code base, since they were out of date, and are maintained by downstreams

Testing

  • Code formatting rules for clang format updated to v14
  • Removed all compiler warning suppression
  • Enable Python block testing for Conda on macOS
  • Many other improvements that make maintenance easier — thanks again to Clayton Smith. In the process of fixing tests, a number of latent bugs were fixed throughout the code.

gr-analog

  • AGC3 performance and bug fixes
  • Python has access to control_loop parent class in PLL blocks
  • CTCSS detection of standard tones improved by fixing floating point comparison

gr-blocks

  • Probe Signal cross platform reliability improved by better thread synchronization

gr-digital

  • CRC32 and CRC16 blocks use little-endian order regardless of host order. This is a wire format change. The options were to have different endian machines unable to communicate, or older and newer versions unable to communicate. Note that there is a more general set of blocks (CRC Append and CRC Check) that are recommended for use wherever possible.
  • Packet headers use consistent bit order across machines
  • Floating point/rounding fix in constellation lookup table

gr-fec

  • LDPC G matrix n and k can be access from Python
  • LDPC matrix output size calculation corrected
  • CCSDS/Viterbi path metrics overflow fix

gr-network

  • Improve UDP Source/Sink efficiency by removing a layer of buffering and using the GR circular buffer instead of the Boost equivalent

gr-qtgui

  • Fixed Python code generation for Msg CheckBox, Digital Number Control, Toggle Button, Toggle Switch

gr-soapy

  • Sources will generate rx_time, rx_freq and rx_rate tags, as in UHD sources, where supported by the underlying Soapy driver

gr-uhd

  • Re-enable uhd.find_devices(), in addition to uhd.find()
  • RFNoC: generate correct Python code when using clock/time source
  • RFNoC: allow specification of adapter IDs for streamers
  • RFNoC: enable setting of vlen and types for streamers
  • RFNoC: streamers pay attention to stream args
  • RFNoC: sync block controller with gr-ettus OOT
  • RFNoC:set_property() and get_property() added to the C++ and Python APIs
  • RFNoC: Python binds added for rfnoc_block_generic

gr-zeromq

  • Sinks will optionally block on full queue, providing backpressure. Previously, overflow data was dropped.

Release Candidate v3.10.5.0-rc1

Release v3.10.4.0

GNU Radio Release v3.10.4.0

[3.10.4.0] — 2022-09-16

Changed

Project Scope

  • Replace get_initial_sptr() calls with make_block_sptr() calls. There were a number of places the incorrect function was being used.

Runtime

  • Use correctly typed arguments to log messages to prevent build errors.

GRC

  • Add xfce4-terminal and urxvt to the list of terminal emulators discovered during the build process.
  • Suppress GUI hint errors that were being shown in the terminal window.
  • Use integers for screenshot size (floats were causing Cairo errors).

Build system and packaging

  • Reformat cmake files and make cmake formatting part of the workflow.
  • Allow GNU Radio to be a part of other cmake-based projects.
  • Correct linking to libiio and libad9361 on macOS.
  • Update method for determining Python installation directory. This should work correctly now on (all?) distro releases.

gr-blocks

  • New Block Interleaver/Deinterleaver interleaves blocks of symbols
  • Correct calculation of items_remaining in File Source, which allows seek() to work correctly.
  • Add an example for Wavefile Sink

gr-digital

  • Deprecate the CRC32 and CRC16 blocks, which will be removed in the future. There are more general CRC blocks which do the same thing (and more).

gr-filter

  • Fix demo for PFB channelizer

gr-iio

  • FMCOMMS2 Sink assumes CS16 data is scaled to 32768, rather than 2048.
  • FMCOMMS2 returns the correct samples for the second channel in 2-channel mode.

gr-trellis

  • Correct Python bindings for trellis::metrics.

gr-qtgui

  • Range widget can now output messages when value changes.
  • Add C++ code generation for Time Sink
  • Regenerate Python bindings for some blocks when necessary.
  • Waterfall Sink correctly uses half spectrum for float input.

gr-uhd

  • Add Python bindings for the UHD find() functino.

gr-zeromq

  • Support newer get() and older/deprecated getsockopt() functions in cppzmq depending on availability.

Modtool

  • Parse IO signatures with or without gr:: prefix.

Documentation

  • Update certain file lists to keep build paths out of documentation.

Testing

  • Update Conda recipe for Qt 5.15 and re-render CI support files.
  • Add testing on Ubuntu 22.04.
  • Link tests directly against spdlog with not linking to GR runtime.
  • Ignore Python «missing whitespace after keywork» formatting error.

Release v3.9.8.0

GNU Radio Release v3.9.8.0

[3.9.8.0] — 2022-09-16

This is last quarterly release of GNU Radio 3.9. Version 3.10 is mostly compatible with 3.9, so we recommend that all users of 3.9 migrate to 3.10 when able.

Changed

Project Scope

  • Replace get_initial_sptr() calls with make_block_sptr() calls. There were a number of places the incorrect function was being used.

GRC

  • Add xfce4-terminal and urxvt to the list of terminal emulators discovered during the build process.
  • Suppress GUI hint errors that were being shown in the terminal window.
  • Use integers for screenshot size (floats were causing Cairo errors).

gr-blocks

  • Correct calculation of items_remaining in File Source, which allows seek() to work correctly.

gr-filter

  • Fix demo for PFB channelizer

gr-trellis

  • Correct Python bindings for trellis::metrics.

gr-uhd

  • Add Python bindings for the UHD find() functino.

Testing

  • Ignore Python «missing whitespace after keywork» formatting error.

Release Candidate v3.10.4.0-rc1

Release Candidate v3.9.8.0-rc1

Release v3.10.3.0

Changed

Project Scope

  • Continue replacement of Boost functionality with standard C++ continues, where practical, making the code more maintainable.
  • Fix more flaky CI tests that were failing unnecessarily. This helps greatly with maintenance.

gnuradio-runtime

  • Only catch Thrift transport exceptions
  • Import PyQt5 before matplotlib to work around a bug
  • Fix broken log format string in set_min_output_buffer
  • Process system messages before others. This helps with orderly flowgraph termination.
  • Custom buffers: add missing (simulated) data transfer to input/output_blocked_callback functions in host_buffer class
  • Fix Mach-kernel timebase (numer and denom were reversed)
  • Fix signed integer overflows in fixed-point table generation

GRC

  • Add parentheses on arithmetic expressions to avoid operator precedence problems in templated code
  • Fix create hier / missing top_block error

Build system and packaging

  • CI: Add testing for Fedora 36, remove Fedora 34.
  • cmake: Use platform-specific Python install schemes
  • cmake: Always prefix git hash used as version with «g»
  • cmake: Allow MPIR/MPLIB package find to fail gracefully
  • cmake: Remove ‘REQUIRED’ flag for Volk

gr-blocks

  • Fix rotator_cc scheduled phase increment updates
  • Wavefile Sink: add support for Ogg Opus if libsndfile is >= 1.0.29
  • Probe Signal: synchronize access to d_level to prevent race conditions

gr-digital

  • Use memcmp for CRC comparisons to avoid alignment errors

gr-dtv

  • Use unsigned integer for CRC calculation
  • Fix use of uninitialized memory
  • Fix initialization of L1Post struct

gr-filter

  • Fix various bugs in Generic Filterbank

gr-iio

  • Fix grc pluto sink attenuation callback

gr-qtgui

  • Several sinks produce wrong error messages, when GUI Hint is used. Reorder params in yml files to fix.

gr-soapy

  • Deactivate stream before closing. Some modules depend on this behavior.

gr-uhd

  • Implement get_gpio_attr()

Code generation tools

  • C++ generation: Fix various template errors

Modtool

  • gr_newmod: Fix copying python bindings to test dir on Windows
  • gr_newmod: Make untagged conda package version less specific
  • modtool: Add a conda recipe to the OOT template
  • Make the pydoc_h.mako more clang compliant

Documentation

  • Add shim Sphinx config for readthedocs

Authors

The following people contributed commits to this release. They are credited by the name used in commits. There are may people who contribute in other ways … discussions, reviews, bug reporting, testing, etc. We just don’t have an easy way to provide credit for all that valuable work.

  • Adrian Suciu adrian.suciu@analog.com
  • Bjoern Kerler info@revskills.de
  • Clayton Smith argilo@gmail.com
  • Daniel Estévez daniel@destevez.net
  • David Sorber david.sorber@blacklynx.tech
  • Igor Freire igor@blockstream.com
  • Jeff Long willcode4@gmail.com
  • Josh Morman jmorman@gnuradio.org
  • maitbot
  • Martin Braun martin@gnuradio.org
  • Michael Roe
  • Paul Atreides maud.dib1984@gmail.com
  • Philipp Niedermayer eltos@outlook.de
  • Ron Economos w6rz@comcast.net
  • Ryan Volz ryan.volz@gmail.com
  • Volker Schroer
  • wakass

Release v3.9.7.0

Changed

Project Scope

  • Fix more flaky CI tests that were failing unnecessarily. This helps greatly with maintenance.

gnuradio-runtime

  • Only catch Thrift transport exceptions
  • Import PyQt5 before matplotlib to work around a bug
  • Process system messages before others. This helps with orderly flowgraph termination.
  • Fix Mach-kernel timebase (numer and denom were reversed)
  • Fix signed integer overflows in fixed-point table generation

GRC

  • Fix create hier / missing top_block error

Build system and packaging

  • CI: Add testing for Fedora 36, remove Fedora 34.
  • cmake: Allow MPIR/MPLIB package find to fail gracefully

gr-blocks

  • Fix rotator_cc scheduled phase increment updates
  • Probe Signal: synchronize access to d_level to prevent race conditions

gr-digital

  • Use memcmp for CRC comparisons to avoid alignment errors

gr-dtv

  • Use unsigned integer for CRC calculation
  • Fix use of uninitialized memory
  • Fix initialization of L1Post struct

gr-filter

  • Fix various bugs in Generic Filterbank

gr-qtgui

  • Several sinks produce wrong error messages, when GUI Hint is used. Reorder params in yml files to fix.

gr-soapy

  • Deactivate stream before closing. Some modules depend on this behavior.

gr-uhd

  • Implement get_gpio_attr()

Modtool

  • gr_newmod: Fix copying python bindings to test dir on Windows
  • Make the pydoc_h.mako more clang compliant

Authors

The following people contributed commits to this release. They are credited by the name used in commits. There are may people who contribute in other ways … discussions, reviews, bug reporting, testing, etc. We just don’t have an easy way to provide credit for all that valuable work.

  • Bjoern Kerler info@revskills.de
  • Clayton Smith argilo@gmail.com
  • Igor Freire igor@blockstream.com
  • Jeff Long willcode4@gmail.com
  • maitbot
  • Philipp Niedermayer eltos@outlook.de
  • Ron Economos w6rz@comcast.net
  • Ryan Volz ryan.volz@gmail.com
  • Volker Schroer
  • wakass

Release Candidate v3.10.3.0-rc1

[3.10.3.0-rc1] — 2022-06-09

Changed

Project Scope

  • Continue replacement of Boost functionality with standard C++ continues, where practical, making the code more maintainable.
  • Fix more flaky CI tests that were failing unnecessarily. This helps greatly with maintenance.

gnuradio-runtime

  • Only catch Thrift transport exceptions
  • Import PyQt5 before matplotlib to work around a bug
  • Fix broken log format string in set_min_output_buffer
  • Process system messages before others. This helps with orderly flowgraph termination.
  • Custom buffers: add missing (simulated) data transfer to input/output_blocked_callback functions in host_buffer class
  • Fix Mach-kernel timebase (numer and denom were reversed)
  • Fix signed integer overflows in fixed-point table generation

GRC

  • Add parentheses on arithmetic expressions to avoid operator precedence problems in templated code
  • Fix create hier / missing top_block error

Build system and packaging

  • CI: Add testing for Fedora 36, remove Fedora 34.
  • cmake: Use platform-specific Python install schemes
  • cmake: Always prefix git hash used as version with «g»
  • cmake: Allow MPIR/MPLIB package find to fail gracefully
  • cmake: Remove ‘REQUIRED’ flag for Volk

gr-blocks

  • Fix rotator_cc scheduled phase increment updates
  • Wavefile Sink: add support for Ogg Opus if libsndfile is >= 1.0.29
  • Probe Signal: synchronize access to d_level to prevent race conditions

gr-digital

  • Use memcmp for CRC comparisons to avoid alignment errors

gr-dtv

  • Use unsigned integer for CRC calculation
  • Fix use of uninitialized memory
  • Fix initialization of L1Post struct

gr-filter

  • Fix various bugs in Generic Filterbank

gr-iio

  • Fix grc pluto sink attenuation callback

gr-qtgui

  • Several sinks produce wrong error messages, when GUI Hint is used. Reorder params in yml files to fix.

gr-soapy

  • Deactivate stream before closing. Some modules depend on this behavior.

gr-uhd

  • Implement get_gpio_attr()

Code generation tools

  • C++ generation: Fix various template errors

Modtool

  • gr_newmod: Fix copying python bindings to test dir on Windows
  • gr_newmod: Make untagged conda package version less specific
  • modtool: Add a conda recipe to the OOT template
  • Make the pydoc_h.mako more clang compliant

Documentation

  • Add shim Sphinx config for readthedocs

Authors

The following people contributed commits to this release. They are credited by the name used in commits. There are may people who contribute in other ways … discussions, reviews, bug reporting, testing, etc. We just don’t have an easy way to provide credit for all that valuable work.

  • Adrian Suciu adrian.suciu@analog.com
  • Bjoern Kerler info@revskills.de
  • Clayton Smith argilo@gmail.com
  • Daniel Estévez daniel@destevez.net
  • David Sorber david.sorber@blacklynx.tech
  • Igor Freire igor@blockstream.com
  • Jeff Long willcode4@gmail.com
  • Josh Morman jmorman@gnuradio.org
  • maitbot
  • Martin Braun martin@gnuradio.org
  • Michael Roe
  • Paul Atreides maud.dib1984@gmail.com
  • Philipp Niedermayer eltos@outlook.de
  • Ron Economos w6rz@comcast.net
  • Ryan Volz ryan.volz@gmail.com
  • Volker Schroer
  • wakass

Update March 21: 

At the moment on my Windows  10 PC there are GNU Radio 3.7.11 and 3.8.2 installed side by side without issues.

Both can be found following the link below:

http://www.gcndevelopment.com/gnuradio/downloads.htm

I tried some of the precompiled installers but not all worked. I got lucky with 3.7.11 and 3.8.2 :

Version 3.7.11 comes with osmosdr  plugin preinstalled.  Gr-osmosdr can be used to access AIRSPY and other SDR devices.  In addition to that 3.7.11 is compatible with Myriad RF’s GR-limesdr plugin so you can control Lime SDR as well.

Version  3.8.2 comes with soapy and Osmosdr as well.

The direct link to GNU Radio 64 bit  3.7.11 is here :

http://www.gcndevelopment.com/gnuradio/downloads/installers/v1.2.0/gnuradio_3.7.11_win64.msi

The direct link to GNU Radio 64 but 3.8.2 is here:

http://www.gcndevelopment.com/gnuradio/downloads/installers/v3.8.2.1/gnuradio_3.8.2.0_win64.msi

###############################################

In the past I worked with 3.6.4.1 on WinXP, Win7 32 bits and had compiled the instructions below:

Older instruction how to install GNU RADIO 3.6.4.1 on Windows 7 (32 bit)

Most probably, these will work for Windows XP and 8 (32 bit) as well.

I wanted to install GNU Radio 3.6.4.1 on Windows 7 and found some excellent instructions here (click) . User Bhaskar11 uploaded them and below I have just recompiled the instructions based on my experience. Following these instructions GNU Radio worked on my Win7 machine.

Note: I could not get QT GUI blocks working , but this is not a problem for my needs, since WX GUI blocks work fine including FFT, Waterfall, Scope etc.

I have gathered all necessary packages required to install GNU Radio 3.6.4.1  in one place and created a zip folder “stuff_gnuradio” and uploaded it to Dropbox. You just need to download it from there , unzip it to C:stuff_gnuradio and follow the instructions.

Download “stuff_gnuradio” folder (177MB)

INSTRUCTIONS how to install GNU-RADIO 3.6.4.1 on Windows 7 (32 bit).

Most probably, these will work for Windows XP and 8 (32 bit) as well.

GNU Radio will be installed to C:gnuradio and the UHD USRP driver to C:UHD.

Follow the …21 steps below 🙂

1.

Read carefully the provided html file:

“[Discuss-gnuradio] Successful installation of GNURadio 3.6.4.1 on Window”

All the instructions below come from this link 

All credits go to user Bhaskar11 !

I have just recompiled his instructions based on my experience on Win7 and created a zip folder with all the necessary files in one place.

2.

Ensure your Internet connection is up and running

3.

If not already done, download all the necessary files (stuff_gnuradio.zip) from Dropbox and unzip this folder to C:stuff_gnuradio

4.

Ensure that you have administrative privileges

5.

Go to the stuff_gnuradio folder, double click “vcredist_x86” and install C++ 2010 redistributable package, only  if required.

If it says a copy is already installed and offers to repair it, accept to repair.

If it says a later version is already installed, then accept to close.

6.

Double click “python-2.7.3”, select install for all users and keep the default settings.

7.

Double click “lxml-3.0.2.win32-py2.7” and keep the default settings.

8.

Double click “numpy-1.7.1-win32-superpack-python2.7” and keep the default settings.

9.

Double click “PyQt-Py2.7-x86-gpl-4.9.6-1” and keep the default settings.

10.

Double click “PyQwt-5.2.1-py2.7-x32-pyqt4.9.6-numpy1.7.1” and keep the default settings

11.

At this point you need to install pip.

Open a command terminal (cmd) and change directory to the “stuff_gnuradio” folder:

cd C:stuff_gnuradio

Then type:

python get-pip.py

If this does not work, you need to add python to your system path.

To do so, add the following paths to your “Path” in the “System variables” :

C:Python27;C:Python27Scripts;

Close the command terminal you opened before and open a new one.

Type again :

cd C:stuff_gnuradio

Then type

python get-pip.py

Now the installation of pip should start.

12.

Install the Cheetah whl file by typing

pip install Cheetah-2.4.4-cp27-none-win32.whl

By the way , pip must be recognized as a command . If not,you need to add  C:Python27Scripts to your “Path” in the “System variables” as mentioned above.

13.

Install the PyOpenGL whl file by typing:

pip install PyOpenGL-3.1.1b1-cp27-none-win32.whl

14.

Double click “pygtk-all-in-one-2.24.2.win32-py2.7” and keep the default settings.

15.

Double click “wxPython-2.8.12.1.win32-py2.7” and keep the default settings.

On Windows 7 and 8 you may get:

Runtime error R6034 “An application has made an attempt to load the C runtime library incorrectly.

Please contact the application’s support team for more information.”

Ignore the message and continue.

16.

Double click “wxPython-common-2.8.12.1.win32-py2.7”

On Windows 7 and 8 you may get:

Runtime error R6034 “An application has made an attempt to load the C runtime library incorrectly.

Please contact the application’s support team for more information.”

Ignore the message and continue.

17.

If you have a USRP install the drivers now by double-clicking

“uhd_003.005.004-release_Win32”

This is not the latest UHD driver.

I tried the latest but could not get connected to my USRP1.

Select the option to “Add gnuradio to the system path for all users”.

Change installation directory to C:UHD.

All other settings  default.

Double check that your system path includes C:UHDbin; If not,add it.

When you plug in the USRP1 for the first time, point it to this directory:

erllc_uhd_winusb_driver found in the stuff_gnuradio folder.

18.

Double click “gnuradio_3.6.4.1_Win32”

Select the option to “Add gnuradio to the system path for all users”.

Change installation directory to C:gnuradio.

On Windows 8 you may receive “Warning! PATH too long installer unable to modify PATH!” which seems to be a NSIS

installer problem when it finds the total path to be longer than 1024.

If you receive this message then you must manually add the installation bin directory to the system path.

Double check that your system path includes C:gnuradiobin; If not,add it.

19.

Manually add the PYTHONPATH environment variable.

Create a new environmental variable “PYTHONPATH”

Since we have installed gnuradio to C:gnuradio , its value should be:

C:gnuradiolibsite-packages;

20.

Check that the GRC_BLOCKS_PATH environment variable has been set to by GNURadio installer.

Normally this should happen automatically.

If it has not been set, then first create a system variable GRC_BLOCKS_PATH and then set its value manually:

C:gnuradiosharegnuradiogrcblocks;

21.

You are done! Close all open command windows, open a new one and type

gnuradio-companion.py

This will open GNU Radio!

Open TEST_GRC.grc file , hit F5( Generate) ,then hit F6(Execute) .

You can also use the provided “gnuradio.bat” file and create a shortcut to easily launch GNU Radio.

Enjoy !

Michael Margaras – SV1CAL

Время на прочтение
10 мин

Количество просмотров 35K

Привет, Хабр.

В третьей части было рассказано, как получить доступ к SDR-приемнику посредством языка Python. Сейчас мы познакомимся с программой GNU Radio — системой, позволяющей создать достаточно сложную конфигурацию радиоустройства, не написав ни единой строчки кода.

Для примера рассмотрим задачу параллельного приема нескольких FM-станций на один приемник. В качестве приемника будем использовать все тот же RTL SDR V3.

Продолжение под катом.

Установка

Для начала работы GNU Radio необходимо установить, дистрибутив для Windows можно скачать здесь. Система эта кроссплатформенная, версии есть также под Linux и под OSX (вроде бы GNU Radio успешно запускали и на Raspberry Pi, но 100% гарантии дать не могу).

По сути, GNU Radio это целый фреймворк для цифровой обработки сигналов, в котором программа «собирается» из отдельных модулей. Есть большое количество уже готовых блоков, при желании также можно создавать свои собственные. Сами модули написаны на С++, а для взаимодействия блоков друг с другом используется Python. Желающие могут посмотреть на API более подробно, но на практике это, скорее всего, не пригодится — все действия можно делать визуально в программе GNU Radio Companion.

Система ориентирована на обработку потоков данных, так что каждый блок обычно имеет вход и выход. Далее, соединяя блоки в редакторе, мы получаем готовую систему. Сам интерфейс GNU Radio довольно простой, сложность состоит в понимании того, что делает тот или иной блок. Как говорилось ранее, низкоуровневая работа с SDR имеет высокий порог входа и требует некоторого знания в DSP и математике. Но мы рассмотрим простую задачу, для которой никаких специальных знаний не потребуется. Итак, приступим.

Начало работы

Запускаем GNU Radio Companion, создаем новый проект, тип проекта выбираем WX GUI, добавляем на экран и соединяем два блока, как показано на скриншоте.

Мы видим два типа блоков — Source (источник) и Sink (выход, «слив»). RTL-SDR — это наш приемник, FFT GUI — это виртуальный спектроанализатор.

Переменную Sample Rate устанавливаем в 2048000, это частота дискретизации нашего приемника. Частоту RTL-SDR оставляем по умолчанию равной 100МГц.

Запускаем проект — все работает, мы видим спектр FM-станций. Первая программа для GNU Radio готова!

Если мы посмотрим лог, то увидим такие строки.

Generating: ‘D:\MyProjects\GNURadio\top_block.py’
Executing: C:Python27python.exe -u D:MyProjectsGNURadiotop_block.py

Да, мы можем посмотреть файл top_block.py, который сгенерил нам GNU Radio Companion. Истинные джедаи могут писать непосредственно в Python, но требуемый код, как мы видим, довольно большой. Мы же создали его за 1 минуту.

top_blocks.py

#!/usr/bin/env python2
# -*- coding: utf-8 -*-
##################################################
# GNU Radio Python Flow Graph
# Title: Top Block
# Generated: Wed May 22 22:05:14 2019
##################################################

if __name__ == '__main__':
    import ctypes
    import sys
    if sys.platform.startswith('linux'):
        try:
            x11 = ctypes.cdll.LoadLibrary('libX11.so')
            x11.XInitThreads()
        except:
            print "Warning: failed to XInitThreads()"

from gnuradio import eng_notation
from gnuradio import gr
from gnuradio import wxgui
from gnuradio.eng_option import eng_option
from gnuradio.fft import window
from gnuradio.filter import firdes
from gnuradio.wxgui import fftsink2
from grc_gnuradio import wxgui as grc_wxgui
from optparse import OptionParser
import osmosdr
import time
import wx


class top_block(grc_wxgui.top_block_gui):

    def __init__(self):
        grc_wxgui.top_block_gui.__init__(self, title="Top Block")

        ##################################################
        # Variables
        ##################################################
        self.samp_rate = samp_rate = 2048000

        ##################################################
        # Blocks
        ##################################################
        self.wxgui_fftsink2_0 = fftsink2.fft_sink_c(
        	self.GetWin(),
        	baseband_freq=0,
        	y_per_div=10,
        	y_divs=10,
        	ref_level=0,
        	ref_scale=2.0,
        	sample_rate=samp_rate,
        	fft_size=1024,
        	fft_rate=15,
        	average=False,
        	avg_alpha=None,
        	title='FFT Plot',
        	peak_hold=False,
        )
        self.Add(self.wxgui_fftsink2_0.win)
        self.rtlsdr_source_0 = osmosdr.source( args="numchan=" + str(1) + " " + '' )
        self.rtlsdr_source_0.set_sample_rate(samp_rate)
        self.rtlsdr_source_0.set_center_freq(100e6, 0)
        self.rtlsdr_source_0.set_freq_corr(0, 0)
        self.rtlsdr_source_0.set_dc_offset_mode(0, 0)
        self.rtlsdr_source_0.set_iq_balance_mode(0, 0)
        self.rtlsdr_source_0.set_gain_mode(False, 0)
        self.rtlsdr_source_0.set_gain(10, 0)
        self.rtlsdr_source_0.set_if_gain(20, 0)
        self.rtlsdr_source_0.set_bb_gain(20, 0)
        self.rtlsdr_source_0.set_antenna('', 0)
        self.rtlsdr_source_0.set_bandwidth(0, 0)


        ##################################################
        # Connections
        ##################################################
        self.connect((self.rtlsdr_source_0, 0), (self.wxgui_fftsink2_0, 0))

    def get_samp_rate(self):
        return self.samp_rate

    def set_samp_rate(self, samp_rate):
        self.samp_rate = samp_rate
        self.wxgui_fftsink2_0.set_sample_rate(self.samp_rate)
        self.rtlsdr_source_0.set_sample_rate(self.samp_rate)


def main(top_block_cls=top_block, options=None):

    tb = top_block_cls()
    tb.Start(True)
    tb.Wait()


if __name__ == '__main__':
    main()

Впрочем, если убрать громоздкую инициализацию, то мы увидим, что ключевых строк кода не так уж много.

from gnuradio import gr
from gnuradio.wxgui import fftsink2
import osmosdr

class top_block(grc_wxgui.top_block_gui):

    def __init__(self):
        grc_wxgui.top_block_gui.__init__(self, title="Top Block")
        self.samp_rate = samp_rate = 2048000
        self.wxgui_fftsink2_0 = fftsink2.fft_sink_c(...)
        self.Add(self.wxgui_fftsink2_0.win)
        self.rtlsdr_source_0 = osmosdr.source(args="numchan=" + str(1) + " " + '' )
        self.connect((self.rtlsdr_source_0, 0), (self.wxgui_fftsink2_0, 0))

def main(top_block_cls=top_block, options=None):
    tb = top_block_cls()
    tb.Start(True)
    tb.Wait()

Так что в принципе, это можно написать вручную. Но мышью оно все-таки быстрее. Хотя возможность поменять код иногда может пригодиться, если захочется добавить какую-то нестандартную логику.

Принимаем FM-радио

Теперь попробуем принять одну из станций. Как было видно из скриншотов, центральная частота приемника 100МГц и ширина полосы пропускания около 2МГц. На спектре мы видим две станции, на 100.1МГц и 100.7МГц соответственно.

Первым шагом необходимо перенести спектр станции в центр, сейчас он отстоит вправо на 100КГц. Для этого вспоминаем школьную формулу умножения косинусов — в результате будет две частоты, сумма и разность — нужная станция сдвинется в центр, что нам и нужно (а лишнее мы потом отфильтруем).

Создаем две переменные для хранения частоты freq_center=100000000 и freq_1=100100000, также добавляем генератор сигналов с частотой freq_center — freq_1.

Т.к. система построена на базе Python, то в полях ввода параметров мы можем использовать выражения, что достаточно удобно.

Схема в итоге должна выглядеть так:

Теперь необходимо добавить сразу несколько блоков — уменьшить тактовую частоту входного сигнала (она равна 2048КГц), отфильтровать сигнал, подать его на FM-декодер, затем еще раз уменьшить тактовую частоту до 48КГц.

Результат показан на картинке:

Считаем внимательно. Мы делим тактовую частоту 2048КГц в 4 раза блоком Rational Resampler (получаем 512КГц), затем после Low Pass фильтра стоит WBFM-декодер с децимацией 10 (получаем 51.2КГц). В принципе, этот сигнал уже можно подать на звуковую карту, но высота тона будет чуть отличаться. Еще раз меняем тактовую частоту в 48/51, в результате будет тактовая частота 48.2КГц, разницей уже можно пренебречь.

Второй важный момент — тип входов. С приемника поступает комплексный IQ-сигнал (входы-выходы синего цвета), с FM-декодера выходит вещественный сигнал — входы и выходы желтого цвета. Если перепутать, ничего не заработает. Подробнее уже было на Хабре, нам достаточно понять общий принцип.

В общем, запускаем, убеждаемся что все работает. Можно запустить программу и слушать радио. Мы пойдем дальше — у нас же все-таки Software Defined радио — добавим одновременный прием второй станции.

Многоканальный прием

Второй приемник добавляется любимым программистским методом — Ctrl+C/Ctrl+V. Добавляем переменную freq_2, копируем блоки и соединяем их точно также.

Результат вполне сюрреалистичный — две FM-станции можно слушать одновременно. Тем же самым методом (Ctrl+V) можно добавить и третью станцию.

Запись

Слушать две станции оригинально, но на практике мало полезно. Сделаем что-то более нужное, например добавим запись звука в отдельные файлы. Это может быть достаточно удобно — с одного физического приемника можно параллельно записывать несколько каналов.

Добавим к каждому выходу компонент File Sink, как показано на скриншоте.

Windows-версия почему-то требует абсолютные пути файлов, иначе запись не работает. Запускаем, убеждаемся что все нормально. Размер сохраняемых файлов довольно большой, т.к. по умолчанию записывается формат float. Запись в формате int оставлю читателям в качестве домашнего задания.

Получившиеся файлы можно открыть в Cool Edit и убедиться, что звук записался нормально.

Разумеется, число записываемых каналов можно увеличить, оно ограничено только полосой пропускания приемника и мощностью компьютера. Кроме File Sink можно использовать и UDP Sink, так что программу можно использовать для трансляции по сети.

Запуск из командной строки

И последнее. Если использовать программу автономно, например для многоканальной записи, то UI в принципе и не нужен. В верхнем левом блоке Options меняем параметр Run Options на No UI. Запускаем программу еще раз, убеждаемся что все работает. Теперь сохраняем сгенерированный файл top_block.py — мы можем просто запускать его из командной строки, например из bat-файла или из консоли.

Если кому интересно, сгенерированный файл сохранен под спойлером.

recorder.py

#!/usr/bin/env python2
# -*- coding: utf-8 -*-
##################################################
# GNU Radio Python Flow Graph
# Title: Top Block
# Generated: Fri May 24 21:47:03 2019
##################################################

from gnuradio import analog
from gnuradio import audio
from gnuradio import blocks
from gnuradio import eng_notation
from gnuradio import filter
from gnuradio import gr
from gnuradio.eng_option import eng_option
from gnuradio.filter import firdes
from optparse import OptionParser
import osmosdr
import time


class top_block(gr.top_block):

    def __init__(self):
        gr.top_block.__init__(self, "Top Block")

        ##################################################
        # Variables
        ##################################################
        self.samp_rate = samp_rate = 2048000
        self.freq_center = freq_center = 100000000
        self.freq_2 = freq_2 = 100700000
        self.freq_1 = freq_1 = 100100000

        ##################################################
        # Blocks
        ##################################################
        self.rtlsdr_source_0 = osmosdr.source( args="numchan=" + str(1) + " " + '' )
        self.rtlsdr_source_0.set_sample_rate(samp_rate)
        self.rtlsdr_source_0.set_center_freq(freq_center, 0)
        self.rtlsdr_source_0.set_freq_corr(0, 0)
        self.rtlsdr_source_0.set_dc_offset_mode(0, 0)
        self.rtlsdr_source_0.set_iq_balance_mode(0, 0)
        self.rtlsdr_source_0.set_gain_mode(False, 0)
        self.rtlsdr_source_0.set_gain(10, 0)
        self.rtlsdr_source_0.set_if_gain(20, 0)
        self.rtlsdr_source_0.set_bb_gain(20, 0)
        self.rtlsdr_source_0.set_antenna('', 0)
        self.rtlsdr_source_0.set_bandwidth(0, 0)

        self.rational_resampler_xxx_1_0 = filter.rational_resampler_fff(
                interpolation=48,
                decimation=51,
                taps=None,
                fractional_bw=None,
        )
        self.rational_resampler_xxx_1 = filter.rational_resampler_fff(
                interpolation=48,
                decimation=51,
                taps=None,
                fractional_bw=None,
        )
        self.rational_resampler_xxx_0_0 = filter.rational_resampler_ccc(
                interpolation=1,
                decimation=4,
                taps=None,
                fractional_bw=None,
        )
        self.rational_resampler_xxx_0 = filter.rational_resampler_ccc(
                interpolation=1,
                decimation=4,
                taps=None,
                fractional_bw=None,
        )
        self.low_pass_filter_0_0 = filter.fir_filter_ccf(1, firdes.low_pass(
        	1, samp_rate/4, 100000, 500000, firdes.WIN_HAMMING, 6.76))
        self.low_pass_filter_0 = filter.fir_filter_ccf(1, firdes.low_pass(
        	1, samp_rate/4, 100000, 500000, firdes.WIN_HAMMING, 6.76))
        self.blocks_multiply_xx_0_0 = blocks.multiply_vcc(1)
        self.blocks_multiply_xx_0 = blocks.multiply_vcc(1)
        self.blocks_file_sink_0_0 = blocks.file_sink(gr.sizeof_float*1, 'D:\Temp\audio2.snd', False)
        self.blocks_file_sink_0_0.set_unbuffered(False)
        self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_float*1, 'D:\Temp\audio1.snd', False)
        self.blocks_file_sink_0.set_unbuffered(False)
        self.audio_sink_0 = audio.sink(48000, '', True)
        self.analog_wfm_rcv_0_0 = analog.wfm_rcv(
        	quad_rate=samp_rate/4,
        	audio_decimation=10,
        )
        self.analog_wfm_rcv_0 = analog.wfm_rcv(
        	quad_rate=samp_rate/4,
        	audio_decimation=10,
        )
        self.analog_sig_source_x_0_0 = analog.sig_source_c(samp_rate, analog.GR_COS_WAVE, freq_center - freq_2, 1, 0)
        self.analog_sig_source_x_0 = analog.sig_source_c(samp_rate, analog.GR_COS_WAVE, freq_center - freq_1, 1, 0)

        ##################################################
        # Connections
        ##################################################
        self.connect((self.analog_sig_source_x_0, 0), (self.blocks_multiply_xx_0, 1))
        self.connect((self.analog_sig_source_x_0_0, 0), (self.blocks_multiply_xx_0_0, 1))
        self.connect((self.analog_wfm_rcv_0, 0), (self.rational_resampler_xxx_1, 0))
        self.connect((self.analog_wfm_rcv_0_0, 0), (self.rational_resampler_xxx_1_0, 0))
        self.connect((self.blocks_multiply_xx_0, 0), (self.rational_resampler_xxx_0, 0))
        self.connect((self.blocks_multiply_xx_0_0, 0), (self.rational_resampler_xxx_0_0, 0))
        self.connect((self.low_pass_filter_0, 0), (self.analog_wfm_rcv_0, 0))
        self.connect((self.low_pass_filter_0_0, 0), (self.analog_wfm_rcv_0_0, 0))
        self.connect((self.rational_resampler_xxx_0, 0), (self.low_pass_filter_0, 0))
        self.connect((self.rational_resampler_xxx_0_0, 0), (self.low_pass_filter_0_0, 0))
        self.connect((self.rational_resampler_xxx_1, 0), (self.audio_sink_0, 0))
        self.connect((self.rational_resampler_xxx_1, 0), (self.blocks_file_sink_0, 0))
        self.connect((self.rational_resampler_xxx_1_0, 0), (self.audio_sink_0, 1))
        self.connect((self.rational_resampler_xxx_1_0, 0), (self.blocks_file_sink_0_0, 0))
        self.connect((self.rtlsdr_source_0, 0), (self.blocks_multiply_xx_0, 0))
        self.connect((self.rtlsdr_source_0, 0), (self.blocks_multiply_xx_0_0, 0))

    def get_samp_rate(self):
        return self.samp_rate

    def set_samp_rate(self, samp_rate):
        self.samp_rate = samp_rate
        self.rtlsdr_source_0.set_sample_rate(self.samp_rate)
        self.low_pass_filter_0_0.set_taps(firdes.low_pass(1, self.samp_rate/4, 100000, 500000, firdes.WIN_HAMMING, 6.76))
        self.low_pass_filter_0.set_taps(firdes.low_pass(1, self.samp_rate/4, 100000, 500000, firdes.WIN_HAMMING, 6.76))
        self.analog_sig_source_x_0_0.set_sampling_freq(self.samp_rate)
        self.analog_sig_source_x_0.set_sampling_freq(self.samp_rate)

    def get_freq_center(self):
        return self.freq_center

    def set_freq_center(self, freq_center):
        self.freq_center = freq_center
        self.rtlsdr_source_0.set_center_freq(self.freq_center, 0)
        self.analog_sig_source_x_0_0.set_frequency(self.freq_center - self.freq_2)
        self.analog_sig_source_x_0.set_frequency(self.freq_center - self.freq_1)

    def get_freq_2(self):
        return self.freq_2

    def set_freq_2(self, freq_2):
        self.freq_2 = freq_2
        self.analog_sig_source_x_0_0.set_frequency(self.freq_center - self.freq_2)

    def get_freq_1(self):
        return self.freq_1

    def set_freq_1(self, freq_1):
        self.freq_1 = freq_1
        self.analog_sig_source_x_0.set_frequency(self.freq_center - self.freq_1)


def main(top_block_cls=top_block, options=None):

    tb = top_block_cls()
    tb.start()
    try:
        raw_input('Press Enter to quit: ')
    except EOFError:
        pass
    tb.stop()
    tb.wait()


if __name__ == '__main__':
    main()

Удобно и то, что система является кросс-платформенной, и получившаяся программа может работать на Linux, Windows и OSX.

Заключение

Можно сказать, что GNU Radio достаточно сложная система, не в плане рисования блоков конечно, а в плане понимания того, как все это работает. Но какие-то несложные вещи сделать вполне посильно и интересно. GNU Radio также удобно использовать как «виртуальную лабораторию» для обучения — к любой части схемы можно подключить виртуальный осциллограф или спектроанализатор и посмотреть, как выглядит сигнал.

Если не будет каких-то отдельных пожеланий, тему SDR-приема наверно можно закрыть — все основные моменты уже рассмотрены, да и количество просмотров от первой к третьей части падает почти по экспоненте (хотя еще можно написать про передачу, но оно требует более дорогого «железа» для тестов чем RTL SDR). Надеюсь все же, что некоторое понимание того как это работает, у читателей осталось. Ну и всем удачных экспериментов.

May 10, 2016

Recently an updated set of binaries and build scripts were posted for GNU Radio for Windows. GNU Radio is a graphical digital signal processing language that is compatible with many software defined radios such as the RTL-SDR. Normally it is used on Linux as the Windows builds have been known to be very buggy and difficult  to install. However the latest update appears to make it easier to install. The changes were announced on the GNU Radio mailing list by Geof Nieboer, and he writes:

An updated set of windows binaries and build scripts have been posted. Quick summary:

1- Added gqrx to package
2- Patched 2 x issues which would cause the generic version to crash on non-AVX systems (one in volk, one in FFTW)
3- Added gr-newmod to package

Plus a number of improvements to make the scripts more robust.

Binaries at http://www.gcndevelopment.com/gnuradio/downloads.htm
Scripts at https://github.com/gnieboer/GNURadio_Windows_Build_Scripts

To run GNU Radio for Windows you will need a 64-bit version of Windows 7/8/10. It appears that the installation is as easy as running the installer and waiting for it to download and install the 1.7 GB worth of files.

Also, over on his blog author designing on a juicy cup posted about how he’d been able to get the GNU Radio Windows binaries to run a ATSC HDTV decoder from a file recorded using an SDRplay RSP (ATSC is too wideband for an RTL-SDR to decode). ATSC is the digital TV standard used in North America, some parts of Central America and South Korea. He writes that one advantage to using GNU Radio on Windows is the ability to use a RAM drive for faster file processing.

GNU Radio ATSC Decoder Running on Windows.

GNU Radio ATSC Decoder Running on Windows.

Всем здравствуйте.

Решил поюзать HackRf в GNU Radio в Windows 10 . Прием ФМ-радиостанций без проблем.

Решил попробовать на передачу поработать. Взял первый пример по этой ссылке — https://itnan.ru/post.php?c=2&p=275168 . Правда не стал ставить блок Multiply Const . В итоге при старте мне GNU Radio выдает такое сообщение:

Код: Выделить всё

Generating: 'C:\Users\rashid\Desktop\top_block.py'

Executing: C:Python27python.exe -u C:UsersrashidDesktoptop_block.py

gr-osmosdr 0.1.5 (0.1.5) gnuradio 3.7.13.5
built-in sink types: uhd hackrf bladerf soapy redpitaya file 
Traceback (most recent call last):
  File "C:UsersrashidDesktoptop_block.py", line 84, in <module>
    main()
  File "C:UsersrashidDesktoptop_block.py", line 78, in main
    tb = top_block_cls()
  File "C:UsersrashidDesktoptop_block.py", line 47, in __init__
    self.osmosdr_sink_0 = osmosdr.sink( args="numchan=" + str(1) + " " + 'hackrf=0' )
  File "C:Program FilesPothosSDRlibpython2.7site-packagesosmosdrosmosdr_swig.py", line 1153, in make
    return _osmosdr_swig.sink_make(*args, **kwargs)
RuntimeError: Failed to open HackRF device (-5) HackRF not found

Пробовал писать в блоке osmocom Sink и

и

. Ничего не помогает.

Как быть?

  • Glhub dll скачать для windows
  • Gnu grub как запустить windows
  • Gnu gcc compiler для codeblocks скачать для windows
  • Glfw error 65543 minecraft windows 7
  • Gnu compiler collection скачать для windows