[[Include(WikiToC)]] == Using Sivers mmWave equipment on COSMOS SandBox1 == === Description === A pair of Sivers EVK06002s, evaluation kits for Sivers IMA TRX BF/01, are deployed on COSMOS SandBox1. TRX BF/01 is a 16+16 IEEE802.11ad Beamforming Transceiver with a complete Radio front-end with 57-66 GHz mmWave frequency range. Current mmWave setup in COSMOS SB1 looks as shown in the figure below. || [[Image(MISO_tutorial.jpg, 900px)]] || Baseband data samples to Sivers front-ends are fed by USRP X310s with BasicTX and BasicRX daughtercards. BasicTX (https://www.ettus.com/all-products/basictx/) daughtercard is a simple wideband (250MHz) interface to the raw DAC signals from USRP. Similarly BasicRX (https://www.ettus.com/all-products/basicrx/) provides a simple, wideband interface to USRP ADCs. The raw data can be generated/processed in the FPGA on USRP X310 and can be transferred to the host servers srv1-lg1, srv2-lg1 over 10G Ethernet link for further processing/storage. Control software for Sivers front-ends runs on srv3-lg1 and srv4-lg1. srv3-lg1 is directly connected to Sivers SN0243 and srv4-lg1 is connected to Sivers SN0240. These servers also have a direct USB connection to the X310s, for JTAG programming. This tutorial demonstrates how to transmit and receive a signal in the 60GHz mmWave spectrum using these Sivers front-ends. === Prerequisites === In order to access the test bed, create a reservation and have it approved by the reservation service. Access to the resources is granted after the reservation is confirmed. Please follow the process shown on [wiki:cosmos_workflow the COSMOS work flow page] to get started. === Resources required === 4 servers srv1-lg1 to srv4-lg1, 2 USRP X310s rfdev3-1, rfdev3-2 and both the Sivers platforms rfdev3-5, rfdev3-6 on COSMOS SB1. === Tutorial Setup === Follow the steps below to gain access to the [wiki:/hardware/Domains/sb1 sandbox 1 console] and set up nodes with appropriate images. 1. If you don't have one already, sign up for a [https://www.cosmos-lab.org/portal-2/ COSMOS account] 1. [Documentation/Short/CreateRes Create a resource reservation] on sandbox 1 1. [Documentation/Short/Login Login] into sandbox 1 console (console.sb1.cosmos-lab.org) with two SSH sessions. 1. Make sure all the nodes and devices used in the experiment are turned off: {{{#!shell omf tell -a offh -t srv3-lg1,srv4-lg1,rfdev3-1,rfdev3-2,rfdev3-5,rfdev3-6 }}} 1. The image rfnoc_wigig.ndz has aforementioned RFNoC 802.11ad preamble processing blocks and Sivers control software installed. Load rfnoc_wigig.ndz on srv3,srv4. {{{#!shell omf load -i rfnoc_wigig.ndz -t srv3-lg1,srv4-lg1 }}} 1. Turn all the required resources on and check the status {{{#!shell omf tell -a on -t srv3-lg1,srv4-lg1,rfdev3-1,rfdev3-2,rfdev3-5,rfdev3-6 }}} {{{#!shell omf stat -t system:topo:allres }}} 1. ssh to the nodes, use option -Y for using GUI. === Experiment Execution === ==== Find and prepare USRPs ==== * The IP addresses for Ethernet Port 1(10G) on the X310s rfdev3-1 and rfdev3-2 were hard-coded to 10.115.2.2 and 10.115.2.3 respectively. To access them from srv3-lg1 or srv4-lg1, configure the network interface enp1s0 as follows {{{#!shell-session root@srv3-lg1:~# ifconfig enp1s0 10.115.1.1 netmask 255.255.0.0 mtu 9000 up root@srv3-lg1:~# ifconfig enp1s0 enp1s0: flags=4163 mtu 9000 inet 10.115.1.1 netmask 255.255.0.0 broadcast 10.115.255.255 inet6 fe80::f652:14ff:fe83:b930 prefixlen 64 scopeid 0x20 ether f4:52:14:83:b9:30 txqueuelen 1000 (Ethernet) RX packets 2839670 bytes 20838442698 (20.8 GB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 78864 bytes 6661472 (6.6 MB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 }}} * Run uhd_find_devices to check if the X310s can be reached {{{#!shell-session root@srv3-lg1:~# uhd_find_devices --args="addr=10.115.2.3" [INFO] [UHD] linux; GNU C++ version 7.4.0; Boost_106501; UHD_3.14.1.1-release -------------------------------------------------- -- UHD Device 0 -------------------------------------------------- Device Address: serial: 31B6FFA addr: 10.115.2.3 fpga: HG name: sdr2-md3 product: X310 type: x300 }}} ==== Prepare Sivers 60GHz front-ends ==== * To demonstrate the experiment here, we use Sivers front-end SN0240 as transmitter and SN0243 as receiver || SN0240 as transmitter || SN0243 as receiver || || root@srv4-lg1:~/ederenv# ./start_mb1.sh --gui SN0240 || root@srv3-lg1:~/ederenv# ./start_mb1.sh --gui SN0243 || || Click "TX enable" and "LO leakage Cal" || Click "RX enable" || || [[Image(Sivers_TX_SN0240.jpg, 500px)]] || [[Image(Sivers_RX_SN0243.jpg, 500px)]] || * Make sure the RF switch boxes are configured to use X310s (all switches set to port 1) {{{#!shell-session root@console:~# curl am1.cosmos-lab.org:5054/rf_switch/status?name=rfsw1.sb1.cosmos-lab.org,rfsw2.sb1.cosmos-lab.org }}} === Execution === ==== Run the experiment ==== * Start transmit application on the TX node(srv1-lg1). Run UHD application tx_waveforms to transmit a sine wave. {{{#!shell-session root@srv1-lg1:~/uhd/host/build/examples# ./tx_waveforms --args="addr=10.115.2.2" --freq 100e6 --rate 200e6 --ant AB --subdev A:AB --wave-freq 1e6 --wave-type SINE }}} * Start receive application on the RX node(srv2-lg1). Run rx_ascii_art_dft to observe the sinewave as shown in the picture below {{{#!shell-session root@srv2-lg1:~# /usr/lib/uhd/examples/rx_ascii_art_dft --args="addr=10.115.2.3" --freq 100e6 --rate 200e6 --ref-lvl -20 --ant AB --subdev B:AB }}} || [[Image(mmWave_sinewave_rx.jpg, 700px)]] ||