| | 1 | = OFDM radio example with GNURADIO benchmark scripts = |
| | 2 | |
| | 3 | == Description == |
| | 4 | This example is similar to the simple radio example using GNU Radio; however, this utilizes an OFDM transmitter and receiver. In this tutorial we'll also use another node as a spectrum analyzer to verify OFDM transmission. |
| | 5 | |
| | 6 | == Hardware / Software Resources utilized == |
| | 7 | 1. Grid nodes with a USRP connect via Ethernet. |
| | 8 | 2. ''baseline-12-04-gnu.ndz'': disk image loaded onto nodes. This image has all the precompiled - software required to configure the USRP N210s and all the required GNU Radio software libraries. The USRP N210's interface with the node is already configured. |
| | 9 | 3. GNU Radio - software library to create SDR. Click here for [http://gnuradio.org/redmine/projects/gnuradio/wiki/WhatIsGR additional info]. |
| | 10 | 4. USRP N210 - hardware platform for SDR. Click here for [http://gnuradio.org/redmine/projects/gnuradio/wiki/Hardware#Ettus-Research-USRP-Devices more info]. |
| | 11 | |
| | 12 | == Set up == |
| | 13 | * To get started first make a reservation on the [https://www.orbit-lab.org/schedule/ Orbit Scheduler] for using the Grid. |
| | 14 | |
| | 15 | * After logging into grid console, make sure all nodes are turned off |
| | 16 | {{{ |
| | 17 | nilanjan@console.grid:~$ omf tell -a offh -t system:topo:all |
| | 18 | }}} |
| | 19 | |
| | 20 | * Verify state of node before continuing. Make sure all nodes are in the POWEROFF state. |
| | 21 | {{{ |
| | 22 | nilanjan@console.grid:~$ omf stat |
| | 23 | }}} |
| | 24 | |
| | 25 | * Image the node to use as a spectrum analyzer - check [https://www.orbit-lab.org/status/orbit/ inventory status] to find a node with a USRP N210. In this example we'll use the node 19-19. Load the image ''baseline-12-04-gnu.ndz'' and then turn the node on. |
| | 26 | {{{ |
| | 27 | nilanjan@console.grid:~$ omf load -i baseline-12-04-gnu.ndz -t node19-19 |
| | 28 | : |
| | 29 | : |
| | 30 | : |
| | 31 | nilanjan@console.grid:~$ omf tell -a on -t node19-19 |
| | 32 | }}} |
| | 33 | |
| | 34 | * Once this node is on, ssh into the node, run the ''ascii-art'' spectrum analyzer and leave this running. |
| | 35 | {{{ |
| | 36 | nilanjan@console.grid:~$ ssh root@node19-19 |
| | 37 | root@node19-19:~# cd uhd/host/build/examples/ |
| | 38 | root@node19-19:~/uhd/host/build/examples# ./rx_ascii_art_dft --freq 2400e6 --rate 8e6 --gain 15 --ref-lvl -40 --dyn-rng 70 |
| | 39 | }}} |
| | 40 | |
| | 41 | * Find 2 other nodes with N210s for the OFDM radio and image with ''baseline-12-04-gnu.ndz''. In this example we'll use node19-20 and node20-19. |
| | 42 | {{{ |
| | 43 | nilanjan@console.grid:~$ omf load -i baseline-12-04-gnu.ndz -t node19-20,node20-19 |
| | 44 | : |
| | 45 | : |
| | 46 | : |
| | 47 | nilanjan@console.grid:~$ omf tell -a on -t system:topo:imaged |
| | 48 | }}} |
| | 49 | |
| | 50 | == Running OEDL script == |
| | 51 | * Run the experiment script using the following OMF command and aurguments |
| | 52 | {{{ |
| | 53 | nilanjan@console.grid:~$ omf exec system:exp:ofdm-benchmark -- --bandwidth 1M --modulation qpsk --freq 2401M |
| | 54 | |
| | 55 | INFO NodeHandler: OMF Experiment Controller 5.4 (git 3fb37b9) |
| | 56 | INFO NodeHandler: Reading configuration file /etc/omf-expctl-5.4/services.yaml |
| | 57 | INFO NodeHandler: Add domain http - http://internal1.orbit-lab.org:5054/ |
| | 58 | INFO NodeHandler: Add domain http - http://repository1.orbit-lab.org:5054/ |
| | 59 | INFO NodeHandler: Slice ID: default_slice (default) |
| | 60 | INFO NodeHandler: Experiment ID: default_slice-2014-08-07t09.52.51.485-04.00 |
| | 61 | INFO NodeHandler: Message authentication is disabled |
| | 62 | INFO Experiment: load system:exp:stdlib |
| | 63 | INFO property.resetDelay: resetDelay = 230 (Fixnum) |
| | 64 | INFO property.resetTries: resetTries = 1 (Fixnum) |
| | 65 | INFO Experiment: load system:exp:eventlib |
| | 66 | INFO Experiment: load system:exp:winlib |
| | 67 | INFO Experiment: load system:exp:ofdm-benchmark |
| | 68 | INFO property.bandwidth: bandwidth = "1M" (String) |
| | 69 | INFO property.modulation: modulation = "qpsk" (String) |
| | 70 | INFO property.freq: freq = "2401M" (String) |
| | 71 | INFO property.rxgain: rxgain = "25" (String) |
| | 72 | INFO property.txgain: txgain = "25" (String) |
| | 73 | INFO property.txamplitude: txamplitude = "0.7" (String) |
| | 74 | INFO property.runtime: runtime = 10 (Fixnum) |
| | 75 | INFO Topology: Loaded topology '/tmp/pxe_slice-2014-08-07t09.06.49.229-04.00-topo-success'. |
| | 76 | INFO Topology: Loaded topology 'system:topo:imaged'. |
| | 77 | TX: node19-20.grid.orbit-lab.org |
| | 78 | RX: node20-19.grid.orbit-lab.org |
| | 79 | INFO ALL_UP_AND_INSTALLED: Event triggered. Starting the associated tasks. |
| | 80 | INFO exp: Request from Experiment Script: Wait for 2s.... |
| | 81 | INFO exp: Start receiver app |
| | 82 | INFO exp: Request from Experiment Script: Wait for 2s.... |
| | 83 | INFO exp: Start sending packets |
| | 84 | INFO exp: Request from Experiment Script: Wait for 10s.... |
| | 85 | INFO exp: Stop transmitter and receiver |
| | 86 | INFO exp: Request from Experiment Script: Wait for 2s.... |
| | 87 | INFO exp: done |
| | 88 | INFO EXPERIMENT_DONE: Event triggered. Starting the associated tasks. |
| | 89 | INFO NodeHandler: |
| | 90 | INFO NodeHandler: Shutting down experiment, please wait... |
| | 91 | INFO NodeHandler: |
| | 92 | INFO run: Experiment default_slice-2014-08-07t09.52.51.485-04.00 finished after 0:25 |
| | 93 | |
| | 94 | nilanjan@console.grid:~$ |
| | 95 | }}} |
| | 96 | |
| | 97 | * While the above script runs monitor the spectrum analyzer for activity around the specified operating frequency. The spectrum should look similar to the following: |
| | 98 | {{{ |
| | 99 | -40 |
| | 100 | |
| | 101 | |
| | 102 | . |
| | 103 | | . |
| | 104 | !!|!| |
| | 105 | -60 ||||||| |
| | 106 | ||||||| |
| | 107 | ||||||| |
| | 108 | |||||||! |
| | 109 | |||||||| |
| | 110 | |||||||| |
| | 111 | |||||||| |
| | 112 | -80 |||||||| |
| | 113 | . |||||||| |
| | 114 | | ||||||||| |
| | 115 | ! | ||||||||| |
| | 116 | . |: . !| ||||||||| |
| | 117 | . | |||. : . | || : ||||||||| : :. :. |
| | 118 | -100 :: | : |. |!||||.| :|:| | |||!| |:| ||||||||| | || :: || |
| | 119 | || ..|!|| | .|| ||||||||!||||||: |||||| ::|||||||||||||!|:||. ||: !|||..::: : |
| | 120 | : |. || |||||||||.|||||||||||||||||||| ||||||||||||||||||||||||||||| |||!|||||||||| : :.. . ! .|| |
| | 121 | ! |::|| :::!. | :!.!||!|||! ||||||||||||||||||||||||||||||:|||||||||||||||||||||||||||||!||||||||||||||||..:|||::|.|||||!! . |
| | 122 | dBfs 2397MHz 2398MHz 2399MHz 2400MHz 2401MHz 2402MHz 2403MHz |
| | 123 | }}} |