Transmit and receive an OFDM signal through Pi-Radio FR3 front-ends, up-converting a 1.5 GHz IF to 10 GHz and back, using USRP-2974 nodes and GNU Radio flowgraphs.
This tutorial demonstrates an end-to-end OFDM link in the FR3 band (upper mid-band). An OFDM waveform is generated at 1.5 GHz IF by a USRP-2974 (Krypton — embedded X310) running a GNU Radio transmitter flowgraph. A Pi-Radio FR3 front-end up-converts the 1.5 GHz IF signal to approximately 10 GHz for over-the-air transmission. On the receive side, a second Pi-Radio front-end down-converts the 10 GHz signal back to 1.5 GHz IF, and a second USRP-2974 running a GNU Radio receiver flowgraph demodulates the baseband signal.
The Pi-Radio web UI (port 5006 on each rfdev-* node) is used to configure both the low-side LO (1.5 GHz) and high-side LO (10 GHz) on both front-ends. All OFDM modulation and demodulation is performed in GNU Radio.
After completing this tutorial you will be able to:
| Difficulty | Intermediate |
| Estimated time | TODO: verify |
| Domain / sandbox | sb1.cosmos-lab.org (Sandbox 1) |
| Topic group | FR3 / Pi-Radio |
| Last verified | Not re-tested (migrated 2026-06-20) |
Background knowledge
fr3-tutorials.ndz disk image.Account & access
rfdev-sdr1-piradio and rfdev-sdr2-piradio at port 5006.Devices / nodes
| Resource | Role | Qty | Notes |
|---|---|---|---|
| sdr1-piradio | OFDM transmitter host | 1 | USRP-2974 (embedded X310); runs GNU Radio TX flowgraph |
| sdr2-piradio | OFDM receiver host | 1 | USRP-2974 (embedded X310); runs GNU Radio RX flowgraph |
| rfdev-sdr1-piradio | Pi-Radio FR3 TX front-end | 1 | Up-converts 1.5 GHz IF → ~10 GHz RF; web UI on port 5006 |
| rfdev-sdr2-piradio | Pi-Radio FR3 RX front-end | 1 | Down-converts ~10 GHz RF → 1.5 GHz IF; web UI on port 5006 |
Disk images
| Image | Load onto | Provides |
|---|---|---|
| fr3-tutorials.ndz | sdr1-piradio, sdr2-piradio | GNU Radio, OFDM-Tutorial flowgraphs, UHD for X310 |
Software components
| Component | Version | Source |
|---|---|---|
| GNU Radio Companion | TODO: verify | preinstalled in fr3-tutorials.ndz |
| UHD (USRP Hardware Driver) | TODO: verify | preinstalled in fr3-tutorials.ndz |
| OFDM-Tutorial flowgraphs (tx_ofdm.grc, rx_ofdm.grc) | TODO: verify | /root/OFDM-Tutorial/ on the image |
| Pi-Radio web UI | TODO: verify | running on rfdev-* nodes at port 5006 |
Spectrum / RF / special
Two USRP-2974 nodes (sdr1-piradio TX, sdr2-piradio RX) are each connected to a dedicated Pi-Radio FR3 front-end (rfdev-sdr1-piradio, rfdev-sdr2-piradio). The USRP-2974 produces and consumes a 1.5 GHz IF signal; the Pi-Radio front-end up-converts (TX path) or down-converts (RX path) between the 1.5 GHz IF and ~10 GHz RF using a low-side LO at 1.5 GHz and a high-side LO at 10 GHz. Vivaldi antennas are used for over-the-air transmission and reception. Both USRP-2974 nodes are accessed via SSH from the console; the Pi-Radio web UIs are accessed via browser from the console or a jump host.
Reserve Sandbox 1 resources and log into the console:
ssh <username>@console.sb1.cosmos-lab.org
Make sure the nodes are off before imaging:
omf tell -a offh -t system:topo:allres
Load the FR3 tutorial image onto both USRP-2974 nodes:
omf load -i fr3-tutorials.ndz -t sdr1-piradio,sdr2-piradio
Turn the nodes on and confirm they are up:
omf tell -a on -t sdr1-piradio,sdr2-piradio
omf stat -t sdr1-piradio,sdr2-piradio
Verify browser access to the Pi-Radio web UI on both rfdev nodes at port 5006 (e.g., http://rfdev-sdr1-piradio:5006 and http://rfdev-sdr2-piradio:5006).
Open the Pi-Radio web UI Frequency panel on both rfdev-sdr1-piradio (TX) and rfdev-sdr2-piradio (RX) and set the following LO values on each:
1.50000010.000000This pairs a 1.5 GHz IF with a 10 GHz high-side LO (and a 1.5 GHz low-side LO) to place the RF tone at approximately 10 GHz on transmit, and down-convert it back to 1.5 GHz on receive. (Exact placement depends on mixer sign/paths; the screenshots below show the working settings used in this demo.)
Leave Filters, Gain (except where noted), and LO Suppression at defaults for the first run.
Open a new terminal on sdr1-piradio and execute:
sudo -s
cd /root/OFDM-Tutorial/
gnuradio-companion tx_ofdm.grc
This opens GNU Radio Companion with the OFDM transmitter block diagram. Make sure to configure it to use the internal X310 (RIO device).


Run the transmitter flowgraph.


Open a new terminal on sdr2-piradio and execute:
sudo -s
cd /root/OFDM-Tutorial/
gnuradio-companion rx_ofdm.grc
This opens GNU Radio Companion with the OFDM receiver block diagram. Make sure to configure it to use the internal X310 (RIO device).


Run the receiver flowgraph.


sdr1-piradio and the USRP-2974 begins streaming at 1.5 GHz IF.sdr2-piradio shows a received constellation or spectrum consistent with the transmitted OFDM signal.omf tell -a offh -t sdr1-piradio,sdr2-piradio
No omf save needed unless you modified the image.
| Symptom | Likely cause | Fix |
|---|---|---|
| GNU Radio cannot find the X310 (RIO device) | RIO device not configured in flowgraph | In GNU Radio Companion, open the flowgraph properties and set the USRP source/sink device to the internal X310 RIO address |
| Pi-Radio web UI not reachable on port 5006 | rfdev node not up or network issue | Confirm the rfdev node is powered and reachable via ping from the console; check that port 5006 is open |
| No signal received on sdr2-piradio | LO frequencies mismatched or TX not running | Verify both front-ends have identical LO settings (Low 1.5 GHz, High 10.000 GHz); confirm the TX flowgraph is actively streaming |
| Transmitter flowgraph errors on startup | Wrong device string for X310 | Confirm the RIO device address in the flowgraph matches the hardware; see USRP-2974 hardware page |
Author(s): COSMOS team · Last verified: Not re-tested (migrated 2026-06-20) · Tested image/release: fr3-tutorials.ndz · Tags: fr3, ofdm, gnuradio, piradio, usrp-2974, x310, mid-band