| 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)]] || |