A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy,...

55
1 A Hands-On Introduction to SDR with USRP and GNU Radio (Part 1) Cyberspectrum Meetup Santa Clara, California Wednesday, February 3, 2016 Accompanying video can be found at: https://youtu.be/eEMYA-nzATM?t=1h27m47s

Transcript of A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy,...

Page 1: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

1

A Hands-On Introduction to SDRwith USRP and GNU Radio

(Part 1)

Cyberspectrum MeetupSanta Clara, California

Wednesday, February 3, 2016

Accompanying video can be found at:https://youtu.be/eEMYA-nzATM?t=1h27m47s

Page 2: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

- Special thanks to my colleague Nate Temple

- Etch-a-SDR Embedded SDR Devicehttps://github.com/devnulling/etch-a-sdr

- Presented at the Cyberspectrum Meetup on September 30, 2015

Special Thanks

2

Page 3: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

- A radio in which some or all of the physical-layer functions are implemented in software running on a microprocessor (or an FPGA)

- Software running on a CPU, or FPGA, running algorithms from DSP and communications theory

What is SDR

3

Page 4: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

- Most radios use the classic superheterodyne receiver architecture

- The RF signal from the antenna is mixed with a local oscillator to produce an intermediate frequency (IF) signal

- The IF signal is a fixed lower-frequency signal which is then filtered and demodulated

SDR Architecture

4

Page 5: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

- SDR uses a direct-conversion receiver (DCR) architecture

- Also called Zero-IF receiver, and homodyne receiver

- Eliminates the intermediate frequency (IF) by translating the band of interest directly to baseband

- The frequency of the LO is set to the same frequency as the transmitted/desired RF signal

SDR Architecture

5

Page 6: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

- Traditional radios are hard-wired to specific frequency bands and communication protocols

- Fixed-function, Black Box

- Can’t be easily modified, can’t easily access internal values and states

- SDR provides:

- Flexibility

- Upgradability

- Reconfigurability

- Lower cost

Why SDR

6

Page 7: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

- Joe Mitola first coined term in 1991

- Voice-band Softmodems / WinModems in 1990s and 2000s

- Cellular handsets (e.g., baseband processors such as Qualcomm Snapdragon)

- Cellular basestations (e.g., OpenBTS, Osmocom, srsLTE, OpenLTE, Eurecom OAI, Amarisoft LTE)

- GPS Receivers and Simulators (e.g., GNSS-SDR, Skydel Solutions, Navigation Laboratories)

- Adaptive and Cognitive Radio

- Radio Astronomy

- Satellite Communications

- Wireless Security Research and Spectrum Monitoring

- Wireless Prototyping and Testing

Applications of SDR

7

Page 8: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

- Processing can be either real-time or off-line (post-processing)

- C++ and UHD API

- GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source)

- LabVIEW (National Instruments)

- Matlab (MathWorks)

- HDSDR, SDR#, SDR-Console, WinRAD (using ExtIO)

Software Toolchains

8

Page 9: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

- Git is a distributed source code management system

- GitHub is a web-based hosting service for Git repositories

- Command-line and GUI clients

- sudo apt-get install git

- git clone <repository_name>

- git tag -l

- git checkout <tag|commit>

Git and GitHub

9

Page 10: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

- About the company

- Founded in 2004 by Matt Ettus

- Acquired by National Instruments in 2010

- Located in Santa Clara, California

- USRP Motherboards

- B-series (B200, B210, B200mini): USB host interface

- N-series (N200, N210): 1 Gb Ethernet host interface

- X-series (X300, X310): 1 and 10 Gb Ethernet host interface

- E-series (E310): embedded SDR with ARM CPU

USRP

10

Page 11: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

- USRP Daughterboards (for N-series and X-series only)

- BasicTX and BasicRX: no tuner, 1 MHz to 250 MHz

- LFTX and LFRX: no tuner, 0 Hz to 30 MHz

- WBX: 50 MHz to 2200 MHz, 40 or 120 MHz capture bandwidth, 1 Tx and 1 Rx

- SBX: 400 MHz to 4400 MHz, 40 or 120 MHz capture bandwidth, 1 Tx and 1 Rx

- CBX: 1200 MHz to 6000 MHz, 40 or 120 MHz capture bandwidth, 1 Tx and 1 Rx

- UBX: 10 MHz to 6000 MHz, 40 or 160 MHz capture bandwidth, 1 Tx and 1 Rx

- TwinRX: 10 MHz to 6000 MHz, 80 MHz capture bandwidth, Dual Rx Only

USRP

11

Page 12: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

USRP Architecture

12

Page 13: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

USRP Architecture

13

Page 14: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

USRP Model Comparison

14

Page 15: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

USRP B210

15

Page 16: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

USRP B200mini

16

Page 17: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

USRP N200 / N210

17

Page 18: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

USRP X300 / X310

18

Page 19: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

USRP SBX (left) and UBX (right)

19

Page 20: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

- Single, common interface to all USRP devices

- Host-side software driver running in user-space

- Open-source and hosted on GitHub

- Cross-platform (Windows, OS X, Linux)

- Three components: host-side software, FPGA, firmware

- https://github.com/EttusResearch

USRP Hardware Driver (UHD)

20

Page 21: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

USRP Hardware Driver (UHD)

21

Page 22: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

1. sudo apt-get install libboost-all-dev libusb-1.0-0-dev python-mako doxygen

python-docutils cmake build-essential libncurses5 libncurses5-dev

2. git clone git://github.com/EttusResearch/uhd.git

3. cd uhd

4. git checkout release_003_009_002

5. cd host

6. mkdir build && cd build

7. cmake ../

8. make -j4

9. make test

10. sudo make install

11. sudo ldconfig

Installing UHD From Source Code

22

Page 23: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

- Ubuntu Launchpad PPA- Only for Ubuntu (not Fedora, RHEL, etc.)- Only for UHD version 3.9.2 or newer- https://launchpad.net/~ettusresearch/+archive/ubuntu/uhd- RPM packages for RHEL/CentOS and Fedora available on Ettus website

sudo apt-add-repository ppa:ettusresearch/uhd

sudo apt-get update

sudo apt-get install uhd-host libuhd003 libuhd-dev

Installing UHD From Binary Package

23

Page 24: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

UHD Utilities - uhd_find_devices

24

Page 25: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

UHD Utilities - uhd_usrp_probe

25

Page 26: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

UHD Utilities - uhd_images_downloader.py

26

sudo /usr/local/lib/uhd/utils/uhd_images_downloader.py

Page 27: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

- Default location is /usr/local/lib/uhd/utils

- usrp_x3xx_fpga_burner

- Flashes an image onto the X300/X310 FPGA

- usrp_burn_mb_eeprom

- Reading and writing motherboard EEPROM

- usrp_burn_db_eeprom

- Reading and writing daughterboard EEPROM

UHD Utilities - Other

27

Page 28: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

UHD Example Utilities

28

- rx_ascii_art_dft- Creates ASCII/Ncurses FFT - ./rx_ascii_art_dft --freq 98e6 --rate 5e6 --gain 20 --bw 5e6 --ref-lvl -50

- rx_samples_to_file- Saves samples to a file - ./rx_samples_to_file --freq 98e6 --rate 5e6 --gain 20 usrp_samples.dat

- tx_samples_from_file- Transmits samples from a file- ./tx_samples_from_file --freq 915e6 --rate 5e6 --gain 10 usrp_samples.dat

- benchmark_rate- Benchmarks interface with device- ./benchmark_rate --rx_rate 10e6 --tx_rate 10e6

- tx_waveforms- Transmits various types of waveforms- ./tx_waveforms --freq 915e6 --rate 5e6 --gain 0

- Default location is /usr/local/lib/uhd/examples

Page 29: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

Verifying USRP using UHD

29

./rx_ascii_art_dft --args “addr=192.168.10.2” --freq 98e6 --rate 5e6 --gain 20 --bw 5e6 --ref-lvl -50

Page 30: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

Verifying USRP using UHD

30

To benchmark your interface: ./benchmark_rate --rx_rate 10e6 --tx_rate 10e6

Page 31: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

Verifying USRP using UHD

31

./rx_samples_to_file --args=”addr=192.168.10.2” --freq 98e6 --gain 20 --rate 5e6 usrp_samples.dat

Page 32: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

Verifying USRP using UHD

32

./tx_samples_from_file --args=”addr=192.168.10.2” --freq 915e6 --rate 5e6 --gain 0 usrp_samples.dat

Page 33: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

Using UHD API from C++

33

#include <uhd/utils/thread_priority.hpp>#include <uhd/utils/safe_main.hpp>#include <uhd/usrp/multi_usrp.hpp>#include <uhd/exception.hpp>#include <uhd/types/tune_request.hpp>#include <boost/program_options.hpp>#include <boost/format.hpp>#include <boost/thread.hpp>#include <iostream>

int UHD_SAFE_MAIN(int argc, char *argv[]) {

...

return EXIT_SUCCESS;}

Page 34: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

Using UHD API from C++

34

int UHD_SAFE_MAIN(int argc, char *argv[]) { uhd::set_thread_priority_safe();

std::string device_args("addr=192.168.10.2"); std::string subdev("A:0"); std::string ant("TX/RX"); std::string ref("internal");

double rate(1e6); double freq(915e6); double gain(10);

//create a usrp device std::cout << std::endl; std::cout << boost::format("Creating the usrp device with: %s...") % device_args << std::endl; uhd::usrp::multi_usrp::sptr usrp = uhd::usrp::multi_usrp::make(device_args);

// Lock mboard clocks std::cout << boost::format("Lock mboard clocks: %f") % ref << std::endl; usrp->set_clock_source(ref);

Page 35: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

Using UHD API from C++

35

//always select the subdevice first, the channel mapping affects the other settings std::cout << boost::format("subdev set to: %f") % subdev << std::endl; usrp->set_rx_subdev_spec(subdev); std::cout << boost::format("Using Device: %s") % usrp->get_pp_string() << std::endl;

//set the sample rate if (rate <= 0.0) { std::cerr << "Please specify a valid sample rate" << std::endl; return ~0; }

// set sample rate std::cout << boost::format("Setting RX Rate: %f Msps...") % (rate / 1e6) << std::endl; usrp->set_rx_rate(rate); std::cout << boost::format("Actual RX Rate: %f Msps...") % (usrp->get_rx_rate() / 1e6) << std::endl << std::endl;

// set freq std::cout << boost::format("Setting RX Freq: %f MHz...") % (freq / 1e6) << std::endl; uhd::tune_request_t tune_request(freq); usrp->set_rx_freq(tune_request); std::cout << boost::format("Actual RX Freq: %f MHz...") % (usrp->get_rx_freq() / 1e6) << std::endl << std::endl;

Page 36: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

Using UHD API from C++

36

// set the rf gain std::cout << boost::format("Setting RX Gain: %f dB...") % gain << std::endl; usrp->set_rx_gain(gain); std::cout << boost::format("Actual RX Gain: %f dB...") % usrp->get_rx_gain() << std::endl << std::endl;

// set the antenna std::cout << boost::format("Setting RX Antenna: %s") % ant << std::endl; usrp->set_rx_antenna(ant); std::cout << boost::format("Actual RX Antenna: %s") % usrp->get_rx_antenna() << std::endl << std::endl;

return EXIT_SUCCESS;}

To build, use the file uhd/host/examples/CMakeLists.txt as a template, put into empty folder, add the name of source file to the list defined by SET(example_sources , and build with CMake

Page 37: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

- sudo apt-get install wireshark- Run as root. At the prompt type: sudo wireshark- Select proper network interface from list (usually eth0) and click Start icon- uhd_find_devices uses broadcast packets to find all USRP devices on network- Be careful, host firewall (iptables) or switch/router may block broadcast packets- X300 / X310 emit gratuitous ARP packets showing IP address every 6 seconds

Debugging USRP with Wireshark

37

Page 38: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

- Open-source framework for SDR and signal processing

- Founded by Eric Blossom in 2001

- Project leader Tom Rondeau

- Block-based dataflow architecture

- Each block runs in its own thread

- Similar to Simulink

- Hosted on Github at https://github.com/gnuradio

- Homepage is http://gnuradio.org/

GNU Radio

38

Page 39: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

1. sudo apt-get install libfontconfig1-dev libxrender-dev libpulse-dev swig g++ automake autoconf libtool python-dev libfftw3-dev libcppunit-dev libboost-all-dev libusb-dev libusb-1.0-0-dev fort77 libsdl1.2-dev python-wxgtk2.8 git-core libqt4-dev python-numpy ccache python-opengl libgsl0-dev python-cheetah python-mako python-lxml doxygen qt4-default qt4-dev-tools libusb-1.0-0-dev libqwt5-qt4-dev libqwtplot3d-qt4-dev pyqt4-dev-tools python-qwt5-qt4 cmake git-core wget libxi-dev python-docutils gtk2-engines-pixbuf r-base-dev python-tk liborc-0.4-0 liborc-0.4-dev libasound2-dev python-gtk2 libzmq1 libzmq-dev python-requests

2. git clone --recursive https://github.com/gnuradio/gnuradio.git3. cd gnuradio4. git checkout v3.7.95. mkdir build && cd build6. cmake ../7. make -j48. sudo make install9. sudo ldconfig

GNU Radio Installation - Source Code

39

Page 40: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

- PyBOMBS- Python Build Overlay Managed Bundle System

- Package management tool for GNU Radio, similar to RPM and pip

- New version 2 just released

- http://www.pybombs.info/

- The build-gnuradio script

- From Marcus Leech at SBRAC

- wget http://www.sbrac.org/files/build-gnuradio && chmod a+x ./build-gnuradio && .

/build-gnuradio

- Launchpad PPA

- Old version, do not use

- GR 3.7.2.1 current package on Ubuntu 14.04

- GR 3.7.8 current package on Ubuntu 15.10

GNU Radio Installation - Alternatives

40

Page 41: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

Verifying USRP using GNU Radio

41

uhd_fft --args “addr=192.168.10.2” --freq 100e6 -s 10e6 -g 20

Page 42: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

Verifying USRP using GNU Radio

42

uhd_siggen --args “addr=192.168.10.2” --freq 915e6 -g 0

Page 43: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

Verifying USRP using GNU Radio

43

uhd_siggen_gui --args “addr=192.168.10.2” --freq 3025e6 -g 0

Page 44: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

1. Open a terminal window using: Start > Search: Terminal

At the terminal prompt type: gnuradio-companion

Using gnuradio-companion (1)

44

Page 45: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

Explain the color-coded meaning of data types for ports on blocks

Using gnuradio-companion (2)

45

Help -> Types

Hot keys:

- Up/Down arrows change data type- E/D keys enable/disable blocks

Page 46: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

Using gnuradio-companion (3)

46

Page 47: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

Using gnuradio-companion (4)

47

Page 48: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

Basic GRC Flowgraph (1)

48

Page 49: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

Basic GRC Flowgraph (1)

49

Page 50: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

Basic GRC Flowgraph (2)

50

Page 51: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

Basic GRC Flowgraph (3)

51

Page 52: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

Using GNU Radio from Python

52

Generate Python from GRC Flow graph

>>> from gnuradio import gr>>> ...

Invoke directly from the Linux command line:$ python example_3.py

Page 53: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

Using GNU Radio from Python

53

Page 54: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

- GNU Radio Wiki- https://gnuradio.org/redmine/projects/gnuradio/wiki

- Local files at /usr/local/share/doc/gnuradio-3.7.9

- USRP and UHD Manual- http://files.ettus.com/manual/

- Local files at /usr/local/share/doc/uhd/doxygen/html

- Suggested Reading- http://gnuradio.org/redmine/projects/gnuradio/wiki/SuggestedReading

- IRC Freenode #gnuradio on irc.freenode.net

Additional Resources

54

Page 55: A Hands-On Introduction to SDR with USRP and GNU Radio · - GNU Radio and Python, NumPy, SciPy, Matplotlib (open-source) ... GNU Radio Installation - Source Code 39 - PyBOMBS - Python

- [email protected]

- discuss-gnuradio mailing list- https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

- usrp-users mailing list- http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

- IRC Freenode #usrp on irc.freenode.net

Getting Technical Support

55