GNU Radio 4 on Red Wire Technologies Oxygen SDR Development Kit

Posted by Toby Flynn on 9th Nov 2026

The Red Wire Technologies Oxygen SDR now has native GNU Radio 4 support. gr4-rwt is an open-source module that brings the Oxygen's source and sink blocks to GNU Radio 4's modern C++23 block API. It keeps the features that make the Oxygen more than a generic AD9361 board: FPGA timestamps, PPS, overflow reporting and timed transmit bursts.

If you already use our GNU Radio 3 blocks (gr-rwt), you'll feel at home. Setting names and defaults match the gr-rwt blocks you know from GNU Radio Companion.

Streaming 43 MS/s on the radio, driven from your PC

Like gr-rwt, the blocks run on the Oxygen itself. You don't have to work at the radio's console, though. With the GNU Radio 4 control plane on the Oxygen, you build and run graphs from gnuradio4-studio in a browser on your PC, connected to the radio over USB.

In our receive test, a single-channel source at 43 MS/s fed a live power-spectrum display. A rate probe in the same graph showed about 43 MS/s sustained, all processed on the radio's own processor. The tuning frequency is a live control in gnuradio4-studio, so you can retune without stopping the graph. The sink block has been tested with signal sources for initial testing

gnuradio4-studio showing a live power spectrum from the Oxygen SDR at 754 MHz

The receive graph running on the Oxygen, viewed in gnuradio4-studio over USB: 754 MHz, 45 MS/s.

What's included

  • Four blocks: single- and dual-channel sources and sinks (RWTSource, RWTDualSource, RWTSink, RWTDualSink), one for each gr-rwt block.
  • Two sample types: complex float, scaled exactly as gr-rwt scales it, or raw 16-bit interleaved I/Q.
  • Hardware timing as standard GNU Radio 4 tags: FPGA time, PPS and overflow events arrive as GR4 trigger and overflow tags on the right samples. On transmit, the standard start-of-burst, end-of-burst and timed-transmit tags become the FPGA's in-band markers.
  • Live retuning that never crashes the graph: RF and FPGA settings can change while the graph runs. A setting the radio can't accept is refused and reported, and the graph keeps going.
  • Whole-RF-path tuning: frequency changes go through the Oxygen's management API, which configures the complete RF path rather than just the AD9361.
  • Low rates without extra blocks: the FPGA's decimator takes receive rates down to 6 samples per second.

A web dashboard for the radio

The Oxygen also serves the RWT Hardware Manager, a web app you open in any browser at the radio's address. Its home page shows the FPGA personality in use, with a button to reload it, and the board IDs of the Oxygen carrier and its system-on-module.

RWT Hardware Manager home page showing FPGA Control and Board ID panels

The RWT Hardware Manager, served by the Oxygen over its USB link.

Built with the Yocto Project and OpenEmbedded

The Oxygen's software image is built with the Yocto Project and OpenEmbedded, and gr4-rwt is packaged the same way. Our meta-gr4-rwt layer puts GNU Radio 4, the RWT blocks and the GNU Radio 4 control plane on the radio. The test suites can be installed on the radio too.

That work builds on Philip Balister's meta-sdr, the OpenEmbedded layer for SDR software for more than a decade. Its GNU Radio 4 recipes are the foundation our layer builds on. Thank you, Philip.

Tested without hardware, too

Seven automated test suites run against libiio's AD9361 emulator, so the exact bytes on the wire are checked without a radio attached. All of them pass under AddressSanitizer and ThreadSanitizer.

Get started

gr4-rwt needs GNU Radio 4, GCC 14+ or Clang 20+, libiio 1.0 or newer and cpp-httplib. Build and install it into your GNU Radio 4 prefix:

cmake -B build -G Ninja -DCMAKE_PREFIX_PATH=<gnuradio4 prefix>
cmake --build build
ctest --test-dir build
cmake --install build --prefix <gnuradio4 prefix>

GNU Radio 4's tools pick up the blocks automatically. The repository includes an RX-to-TX repeater example, a full settings reference and build notes.

Where it stands

gr4-rwt 0.5.0 is streaming on real Oxygen hardware today. A few of the finer timing features, such as timestamps with the decimator active and burst-marker placement, are still being verified on the radio. If you try it on your Oxygen, we'd love to hear how it goes.

gr4-rwt is free to use under the Apache 2.0 license with Red Wire Technologies hardware, and under GPL-3.0-or-later for any other use.

Get gr4-rwt on GitHub