wiki:Tutorials/k0SDR/Tutorial00

Version 7 (modified by nilanjan, 12 years ago) ( diff )

This page is WIP

Working with USRP - Universal Software Radio Peripheral

Description

In this tutorial we'll use the 2 USRPs on Sandbox 3 to transmit and receive a single frequency over the air to demonstrate the use of Universal software Radio peripheral Hardware Drivers (UHD) which is used standalone to configure and enable the USRPs.

Hardware / Software Resources utilized

  1. Sandbox 3 - consists of two nodes (node1-1 & node1-2). Each node has a USRP2 connect via Ethernet.
  2. ubuntu-11-10-gnuradio.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. omf-5.2 / omf-5.3: used to image to nodes
  4. octave: GNU version of MATLAB

Set up

  • After logging into sandbox 3 console, make sure both nodes are turned off
    nilanjan@console.sb3:~$ omf-5.2 tell offh all
    
  • Verify state of node before continuing. Make sure all nodes are in the POWEROFF state.
    nilanjan@console.sb3:~$ omf-5.2 stat
    
  • Image both nodes
    nilanjan@console.sb3:~$ omf-5.3 load -i ubuntu-11-10-gnuradio.ndz -t node1-1.sb3.orbit-lab.org,node1-2.sb3.orbit-lab.org
    
  • After nodes are imaged, verify that nodes are in POWEROFF state. Otherwise issue the following to turn them off for a reboot
    nilanjan@console.sb3:~$ nilanjan@console.sb3:~$ omf-5.2 tell offh all
    
  • Turn nodes back on and verify they are in POWERON state before proceeding
    nilanjan@console.sb3:~$ nilanjan@console.sb3:~$ omf-5.2 tell on all
    

Usage

  • Once nodes are imaged, ssh into each node. Use the USRP2 on node1-1 as the transmitter and USRP2 on node1-2 as receiver.
    ssh into node1-1
    nilanjan@console.sb3:~$ ssh root@node1-1
    root@node1-1:~# cd uhd/host/build/examples/
    

ssh into node1-2

nilanjan@console.sb3:~$ ssh root@node1-2
root@node1-1:~# cd uhd/host/build/examples/
  • The directory content should look like the following in both nodes
    root@node1-1:~/uhd/host/build/examples# ls
    benchmark_rate       latency_test      rx_samples_to_file  test_pps_input        tx_waveforms
    CMakeFiles           Makefile          rx_samples_to_udp   tx_bursts
    cmake_install.cmake  network_relay     rx_timed_samples    tx_samples_from_file
    CTestTestfile.cmake  rx_multi_samples  test_messages       tx_timed_samples
    
  • Once inside the node verify that the node can talk to the USRP
    root@node1-1:~/uhd/host/build/examples# uhd_find_devices
    
  • It should return something like the following:
    root@node1-1:~/uhd/host/build/examples# uhd_find_devices
    linux; GNU C++ version 4.6.1; Boost_104601; UHD_003.004.003-0-unknown
    
    --------------------------------------------------
    -- UHD Device 0
    --------------------------------------------------
    Device Address:
        type: usrp2
        addr: 192.168.10.2
        name:
        serial: 1232
    
  • Probe the device
    root@node1-1:~/uhd/host/build/examples# uhd_usrp_probe
    linux; GNU C++ version 4.6.1; Boost_104601; UHD_003.004.003-0-unknown
    
    -- Opening a USRP2/N-Series device...
    -- Current recv frame size: 1472 bytes
    -- Current send frame size: 1472 bytes
      _____________________________________________________
     /
    |       Device: USRP2 / N-Series Device
    |     _____________________________________________________
    |    /
    |   |       Mboard: USRP2-REV4
    |   |   hardware: 1024
    |   |   mac-addr: 00:50:c2:85:34:d0
    |   |   ip-addr: 192.168.10.2
    |   |   gpsdo: none
    |   |   serial: 1232
    |   |
    |   |   Time sources: none, external, _external_, mimo
    |   |   Clock sources: internal, external, mimo
    |   |   Sensors: mimo_locked, ref_locked
    |   |     _____________________________________________________
    |   |    /
    |   |   |       RX DSP: 0
    |   |   |   Freq range: -50.000 to 50.000 Mhz
    |   |     _____________________________________________________
    |   |    /
    |   |   |       RX DSP: 1
    |   |   |   Freq range: -50.000 to 50.000 Mhz
    |   |     _____________________________________________________
    |   |    /
    |   |   |       RX Dboard: A
    |   |   |   ID: XCVR2450 (0x0061)
    |   |   |     _____________________________________________________
    |   |   |    /
    |   |   |   |       RX Subdev: 0
    |   |   |   |   Name: XCVR2450 (0x0061)
    |   |   |   |   Antennas: J1, J2
    |   |   |   |   Sensors: lo_locked, rssi
    |   |   |   |   Freq range: 2400.000 to 6000.000 Mhz
    |   |   |   |   Gain range LNA: 0.0 to 30.5 step 15.0 dB
    |   |   |   |   Gain range VGA: 0.0 to 62.0 step 2.0 dB
    |   |   |   |   Connection Type: IQ
    |   |   |   |   Uses LO offset: No
    |   |   |     _____________________________________________________
    |   |   |    /
    |   |   |   |       RX Codec: A
    |   |   |   |   Name: ltc2284
    |   |   |   |   Gain Elements: None
    |   |     _____________________________________________________
    |   |    /
    |   |   |       TX DSP: 0
    |   |   |   Freq range: -250.000 to 250.000 Mhz
    |   |     _____________________________________________________
    |   |    /
    |   |   |       TX Dboard: A
    |   |   |   ID: XCVR2450 (0x0060)
    |   |   |     _____________________________________________________
    |   |   |    /
    |   |   |   |       TX Subdev: 0
    |   |   |   |   Name: XCVR2450 (0x0060)
    |   |   |   |   Antennas: J1, J2
    |   |   |   |   Sensors: lo_locked
    |   |   |   |   Freq range: 2400.000 to 6000.000 Mhz
    |   |   |   |   Gain range VGA: 0.0 to 30.0 step 0.5 dB
    |   |   |   |   Gain range BB: 0.0 to 5.0 step 1.5 dB
    |   |   |   |   Connection Type: QI
    |   |   |   |   Uses LO offset: No
    |   |   |     _____________________________________________________
    |   |   |    /
    |   |   |   |       TX Codec: A
    |   |   |   |   Name: ad9777
    |   |   |   |   Gain Elements: None
    

If the commands uhd_find_devices & uhd_usrp_probe return No UHD Devices Found, please refer to the troubleshooting section.

  • On node1-1 use the waveform generator to continuously transmit a single frequency sine wave with a frequency of 100k Hz sampled at a rate of 8 MSamples / second and modulated upto 5000MHz
    root@node1-1:~/uhd/host/build/examples# ./tx_waveforms --wave-freq 100e3 --wave-type SINE --freq 5000e6 --rate 8e6 --gain 20
    
    linux; GNU C++ version 4.6.1; Boost_104601; UHD_003.004.003-0-unknown
    
    
    Creating the usrp device with: ...
    -- Opening a USRP2/N-Series device...
    -- Current recv frame size: 1472 bytes
    -- Current send frame size: 1472 bytes
    Using Device: Single USRP:
      Device: USRP2 / N-Series Device
      Mboard 0: USRP2-REV4
      RX Channel: 0
        RX DSP: 0
        RX Dboard: A
        RX Subdev: XCVR2450 (0x0061)
      TX Channel: 0
        TX DSP: 0
        TX Dboard: A
        TX Subdev: XCVR2450 (0x0060)
    
    Setting TX Rate: 8.000000 Msps...
    
    UHD Warning:
        The hardware does not support the requested TX sample rate:
        Target sample rate: 8.000000 MSps
        Actual sample rate: 7.692308 MSps
    Actual TX Rate: 7.692308 Msps...
    
    Setting TX Freq: 5000.000000 MHz...
    Actual TX Freq: 5000.000000 MHz...
    
    Setting TX Gain: 20.000000 dB...
    Actual TX Gain: 20.000000 dB...
    
    Setting device timestamp to 0...
    Checking TX: LO: locked ...
    Press Ctrl + C to stop streaming...
    
  • Now set up the USRP2 on node1-2 to sniff the spectrum at 5000MHz using the rx_ascii_art_dft tool
    root@node1-2:~/uhd/host/build/examples# ../../examples/rx_ascii_art_dft --freq 5000e6 --gain 20 --rate 8e6 --frame-rate 10 --ref-lvl -50 --dyn-rng 70
    
  • The output should display a frequency spectrum in the terminal using the ascii art!
    -50                                                            |
                                                                   |
                                                                 ! |
                                                                 |||
    -60                                                          |||
                                                                 |||
                                                                 |||
                                                                 |||
    -70                                                          |||
                                                                 |||
                                                                 ||||
                                                                 ||||
    -80                                                        !|||||!!.
                                                               |||||||||
                                                               |||||||||
                                                            .  ||||||||| .|
                                                           !|  ||||||||| ||
    -90                                             .     !|||.|||||||||.||!       :
                                             :.    !|   :|||||||||||||||||||:.    .|   ::|
                                     . .:.|  ||!!  ||||.||||||||||||||||||||||| .:||  !|||
                                    || ||||  ||||: |||||||||||||||||||||||||||||||||: ||||. :    !|
    -100                   .: .     ||.||||! ||||||||||||||||||||||||||||||||||||||||.|||||.|:  .||   ! .
                    ..     || ||||:!|||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||| :||.||
                    ||     || |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||:||||||   !
             . .    || .|:|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |.| !||.! |
    -110   !.|:|.   ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||:|||.|||||||.:
           |||||||  ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
           |||||||:|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
          ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
    -120  ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
     dBfs          4997MHz       4998MHz       4999MHz        5000MHz       5001MHz       5002MHz       5003MHz         O
    
  • Now going back to node1-1, turn off the waveform generator so nothing is transmitted. That is do a ctrl-c in the node1-1 terminal. The frequency spectrum display on node1-2 should display the noise floor
    -50
    
    
    
    -60
    
    
    
    -70
    
    
    
    -80
    
    
    
    
    -90
    
                                                                   !
                                              :.   :   :  |    ||  |  | !    !
    -100                          .    |. .  .||!  |  ||! |!:. || :|  | | .:||  !              .
                             !    |: |!|| |  ||||! |  |||.||||:||:|| || |:||||::|.| ! !.!     .|.
                 .       :| ||: ::||.||||:|:!||||| |!!||||||||||||||!||:|||||||||||:|:||| :.:.|||||!:             |
                 |   :|:.||:||| ||||||||||||||||||:|||||||||||||||||||||||||||||||||||||| ||||||||||| ::    . : . |
    -110        !|:| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||.|||||||||||.||!  :|.| | |.
           !| |!|||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||| |!||| |.
           || ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||| ||
           ||:|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||!|||||.||
    -120  :|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
     dBfs          4997MHz       4998MHz       4999MHz        5000MHz       5001MHz       5002MHz       5003MHz         O
    
  • Play around with the options on tx_waveforms and verify the corresponding change in the received frequency spectrum. To view all optionsdo the following:
    root@node1-1:~/uhd/host/build/examples# ./tx_waveforms --help
    

Next: Capture waveform and record to file & add time-domain plot of waveform

Troubleshooting

  • uhd_find_devices & uhd_usrp_probe return No UHD Devices Found

Attachments (2)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.