| 31 |  |  * After nodes are imaged, verify that nodes are in POWEROFF state. Otherwise issue the following to turn them off for a reboot | 
          
            | 32 |  | {{{ | 
          
            | 33 |  | nilanjan@console.grid:~$ omf tell -a offh -t system:topo:all | 
          
            | 34 |  | }}} | 
          
            | 35 |  |  | 
          
            | 36 |  |  * Turn nodes back on and verify they are in POWERON state | 
          
            | 37 |  | {{{ | 
          
            | 38 |  | nilanjan@console.grid:~$ omf tell -a on -t node20-20,node19-19,node8-8 | 
          
            | 39 |  | }}} | 
          
            | 40 |  |  | 
          
            | 41 |  | In this example node8-8 and node19-19 is used as the transmitting nodes and the node20-20 as the receiver | 
          
            | 42 |  |  | 
          
            | 43 |  | === Generate signal source file using octave === | 
          
            | 44 |  |  | 
          
            | 45 |  | On each transmiting node, create a signal file using octave. You can use the scripts provided here as an example. On node8-8 create a file ''s1.bin'' using the lines below | 
          
            | 46 |  | {{{ | 
          
            | 47 |  | root@node8-8:~# cd wiserd | 
          
            | 48 |  | root@node8-8:~/wiserd# octave | 
          
            | 49 |  | octave:1> signal = fGenFDSignal(256,50,10,'1half'); | 
          
            | 50 |  | octave:2> saveToWiserdFile(signal,'s1.bin'); | 
          
            | 51 |  | octave:3> exit | 
          
            | 52 |  | }}} | 
          
            | 53 |  |  | 
          
            | 54 |  | The signal will look something like the following in the frequency domain - notice the first half of the spectrum is populated: | 
          
            | 55 |  |   || [[Image(s1.png, width=500px)]] || | 
          
            | 56 |  |  | 
          
            | 57 |  | Create a similar signal on node19-19 but with the 2nd half of the spectrum populated | 
          
            | 58 |  | {{{ | 
          
            | 59 |  | octave:1> signal = fGenFDSignal(256,50,10,'2half'); | 
          
            | 60 |  | octave:2> saveToWiserdFile(signal,'s2.bin'); | 
          
            | 61 |  | }}} | 
          
            | 62 |  |   || [[Image(s2.png, width=500px)]] || | 
          
            | 63 |  |  | 
          
            | 64 |  |  | 
          
            | 65 |  | === Set up transmitting node === | 
          
            | 66 |  |  | 
          
            | 67 |  |  | 
          
            | 68 |  |  * ssh into each node and start the wiserd interface: | 
          
            | 69 |  | {{{ | 
          
            | 70 |  | root@node8-8> wiserd | 
          
            | 71 |  | linux; GNU C++ version 4.8.2; Boost_105400; UHD_003.008.002-86-g566dbc2b | 
          
            | 72 |  |  | 
          
            | 73 |  | -- Opening a USRP2/N-Series device... | 
          
            | 74 |  | -- Current recv frame size: 1472 bytes | 
          
            | 75 |  | -- Current send frame size: 1472 bytes | 
          
            | 76 |  | -- Detecting internal GPSDO.... No GPSDO found | 
          
            | 77 |  | -- Successfully tuned to 900.000000 MHz | 
          
            | 78 |  | -- | 
          
            | 79 |  | -- Successfully tuned to 900.000000 MHz | 
          
            | 80 |  | -- | 
          
            | 81 |  | Ready! | 
          
            | 82 |  | > | 
          
            | 83 |  | }}} | 
          
            | 84 |  |  | 
          
            | 85 |  |  * At the wiserd prompt set the carrier frequency, sampling rate & gain. Then link the transmitter to the signal source which is the binary file generated in octave from prior step: | 
          
            | 86 |  | {{{ | 
          
            | 87 |  | > --uhd_tx_freq 700e6 --uhd_tx_rate 5e6 --uhd_tx_gain 20 --tran_wavefilename s1.bin | 
          
            | 88 |  | -- Successfully tuned to 700.000000 MHz | 
          
            | 89 |  | uhd_tx_freq 700000000 | 
          
            | 90 |  | uhd_tx_gain 20 | 
          
            | 91 |  | uhd_tx_rate 5000000 | 
          
            | 92 |  | > --addmodule signalfromfile | 
          
            | 93 |  | Consumer signalfromfile added | 
          
            | 94 |  | LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL | 
          
            | 95 |  | > | 
          
            | 96 |  | }}} | 
          
            | 97 |  |  | 
          
            | 98 |  | In order to set parameter values, multiple arguments can be used in one line: | 
          
            | 99 |  |  | 
          
            | 100 |  |  ''--uhd_tx_freq'' set carrier frequenct to 700MHz | 
          
            | 101 |  |  | 
          
            | 102 |  |  ''--uhd_tx_rate'' set sampling rate to 5M samples/sec | 
          
            | 103 |  |  | 
          
            | 104 |  |  ''--uhd_tx_gain'' set transmit gain to 20dB. | 
          
            | 105 |  |  | 
          
            | 106 |  |  ''--tran_wavefilename''  tells the links the transmitter source to a binary filename. | 
          
            | 107 |  |  | 
          
            | 108 |  | ''--addmodule signalfromfile'' opens the above filename, reads the samples and streams to the usrp. | 
          
            | 109 |  |  | 
          
            | 110 |  | At this point the USRP will continuously transmit the signal util the delete command is issued: | 
          
            | 111 |  |  | 
          
            | 112 |  |  ''--delmodule signalfromfile'' stops tranmitting signal. | 
          
            | 113 |  |  | 
          
            | 114 |  |  | 
          
            | 115 |  | Now set up the transmitter on node19-19 using similar commands. | 
          
            | 116 |  |  | 
          
            | 117 |  |  | 
          
            | 118 |  |  | 
          
            | 119 |  | === Set up receiving node(s) === | 
          
            | 120 |  | On the receiving node (node20-20), run wiserd to capture a snapshot of the signal from both transmitters. | 
          
            | 121 |  | {{{ | 
          
            | 122 |  | root@node20-20> wiserd | 
          
            | 123 |  | linux; GNU C++ version 4.8.2; Boost_105400; UHD_003.008.002-86-g566dbc2b | 
          
            | 124 |  |  | 
          
            | 125 |  | -- Opening a USRP2/N-Series device... | 
          
            | 126 |  | -- Current recv frame size: 1472 bytes | 
          
            | 127 |  | -- Current send frame size: 1472 bytes | 
          
            | 128 |  | -- Detecting internal GPSDO.... No GPSDO found | 
          
            | 129 |  | -- Successfully tuned to 900.000000 MHz | 
          
            | 130 |  | -- | 
          
            | 131 |  | -- Successfully tuned to 900.000000 MHz | 
          
            | 132 |  | -- | 
          
            | 133 |  | Ready! | 
          
            | 134 |  | > --uhd_rx_freq 700e6 --uhd_rx_rate 5e6 --uhd_rx_gain 20 --recv_running_time 1000 --recv_output_filename rx_signal | 
          
            | 135 |  | -- Successfully tuned to 700.000000 MHz | 
          
            | 136 |  | -- | 
          
            | 137 |  | recv_output_filename rx_signal | 
          
            | 138 |  | recv_running_time 1000 | 
          
            | 139 |  | uhd_rx_freq 700000000 | 
          
            | 140 |  | uhd_rx_gain 20 | 
          
            | 141 |  | uhd_rx_rate 5000000 | 
          
            | 142 |  | > --addmodule timesamplestofile --timed | 
          
            | 143 |  | Consumer timesamplestofile added | 
          
            | 144 |  | Consumer timesamplestofile finished | 
          
            | 145 |  |  | 
          
            | 146 |  | > exit | 
          
            | 147 |  | }}} | 
          
            | 148 |  |  | 
          
            | 149 |  |  | 
          
            | 150 |  | Here the set command has an additional argument to limit capturing to 1000 milliseconds: | 
          
            | 151 |  |  | 
          
            | 152 |  |  ''--recv_output_filename'' set receiving signal filename. | 
          
            | 153 |  |  | 
          
            | 154 |  |  ''--recv_running_time''    set receiver run time in milliseconds. (optional) | 
          
            | 155 |  |  | 
          
            | 156 |  | The --addmodule command options | 
          
            | 157 |  |  | 
          
            | 158 |  |  ''--addmodule timesamplestofile'' streams data from receiver to file | 
          
            | 159 |  |  | 
          
            | 160 |  |  ''--timed''             runs receiver for the specified amount of time. (optional) | 
          
            | 161 |  |  | 
          
            | 162 |  | Received signal file name will automatically be appended with the frequency, rate and gain: | 
          
            | 163 |  | {{{ | 
          
            | 164 |  | root@node20-20> ls -ltr *.bin | 
          
            | 165 |  | -rw-r--r-- 1 root root 40003072 May 21 10:56 rx_signal_freq700000000_rate5000000_gain20.bin | 
          
            | 166 |  | }}} | 
          
            | 167 |  |  | 
          
            | 168 |  | Use octave to view the spectrum image: | 
          
            | 169 |  | {{{ | 
          
            | 170 |  | octave:1> fReconFDSignal(readWiserdFile('rx_signal_freq700000000_rate5000000_gain20.bin', 256*500), 256); | 
          
            | 171 |  | }}} | 
          
            | 172 |  |  | 
          
            | 173 |  | Received signal should look simiar to | 
          
            | 174 |  |   || [[Image(signal.png, width=500px)]] || |