from_gnuradio_to_cortxlab_pico
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
from_gnuradio_to_cortxlab_pico [2016/07/29 17:20] – [tx_ofdm.grc] lbeseme | from_gnuradio_to_cortxlab_pico [2017/11/15 16:19] (current) – [Create the scenario] onicolas | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | # From GNU Radio to CorteXlab | + | # From A to Z: GNU Radio with CorteXlab |
- | This tutorial goes through the process of executing an experiment on CorteXlab starting from an empty project on your computer. (and is quite similar | + | This tutorial goes through the process of executing an experiment on CorteXlab starting from an empty project on your computer (and is quite similar |
- | For practical purposes, we will use some GnuRadio | + | For practical purposes, we will use some GNU Radio examples instead of starting from a clean sheet, but it's exactly the same as if you had your own project you wanted to run on CorteXlab. |
##Setup | ##Setup | ||
- | The purpose of this tutorial is to execute an OFDM transmission between two PicoSDR nodes. One node will be the transmitter and the other one will be the receiver. Instead of starting from an empty project, we are going to use 2 GNU Radio Companion examples. Copy the files '' | + | The purpose of this tutorial is to execute an OFDM transmission between two PicoSDR nodes. One node will be the transmitter and the other one will be the receiver. Instead of starting from an empty project, we are going to use a GNU Radio example. Copy the files '' |
As you can guess '' | As you can guess '' | ||
Line 27: | Line 27: | ||
### tx_ofdm.grc | ### tx_ofdm.grc | ||
- | Open '' | + | Open '' |
- | The first thing to do is to change the generate options in order to have a 'No GUI' project (the results will be stored in a file). Open the Options block (in the top left corner) and switch the Generate Options from '' | + | The first thing to do is to change the generate options in order to have a 'No GUI' project (the results will be stored in a file). Open the Options block (in the top left corner) and switch the Generate Options from '' |
- | Set the samp\_rate variable to 5000000 (5 MHz) using the corresponding variable block located | + | Set the samp\_rate variable to 5000000 (5 MHz) using the corresponding variable block located |
- | Then we need to add mandatory blocks | + | Then we need to add some mandatory blocks in order to use a PicoSDR : |
Line 105: | Line 105: | ||
- | The input of the last custom register must be connected with a Constant Source block set to 1. The constant source | + | The input of the last custom register must be connected with a Constant Source block set to 1. The constant source |
- | The next thing to do is to replace transmission and decoding parts to put instead | + | The next thing to do is to replace |
-> **Target ID** : nutaq\_carrier\_perseus\_0 | -> **Target ID** : nutaq\_carrier\_perseus\_0 | ||
-> **Block priority** : 3 | -> **Block priority** : 3 | ||
Line 131: | Line 131: | ||
### rx_ofdm.grc | ### rx_ofdm.grc | ||
- | Open '' | + | Open '' |
The first thing to do is to change the generate options in order to have a 'No GUI' project (the results will be stored in a file). Open the Options block (in the top left corner) and switch the Generate Options from '' | The first thing to do is to change the generate options in order to have a 'No GUI' project (the results will be stored in a file). Open the Options block (in the top left corner) and switch the Generate Options from '' | ||
- | Set the samp\_rate variable to 5000000 (5 MHz) using the corresponding variable block located | + | Set the samp\_rate variable to 5000000 (5 MHz) using the corresponding variable block located |
- | Then we need the same mandatory blocks | + | Then we need the same mandatory blocks |
- | + | ||
- | The next thing to do is to replace encoding and transmission parts to put instead | + | We need to modify the frequency on the Tx block so as not to interfere with the transmitting node: |
+ | |||
+ | * Radio420 RX (to set up RX radio front end) | ||
+ | -> **TX frequency** : 2590000000 | ||
+ | |||
+ | |||
+ | The next thing to do is to replace | ||
-> **Target ID** : nutaq\_carrier\_perseus\_0 | -> **Target ID** : nutaq\_carrier\_perseus\_0 | ||
-> **Block priority** : 3 | -> **Block priority** : 3 | ||
Line 163: | Line 169: | ||
## Create the scenario | ## Create the scenario | ||
- | The experiment description file called `scenario.desc` will be looked for and read by the experiment scheduler to get which nodes and what software will be used during the experiment. It also gives the necessary startup scripts and parameters that the user provides for his experiment. | + | The experiment description file called `scenario.yaml` will be looked for and read by the experiment scheduler to get which nodes and what software will be used during the experiment. It also gives the necessary startup scripts and parameters that the user provides for his experiment. |
- | Here is a simple example of a `scenario.desc` file: | + | Here is a simple example of a `scenario.yaml` file: |
< | < | ||
# Example scenario description file | # Example scenario description file | ||
# | # | ||
- | # All lines starting with "#" | + | # All lines starting with "#" |
# Scenario textual description | # Scenario textual description | ||
# | # | ||
- | desc OFDM tx-rx example scenario for CorteXlab | + | description: |
# Experiment maximum duration | # Experiment maximum duration | ||
# Time after which the experiment is forced to stop | # Time after which the experiment is forced to stop | ||
- | # | + | # |
- | durat 2 | + | duration: 120 |
# Node list | # Node list | ||
Line 185: | Line 191: | ||
# | # | ||
# | # | ||
- | # | + | # nodes: |
- | # entry (entry point script relative to the task root) | + | # (machine): |
- | # exit (exit point script relative to the task root. Use " | + | # command: |
- | + | ||
- | node29: | + | |
- | entry rx_ofdm.py | + | |
- | node31: | + | nodes: |
- | entry tx_ofdm.py | + | node29: |
+ | command: ./ | ||
+ | | ||
+ | | ||
</ | </ | ||
- | This file uses its own syntax and is self-documented. Here the params line is mandatory even if it is not used (This will be changed in a future version). Adapt this example to suit your needs. | + | This file uses the yaml syntax and is self-documented. Adapt this example to suit your needs. |
Line 207: | Line 213: | ||
│ ├── tx_ofdm.py | │ ├── tx_ofdm.py | ||
│ ├── rx_ofdm.py | │ ├── rx_ofdm.py | ||
- | │ ├── scenario.desc | + | │ ├── scenario.yaml |
│ ├── tx_ofdm.grc | │ ├── tx_ofdm.grc | ||
│ └── rx_ofdm.grc | │ └── rx_ofdm.grc | ||
Line 213: | Line 219: | ||
</ | </ | ||
- | The .grc will not be used by CorteXlab but you can let them in the same directory. | + | The .grc will not be used by CorteXlab but you can leave them in the same directory. |
### Upload the files on airlock | ### Upload the files on airlock | ||
- | Upload the tuto\_ofdm directory on Airlock | + | Upload the tuto\_ofdm directory on Airlock. For example, for Linux, it will look like this : |
< | < | ||
you@your-pc: | you@your-pc: | ||
Line 226: | Line 232: | ||
### Create the task | ### Create the task | ||
- | Connect to Airlock through ssh as it is describe [[access|here]]. For example for Linux it will look like this : | + | Connect to Airlock through ssh. For example, for Linux, it will look like this : |
< | < | ||
you@yourpc: | you@yourpc: | ||
</ | </ | ||
- | You can find in your home directory the tuto\_ofdm directory that we have uploaded | + | You will find in your home directory the tuto\_ofdm directory that we previously |
Now, use the Minus CLI to create the task file: | Now, use the Minus CLI to create the task file: | ||
Line 238: | Line 244: | ||
</ | </ | ||
- | The success (or failure) of the creation will be printed on screen. The task file will be created at the same level and name than the targeted experiment folder but with a `.task` suffix, in our case '' | + | The success (or failure) of the creation will be printed on screen. The task file will be created at the same level and with the same name as the targeted experiment folder but with a `.task` suffix, in our case '' |
**Note:** You can get help on the Minus CLI at anytime with `minus -h` | **Note:** You can get help on the Minus CLI at anytime with `minus -h` | ||
Line 245: | Line 251: | ||
### Book the testbed with OAR | ### Book the testbed with OAR | ||
- | As it is explain | + | As explained |
A basic example to submit an OAR interactive job requesting all available nodes, for 30 minutes: | A basic example to submit an OAR interactive job requesting all available nodes, for 30 minutes: | ||
Line 255: | Line 261: | ||
Now, we have booked the testbed and we have a `.task` file containing our experiment. In order to run it, we need to submit it to the testbed scheduler. | Now, we have booked the testbed and we have a `.task` file containing our experiment. In order to run it, we need to submit it to the testbed scheduler. | ||
- | For now, the scheduler is a simple FIFO queue, but a more advanced scheduling mechanism will be implemented in next versions of CorteXlab. | + | For now, the scheduler is a simple FIFO queue, but a more advanced scheduling mechanism will be implemented in upcoming |
To submit a task to the scheduler, use the Minus CLI: | To submit a task to the scheduler, use the Minus CLI: | ||
Line 270: | Line 276: | ||
< | < | ||
you@srvairlock: | you@srvairlock: | ||
- | Testbed status: | + | num total tasks: 2540 |
- | ID count so far: 6 | + | num tasks waiting: 0 |
- | Number of awaiting jobs: 0 | + | num tasks running: 0 |
- | ID of the running | + | tasks currently |
+ | | ||
</ | </ | ||
Line 301: | Line 308: | ||
you@srvairlock: | you@srvairlock: | ||
you@srvairlock: | you@srvairlock: | ||
- | rx_ofdm.grc | + | rx_ofdm.grc |
rx_ofdm.py | rx_ofdm.py | ||
</ | </ |
from_gnuradio_to_cortxlab_pico.txt · Last modified: 2017/11/15 16:19 by onicolas