= 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 == * To get started first make a reservation on the [https://www.orbit-lab.org/schedule/ 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.[[BR]] 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 trouble shooting section. * Set up node1-1 to transmit a single frequency sine wave with a frequency of 100k Hz sampled at a rate of 8 Msamples / second and modulated upto 5000MHz {{{ ./tx_waveforms --wave-freq 100e3 --wave-type SINE --freq 5000e6 --rate 8e6 }}} == Troubleshooting == * ''uhd_find_devices'' & ''uhd_usrp_probe '' return No UHD Devices Found