= Darpa Hurdle3 with OMF-5.4 = == Description == Use OEDL script to execute hurdle3 transmit and receive benchmark scripts from the grid. In this tutorial we'll use the USRPs on the grid for FFT-based spectrum sensing. Each USRP (centered on a frequency with specified bandwidth) will collect data into an OML server for post processing. For details on available USRP2s on the grid, please see [http://www.orbit-lab.org/wiki/Documentation/USRP2_hw_map available USRP2 HW]. == Hardware / Software Resources utilized == 1. Two grid nodes with USRPs. 2. ''baseline-gnu-12-04-32bit.ndz'': disk image loaded onto nodes. This image has all the precompiled - software required to configure the USRPs and analyze recorded data. The USRP2's interface with the node is already configured. 3. Orbit's Arbitrary Waveform Injection System: used to inject noise or simple signal into RF environment. [http://www.orbit-lab.org/wiki/Software/bAM/mInterf#InterferenceAggregateManager More information of this generator can be found here.] 4. Packet server: This is server that resides on the grid console and used by a transmitting node to send data packets over the air via USRP. 5. dc.rb: this is the ODEL experiment script to run the transmit and receive scripts. == Set up == * To get started first make a reservation on the [https://www.orbit-lab.org/schedule/ Orbit Scheduler] for using the Grid. * After logging into grid console, make sure all nodes are turned off {{{ nilanjan@console.grid:~$ omf tell -a offh -t system:topo:n210 }}} * Verify state of node before continuing. Make sure all nodes are in the POWEROFF state. {{{ nilanjan@console.grid:~$ omf stat }}} * Image nodes {{{ nilanjan@console.grid:~$ omf load -i baseline-gnu-12-04-32bit.ndz -t system:topo:n210 -r 20 }}} * After nodes are imaged, verify that nodes are in POWEROFF state. Otherwise issue the following to turn them off for a reboot {{{ nilanjan@console.grid:~$ omf tell -a offh -t system:topo:n210 }}} * Turn nodes back on and verify they are in POWERON state {{{ nilanjan@console.grid:~$ omf tell -a on -t system:topo:n210 }}} * Download the [http://www.orbit-lab.org/raw-attachment/wiki/DSC/dc_trial1/dc.rb OEDL experiment script] to your local directory. {{{ nilanjan@console.grid:~/UHD$ wget http://www.orbit-lab.org/raw-attachment/wiki/DSC/dc_trial1/dc.rb }}} == Run the experiment script == * Type to following command to run the experiment. This will start the packet server, configure and start the interference generator and finally kick off the transmit and receive benchmark scripts within the nodes. {{{ nilanjan@console.grid:~/UHD$ omf exec dc.rb }}} * The output should look similar to the following: {{{ nilanjan@console.grid:~/UHD$ omf-5.4 exec dc.rb INFO NodeHandler: OMF Experiment Controller 5.4 (git 578791f) INFO NodeHandler: Slice ID: default_slice (default) INFO NodeHandler: Experiment ID: default_slice-2013-05-03t09.28.31.114-04.00 INFO NodeHandler: Message authentication is disabled INFO Experiment: load system:exp:stdlib INFO property.resetDelay: resetDelay = 230 (Fixnum) INFO property.resetTries: resetTries = 1 (Fixnum) INFO Experiment: load system:exp:eventlib INFO Experiment: load system:exp:winlib INFO Experiment: load dc.rb INFO property.rxnode: rxnode = "node1-2.grid.orbit-lab.org" (String) INFO property.txnode: txnode = "node20-20.grid.orbit-lab.org" (String) INFO property.freq: freq = "1900000000" (String) INFO property.runtime: runtime = "300" (String) INFO ALL_UP_AND_INSTALLED: Event triggered. Starting the associated tasks. INFO exp: Give machines some time to warm up INFO exp: Request from Experiment Script: Wait for 1s.... INFO [0xb703c740] (main.cpp:558) - Starting the server at INFO [0xb582cb40] (main.cpp:514) - Starting UDP receiver server at 5103 INFO [0xb682eb40] (main.cpp:466) - Starting UDP sender server at 5101 INFO [0xb602db40] (main.cpp:481) - Starting TCP receiver server at 5102 INFO [0xb702fb40] (main.cpp:431) - Starting TCP sender server at 5100 INFO exp: Request from Experiment Script: Wait for 1s.... OK INFO exp: Request from Experiment Script: Wait for 1s.... OK INFO exp: Request from Experiment Script: Wait for 1s.... OK INFO exp: Start benchmark_rx,tx INFO exp: Request from Experiment Script: Wait for 300s.... INFO exp: Stop eveything OK INFO exp: Request from Experiment Script: Wait for 5s.... INFO exp: Finish it. INFO EXPERIMENT_DONE: Event triggered. Starting the associated tasks. INFO NodeHandler: INFO NodeHandler: Shutting down experiment, please wait... INFO NodeHandler: INFO run: Experiment default_slice-2013-05-03t09.28.31.114-04.00 finished after 5:16 }}}