| 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 | }}} |