Version 6 (modified by 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
- Sandbox 3 - consists of two nodes (node1-1 & node1-2). Each node has a USRP2 connect via Ethernet.
- 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.
- omf-5.2 / omf-5.3: used to image to nodes
- octave: GNU version of MATLAB
Set up
- To get started first make a reservation on the Orbit Scheduler for using Sandbox 3
- 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-1nilanjan@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
Troubleshooting
- uhd_find_devices & uhd_usrp_probe return No UHD Devices Found
Attachments (2)
- SineWave1MHz.png (48.9 KB ) - added by 12 years ago.
- read_float_binary.m (1.2 KB ) - added by 12 years ago.
Download all attachments as: .zip
Note:
See TracWiki
for help on using the wiki.