Changes between Initial Version and Version 1 of Tutorials/k0SDR/Tutorial01a


Ignore:
Timestamp:
Jun 12, 2015, 4:07:16 PM (9 years ago)
Author:
nilanjan
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Tutorials/k0SDR/Tutorial01a

    v1 v1  
     1== Simple radio example with GNURADIO benchmark scripts ==
     2
     3[[TOC(Tutorials/k0SDR*)]]
     4
     5=== Description ===
     6This short example will utilize GNU Radio benchmarks scripts to transfer packets over a radio link between two nodes.
     7
     8=== Hardware / Software Resources utilized ===
     9 1. Grid nodes with a USRP2 connect via Ethernet.
     10 2. ''ubuntu-14-04-64bit-sdr.ndz'': disk image loaded onto nodes. This image has all the precompiled - software required to configure the USRP2s and all the required GNU Radio software libraries. The USRP2's interface with the node is already configured.
     11 3. GNU Radio - software library to create SDR. Click here for [http://gnuradio.org/redmine/projects/gnuradio/wiki/WhatIsGR additional info].
     12 4. USRP2 - hardware platform for SDR. Click here for [http://gnuradio.org/redmine/projects/gnuradio/wiki/Hardware#Ettus-Research-USRP-Devices more info].
     13
     14=== Set up ===
     15 * Before you can access the testbed, you need to [https://www.orbit-lab.org/schedule make a reservation] and get it approved by the  [wiki:Documentation/Scheduler reservation service]. After receiving the reservation's confirmation (approval) email:
     16
     17 * [[CollapsibleStart(Login into reserved domain: ssh username@grid.orbit-lab.org)]][[Include(Documentation/Short/Login)]][[CollapsibleEnd]]
     18 * [[CollapsibleStart(Load an image on the nodes: omf load -i ubuntu-14-04-64bit-sdr.ndz -t node19-19\,node20-20)]] [[Include(Documentation/Short/LoadImage)]][[CollapsibleEnd]]
     19 * [[CollapsibleStart(Turn on the nodes: omf tell -a on -t node19-19\,node20-20)]] [[Include(Documentation/Short/TellOn)]][[CollapsibleEnd]]
     20
     21
     22
     23=== Running GNU Radio benchmark scripts ===
     24 * From two different terminals ssh into node19-19 and node20-20. Then change to the benchmark script's directory. For this example use node19-19 as the receiver and node20-20 as the transmitter.
     25{{{
     26username@console.grid:~$ ssh root@node19-19
     27root@node19-19:~# cd gnuradio/gr-digital/examples/narrowband
     28}}}
     29
     30 * Start the receiver benchmark script
     31{{{
     32root@node19-19:~/gnuradio/gr-digital/examples/narrowband# ./benchmark_rx.py -f 2.41G -m bpsk --rx-gain 10 -r .250M
     33}}}
     34 The parameters passed to the receiving script are as follows:
     35
     36  '-f 2.41G' ------> the carrier frequency to 2.41GHz
     37
     38  '-m bpsk'  ------> the modulation mode to binary phase shift keying.
     39
     40  '-r .250M' ------> the bitrate to 250000 bits /sec
     41
     42  '--rx-gain 10' -->  receiver front end gain to 10dB.
     43
     44
     45 * Start the transmitter benchmark script
     46{{{
     47root@node20-20:~/gnuradio/gr-digital/examples/narrowband# ./benchmark_tx.py -f 2.41G -m bpsk --tx-gain 10 -r .250M --tx-amplitude .5
     48}}}
     49 The values passed to the transmitting script must be similar to the receiver script with the exception of radio specific parameters.
     50
     51  '--tx-gain 10' -->  transmitter front end gain to 10dB.
     52
     53
     54=== Outputs from transmitter and receiver ===
     55 * Once a successful radio link has been established, the transmitted packets are received, decoded and verify by the gnu scripts.
     56 A sample output of the receiver is shown below.
     57{{{
     58root@node19-19:~/gnuradio/gr-digital/examples/narrowband# ./benchmark_rx.py -f 2.41G -m bpsk --rx-gain 10 -r .250M
     59linux; GNU C++ version 4.8.2; Boost_105400; UHD_003.008.002-86-g566dbc2b
     60
     61Using Volk machine: avx_64_mmx_orc
     62-- Opening a USRP2/N-Series device...
     63-- Current recv frame size: 1472 bytes
     64-- Current send frame size: 1472 bytes
     65ok =  True  pktno =    1  n_rcvd =    1  n_right =    1
     66ok =  True  pktno =    2  n_rcvd =    2  n_right =    2
     67ok =  True  pktno =    3  n_rcvd =    3  n_right =    3
     68ok =  True  pktno =    4  n_rcvd =    4  n_right =    4
     69ok =  True  pktno =    5  n_rcvd =    5  n_right =    5
     70ok =  True  pktno =    6  n_rcvd =    6  n_right =    6
     71ok =  True  pktno =    7  n_rcvd =    7  n_right =    7
     72ok =  True  pktno =    8  n_rcvd =    8  n_right =    8
     73ok =  True  pktno =    9  n_rcvd =    9  n_right =    9
     74ok =  True  pktno =   10  n_rcvd =   10  n_right =   10
     75ok =  True  pktno =   11  n_rcvd =   11  n_right =   11
     76ok =  True  pktno =   12  n_rcvd =   12  n_right =   12
     77ok =  True  pktno =   13  n_rcvd =   13  n_right =   13
     78ok =  True  pktno =   14  n_rcvd =   14  n_right =   14
     79ok =  True  pktno =   15  n_rcvd =   15  n_right =   15
     80ok =  True  pktno =   16  n_rcvd =   16  n_right =   16
     81ok =  True  pktno =   17  n_rcvd =   17  n_right =   17
     82ok = False  pktno =   18  n_rcvd =   18  n_right =   17
     83^C
     84}}}
     85
     86 For the transmitter output should be similar to this:
     87{{{
     88root@node20-20:~/gnuradio/gr-digital/examples/narrowband# ./benchmark_tx.py -f 2.41G -m bpsk --tx-gain 10 -r .250M --tx-amplitude .5
     89linux; GNU C++ version 4.8.2; Boost_105400; UHD_003.008.002-86-g566dbc2b
     90
     91Using Volk machine: sse4_2_64_orc
     92-- Opening a USRP2/N-Series device...
     93-- Current recv frame size: 1472 bytes
     94-- Current send frame size: 1472 bytes
     95................................................................................................................................................................................................................................................................................................................................................................................................................................................^C
     96}}}
     97
     98=== Troubleshooting ===
     99 * If the receiving script is not showing any activity, it most likely the script parameters need to be tweaked. USRP radios (any radio in general) are not made the same due to variations in HW component quality and tolerances. Each radio has it's own sweet spot for best transmission and reception. For different USRPs on the grid (or other sandboxes) raising or lowering gains, amplitude, and/or other parameters is required to establish a solid radio link.
     100As an example if the gains are set too hi, signal can become saturated, clipped and distort at the analog-digital interface. If the gains are set too low, the signal will just blend in to the noise floor especially for simple modulation schemes. For a description of other parameters, use the --help command get a listing.
     101{{{
     102root@node19-19:~/gnuradio/gr-digital/examples/narrowband# ./benchmark_rx.py --help
     103}}}
     104