1 of 15

Outline of Today’s Class

  1. In-person week announcement (May 19-23)
  2. (30 min) Shout overview & demo (Kirk)
  3. (50 min) Digital Comms Fundamentals (Neal)
  4. (30 min) IH3: QPSK receiver design in Python (in groups of 3-4)
  5. If time allows: Demo running Shout to tx/rx QPSK (Neal)

2 of 15

Shout Overview & Demo

CyberPowder Fellows Program

Spring 2025

3 of 15

Software defined radios … defined

  • Vendor- and model-specific interfaces, features, and limitations
  • POWDER mainly has NI/Ettus X310 and B210 SDRs
    • Same libUHD-based software interface
  • X310 attributes
    • One or two channels (“0” and “1”), each with two RF ports (“TX/RX” and “RX2”)
    • Maximum TX power: ~20 dBm
    • Gain settings for both TX and RX: 0 to 30 dB with 0.1 dB steps
    • Maximum sampling bandwidth: 160 MHz
    • Network-connected
  • B210 attributes
    • Two channels (“A” and “B”), each with two RF ports (“TX/RX” and “RX2”)
    • Maximum TX power: ~12 dBm
    • Gain settings for RX: 0 to 75 with 0.1 dB steps; for TX: 0 to 89.8 with 0.1 dB steps
    • Maximum sampling bandwidth: 56 MHz
    • USB-connected
  • There are other per-model RF performance attributes to consider
    • Noise floor, IIP3, frequency-dependent behavior, etc.
  • Digital interface
    • Complex samples in and out.
    • Some radios only support time domain duplexing (TDD: TX or RX, not both at once)

4 of 15

Software defined radios … deployed

  • Multiple physical locations scattered across the UofU campus
    • Rooftop, side-of-building, on shuttles, side-of-road poles
  • Compute nodes may be co-located
    • B210 radios
  • … or across a fiber run to the data center
    • X310 radios
  • Location, particularly considering proximity to third party transmitters, plays an important role!
  • Clock sources
    • Internal oscillator
    • External source (PPS and 10 MHz clock) via POWDER White Rabbit network
  • There are also indoor (lab) deployments

5 of 15

Challenge: Taking RF measurements on real radios

  • How do you use real radios to send and receive signals?
  • What can you do with these radios?
    • Can you send or receive any type of signal?
  • What if you need to do this with multiple radios?
    • How do you coordinate between them?

6 of 15

A solution: The Shout radio framework (software)

  • Distributed radio coordination/measurement needs some kind of framework
    • Not all SDRs are directly connected to a network
    • Bandwidth to a single processing node could quickly become a bottleneck
    • Distributed handling of sample streams helps spread out the load
    • Failures can be isolated and separately managed
  • Software Defined Radios have peculiarities that must be handled
    • Initialization, tuning, buffer flushing, management of exceptions
      • Late, under/overflow, etc. conditions
    • The Shout framework hides much of this complexity
      • Users still must understand the operation, limitations, and non-ideal characteristics of SDR hardware

7 of 15

Description of Shout framework

  • Components
    • Measurement client (compute+radio)
    • Measurement controller (User Interface)
    • Orchestrator
    • Analysis script
  • Theory of operation
    • Controller requests radio operations on clients
      • Uses Remote Procedure Calls (RPC)
      • Can be different operations for different clients
      • Manages timeline
    • Orchestrator
      • Sends messages/calls to clients
      • Feeds results back to the controller
    • Measurement Clients
      • Perform requested radio operations and return results
    • Controller aggregates results
      • Performs additional processing (as needed)
      • Stores these in an HDF5 data repository
        • Good for storing large amounts of data
    • Analysis script processes/plots results
      • Variety of analysis options
        • Power spectral density
        • Plot of RSSI across sender/receiver pairs
          • With statistics for multiple runs
        • Plot of RSSI vs. distance

8 of 15

Using Shout

  • Actions are controlled via JSON command files
  • Timeline is managed by the measurement interface (controller)
    • Shout assumes compute node clocks are well-synchronized!
  • There are a variety of commands available:
    • Transmit sine wave (single tone) at specific carrier frequency
    • Receive samples at specific carrier frequency and bandwidth
    • Step through sequence of carrier frequencies (TX and/or RX)
    • Sequential or simultaneous execution of operations (mix and match)
    • Variety of radio parameters
      • Center frequency
      • Bandwidth
      • Gain (range is dependent on radio model)
      • Command-specific: E.g., TX sinusoid frequency and amplitude
    • Utility commands: “Pause” and “Wait for command completion”

9 of 15

Example JSON command file

[

{

"cmd": "measure_paths",

"get_samples": true,

"nsamps": 1024,

"freq": 3385e6,

"txgain": 30,

"rxgain": 30,

"rate": 1e6,

"wampl": 0.8,

"freq_step": 5e4,

"time_step": 3,

"timeout": 60,

"client_list": ["all"]

}

]

10 of 15

Shout Live Demo

11 of 15

Outline of Today’s Class

  • In-person week announcement (May 19-23)
  • (30 min) Shout overview & demo
  • (50 min) Digital Comms Fundamentals
  • (30 min) IH3: QPSK receiver design in Python
  • If time allows: Demo running Shout to tx/rx QPSK

12 of 15

Resources for Digital & Wireless Communications

  1. I maintain a 100+ page pdf of my complete digital communications lecture notes on canvas: Files: reading material: Digital Communications Theory Systems S24 Patwari.pdf
  2. A page with short videos summarizing the topics in my lectures: https://patwarilab.com/ese471.html

We will walk through a subset of the fundamentals of digital comms you need to be able to operate POWDER at the PHY layer

13 of 15

Outline of Digital Comms Fundamentals Lecture

Notes PDF

  1. (5 min) Decibel notation for power and gain
  2. (10 min) Orthogonality
  3. (5 min) Pulse shapes
  4. (10 min) Quadrature amplitude modulation (QAM)
  5. (5 min) Optimal detection
  6. (15 min) OTA Receiver Implementation in Python + Shout

14 of 15

Outline of Today’s Class

  • In-person week announcement (May 19-23)
  • (30 min) Shout overview & demo
  • (50 min) Digital Comms Fundamentals
  • (30 min) IH3: QPSK receiver design in Python
  • If time allows: Demo running Shout to tx/rx QPSK

15 of 15

The rest of the class period, and the homework

IH3: Hands-on Receiver Design

  1. I created a IQ transmitted packet on python
  2. I used instructions at https://github.com/npatwari/tx_rx_processing/ to run Shout to transmit and receive that packet synchronously
  3. You will use python to operate a receiver and demodulate the data

HH2 is to create code for a 16-QAM receiver to demodulate a signal I created and used Shout to transmit, an “upgrade” of the QPSK receiver you work on now.