# FIT/CorteXlab 102
We will now use the ''[[http://xp.cortexlab.fr/fft/|fft_web]]'' tool that allow use to have a spectrum analyzer and to follow spectrum evolution during a CorteXlab experiment from anywhere in the world.
Of course, use [[g5k-fit-school| prerequisite]] tutorial to connect to CorteXlab, log into the "airlock" SSH front-end with the following command:
cxlbusr@debian-jessie-cortexlab:~$ ssh -X -v tuto@airlock
And don't forget to replace '''' with the number of the group assigned to you
We recall that division of resources will be according to the table below
^ Group ^ SSH login ^ Nodes to use ^ Frequency ^ TCP Port ^
| 1 | tuto1 | node 3 and node 4 | 2.490GHz | 6663 |
| 2 | tuto2 | node 7 and node 8 | 2.491GHz | 6664 |
| 3 | tuto3 | node 13 and node 14 | 2.492GHz | 6665 |
| 4 | tuto4 | node 17 and node 18 | 2.493GHz | 6666 |
| 5 | tuto5 | node 23 and node 24 | 2.494GHz | 6667 |
| 6 | tuto6 | node 25 and node 27 | 2.495GHz | 6668 |
| 7 | tuto7 | node 28 and node 32 | 2.496GHz | 6669 |
| 8 | tuto8 | node 33 and node 34 | 2.497GHz | 6670 |
| 9 | tuto9 | node 37 and node 38 | 2.498GHz | 6671 |
# Executing the test_fft_web task
fft_web is a bloc provided by CorteXlab that permits to visualise a spectrum during an experiment.
Go into the test\_fft\_web directory and take a look:
tuto#@srvairlock:~$ cd examples/test_fft_web
tuto#@srvairlock:~/examples/test_fft_web$ ls
benchmark_tx.py scenario.yaml transmit_path.py usrp_fft.py
receive_path.py test_fft_web.py uhd_interface.py
Some of these files as ''benchmark\_tx.py'' are already known to you. Some other are new, the only one that we will use is ''usrp\_fft.py''. This script is used to configure the ''fft\_web'' GNU radio block with all the necessary parameter: on which frequency it should listen, on which UDP port it should send its spectrum etc.
The command line in the scenario.yaml file lists all these parameters, see below, and do not forget to change the number of the nodes corresponding to your tutorial. On can see below that the UDP port used here is 6663, please change it with the one associated with your tuto in the table above.
nodes:
node4:
command: benchmark_tx.py --antenna="TX/RX" --args="addr=192.168.10.2" --tx-amplitude=0.2 -v -W 2M -f 2.49G -M 100.0
node3:
command: usrp_fft.py -T 'TX/RX' -G '25' -W '4M' -F '2.49G' -P '6663' -I 'srvwww.cortexlab.fr' -A '-110' -B '-50' -R '4M' -S '1024' -H '10'
passive: true
## Lauching test_fft_web
First reserve the nodes of your tuto as it is indicated in [[cortexlab101|CorteXlab 101]] tutorial
The create and launch the task:
tuto#@srvairlock:~/examples/test_fft_web$ cd ..
tuto#@srvairlock:~/examples$ minus task create test_fft_web
Creating the task file...
Task file test_fft_web.task created successfully.
tuto#@srvairlock:~/examples$ minus task submit test_fft_web.task
The task is now running, come back is the virtual machine an launch a Firefox browser ''internet -> Firefox ESR''. Actually you can use any browser present on your machine.
go to the following URL: [[http://xp.cortexlab.fr/fft]], set the UDP port on which the transmission should occur and click on ''New graph'', you should your signal' spectrum, something like that:
{{:fftweb.png?800|}}
## Creating a flow graph on your PC
As it is not very convenient to work on CorteXlab server, we will explain here how to create flow graphs with GNUradio on your machine and export them to CorteXlab. We are going to create a new flowgraph called ''spectrum_analyzer.grc''.
### Cloning the example task
An example task is provided in the FIT/CorteXlab GitHub repositories. It is kept up-to-date and well prepared to run. First let us prepare to clone the example task.
Let us start by erasing any previous (and possibly outdated) version of the example task already present in your home dir:
cxlbusr@debian-jessie-cortexlab:~$ rm -rf examples
Now let us retrieve the examples repository on GitHub :
cxlbusr@debian-jessie-cortexlab:~$ git clone https://github.com/CorteXlab/examples.git
cxlbusr@debian-jessie-cortexlab:~$ cd examples
cxlbusr@debian-jessie-cortexlab:~/examples$ cd my_task
### Creating our flow graph
Launch, on your virtual machine, the ''gnuradio-companion'' tool
cxlbusr@debian-jessie-cortexlab:~/examples$ gnuradio-companion
* Click on the “create a new flow graph” button of gnuradio-companion
* Change the parameters of this new flowgraph (double click on the “Options” block):
* ID -> spectrum\_analyser
* Title -> Spectrum Analyser
* Author -> You
* Generate Options -> No GUI
* Run Options -> run to completion
* Change the sample rate fot this flowgraph (double click on the “samp\_rate” variable block):
* set value to 2e6 (2Mhz)
Now we are going to add two blocks to the flowgraph:
* USRP Source (under UHD )
* fft web (Under CorteXlab)
Connect the “out” connector of the UHD:USRP Source to the “in” connector of the fft web block.
Here are the parameter to change for the two new blocs that we have added:
* for USRP Source:
* Sample rate -> samp\_rate (variable)
* Center frequency -> your frequency! (for example: 2.49e9)
* Gain -> 20 dB
* Antenna -> TX/RX
* For fft web:
* fft size -> 256
* power max -> -50
* power min -> -100
* port -> your port! (for example: 6663)
* frame rate -> 5
* sample rate -> samp_rate (variable)
* ip address -> srvwww.cortexlab.fr
This is it!
Save your grc file to spectrum_analyzer.grc
Generate the flowgraph, a spectrum_analyzer.py should have appeared in the directory.
## Sending the task to airlock
Copy the whole new directory to CorteXlab's server:
cxlbusr@debian-jessie-cortexlab:~/my_fft_web$ cd ..
cxlbusr@debian-jessie-cortexlab:~/$ scp -P 22 -r my_fft_web/ tuto#@gw.cortexlab.fr:~
Log on the testbed and add the necessary files to your your new task:
you@srvairlock:~/my_fft_web$ cp ~/examples/test_fft_web/benchmark_tx.py ./
you@srvairlock:~/my_fft_web$ cp ~/examples/test_fft_web/uhd_interface.py ./
you@srvairlock:~/my_fft_web$ cp ~/examples/test_fft_web/transmit_path.py ./
you@srvairlock:~/my_fft_web$ cp ~/examples/test_fft_web/scenario.yaml ./
Edit the ''scenario.yaml'' file, do not forget to use your nodes.
you@srvairlock:~/examples/spectrum_analyzer$ pico scenario.yaml
#
duration: 300
#
nodes:
node4:
command: benchmark_tx.py --antenna="TX/RX" --args="addr=192.168.10.2" --tx-amplitude=0.2 -v -W 2M -f 2.49G -M 100.0
node3:
command: ./spectrum_analyzer.py
passive: true
Create your task, reserve your node, launch your task and check for spectrum with ''xp.cortexlab.fr/fftweb''