wiki:Tutorials/k0SDR/Tutorial27

Simple Radio Example with USRP X310 on ORBIT Sandbox 2

Description

This tutorial shows a simple radio example - transmit a sine wave using an USRP X310 on ORBIT SB2, view it on another X310.

Set Up

Make a reservation on the Orbit Scheduler for using SB2.

Prepare the nodes

  • Load baseline-sdr.ndz on nodes 1-1 and 1-2.
    root@console.sb2:~$ omf load -i baseline-sdr.ndz -t node1-1,node1-2
    
  • Once imaging is done, turn the nodes on and log in
    root@console.sb2:~$ omf tell -a on -t node1-1,node1-2
    root@console.sb2:~$ ssh root@node1-1
    root@console.sb2:~$ ssh root@node1-2
    

Prepare network setup for USRP access

Each X310 on SB2 is connected to its respective node through a 10G interface adapter installed in Port 1 of the USRP. In this configuration, the X310 will have a default IP address of 192.168.40.2 (see X310 User Manual). To setup network connectivity, make sure DATA2 interface on both node1-1 and node1-2 is configured with an address in the 192.168.40.0/24 subnet.

root@node1-1:~# ifconfig DATA2 192.168.40.1 netmask 255.255.255.0 mtu 9000
root@node1-1:~# ifconfig -a
CTRL: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.12.1.1  netmask 255.255.0.0  broadcast 10.12.255.255
        inet6 fe80::728b:cdff:febc:844a  prefixlen 64  scopeid 0x20<link>
        ether 70:8b:cd:bc:84:4a  txqueuelen 1000  (Ethernet)
        RX packets 1048  bytes 91762 (91.7 KB)
        RX errors 0  dropped 559  overruns 0  frame 0
        TX packets 335  bytes 38105 (38.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 20  memory 0xf7d00000-f7d20000

DATA1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::728b:cdff:febc:844b  prefixlen 64  scopeid 0x20<link>
        ether 70:8b:cd:bc:84:4b  txqueuelen 1000  (Ethernet)
        RX packets 625  bytes 56232 (56.2 KB)
        RX errors 0  dropped 559  overruns 0  frame 0
        TX packets 38  bytes 9320 (9.3 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

DATA2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 9000
        inet 192.168.40.1  netmask 255.255.0.0  broadcast 192.168.255.255
        inet6 fe80::f652:14ff:fe83:b720  prefixlen 64  scopeid 0x20<link>
        ether f4:52:14:83:b7:20  txqueuelen 1000  (Ethernet)
        RX packets 75  bytes 4500 (4.5 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 43  bytes 10530 (10.5 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 210  bytes 17093 (17.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 210  bytes 17093 (17.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Resize the send and receive buffers on both the nodes to support UHD applications

root@node1-1:~# sysctl -w net.core.wmem_max=24862979
net.core.wmem_max = 24862979
root@node1-1:~# sysctl -w net.core.rmem_max=24862979
net.core.rmem_max = 24862979

With this setup, each node should be able to access the X310 connected to it. Check USRP access with uhd_find_devices and uhd_usrp_probe commands.

root@node1-1:~# uhd_find_devices
[INFO] [UHD] linux; GNU C++ version 7.5.0; Boost_106501; UHD_3.15.0.0-release
--------------------------------------------------
-- UHD Device 0
--------------------------------------------------
Device Address:
    serial: 31B8F3F
    addr: 192.168.40.2
    fpga: XG
    name: sdr1-1
    product: X310
    type: x300

root@node1-1:~# uhd_usrp_probe
[INFO] [UHD] linux; GNU C++ version 7.5.0; Boost_106501; UHD_3.15.0.0-release
[INFO] [X300] X300 initialization sequence...
.
.
.
|   |   |       RFNoC blocks on this device:
|   |   |
|   |   |   * DmaFIFO_0
|   |   |   * Radio_0
|   |   |   * Radio_1
|   |   |   * DDC_0
|   |   |   * DDC_1
|   |   |   * DUC_0
|   |   |   * DUC_1

If uhd_usrp_probe reports firmware incompatibility, please run uhd_images_downloader to make sure compatible firmware images are available, and then load a new image onto the USRP. Power cycle the USRP (by power cycling the node using the omf 'offh' and 'on' commands) for the new image to take effect.

Run the experiment

Once both the USRPs are ready and accessible, run the experiment.

  • Send a waveform from the TX node, node1-1
    root@node1-1:~# /usr/lib/uhd/examples/tx_waveforms --freq 2e9 --rate 10e6 --wave-type SINE --wave-freq 1e6 --gain 0
    
  • Run a spectrum analyzer application on the RX node, node1-2, to view the waveform
    root@node1-2:~# /usr/lib/uhd/examples/rx_ascii_art_dft --freq 2e9 --rate 10e6 --gain 0 --ref-lvl -40
    
Last modified 21 months ago Last modified on Jul 20, 2022, 3:43:11 PM

Attachments (1)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.