[[Include(WikiToC)]] == Using Sivers mmWave equipment on COSMOS SandBox1 == {{{#!box information Upgrade in Progress }}} === Description === COSMOS sandbox 1 hosts 3 different pairs of mmWave frontends - 1) 60GHz SiversIMA transceivers 2) 28GHz IBM PAAM boards 3) 28GHz Interdigital MHUs. This tutorial demonstrates how to transmit and receive a signal in the 60GHz mmWave spectrum using the Sivers front-ends. The Sivers 57-66GHz transceiver system (EVK06002 - evaluation kit for TRX BF/01) is optimized for WiGig applications and is compliant with 802.11ad standard. The transceiver includes 16 element patch antenna arrays for TX and RX, and provides beam steering capabilities with an application GUI or python API over USB interface. Current mmWave setup in COSMOS SB1 looks as shown in the figure below. || [[Image(sb1_benchtop_mmwave.jpg, 900px)]] || In the benchtop 60GHz setup of SandBox1, either USRP N310 or RFSoC ZCU111 can be used for baseband processing. RF Switch boxes as shown in the figure are used to select between N310 and RFSoC. RF path configuration details are at https://wiki.cosmos-lab.org/wiki/Architecture/Domains/cosmos_sb1#RFPathConfigurationsformmWaveDevelopmentPlatforms, and RF switch commands are explained at wiki:/Resources/Services/RFSwitch. To select N310s as baseband processing units, all the switches in the RF switch boxes are configured to port 1. This experiment uses USRP N310s for baseband processing. Sivers control software on srv1-in1, srv1-in2 talks to the mmWave front-ends over USB links. Host GNURadio applications on srv1-in1, srv1-in2, send/receive data samples to/from the N310s over 10G Ethernet links. === 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 the COSMOS [wiki:GettingStarted getting started] page to get started. === Resources required === 2 servers srv1-in1, srv1-in2, 2 USRP X310s sdr4-in1, sdr4-in2 and both the Sivers mmWave platforms rfdev3-in1, rfdev3-in2 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. [wiki:/GettingStarted#MakeaReservation 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 srv1-in1,srv1-in2,sdr4-in1,sdr4-in2,rfdev3-in1,rfdev3-in2 }}} 1. The image sivers_sb1_cosmos.ndz is [baseline_uhd.ndz] with Sivers control software installed. Load sivers_sb1_cosmos.ndz on srv1-in1,srv1-in2. {{{#!shell omf load -i sivers_sb1_cosmos.ndz -t srv1-in1,srv1-in2 }}} 1. Turn all the required resources on and check the status {{{#!shell omf tell -a on -t srv1-in1,srv1-in2,sdr4-in1,sdr4-in2,rfdev3-in1,rfdev3-in2 }}} {{{#!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 Ports(10G) on the X310s sdr4-in1 and sdr4-in2 were hard-coded to 10.114.14.1,10.115.14.1 and 10.114.14.2,10,115,14,2 respectively. To access them from srv1-in1 or srv1-in2, configure the network interfaces as follows || Server || enp1s0 || enp3s0 || || srv1-in1 || 10.114.1.3 || 10.115.1.3 || || srv1-in2 || 10.114.1.4 || 10.115.1.4 || {{{#!shell-session root@srv1-in1:~# ip link set enp1s0 mtu 9000 up root@srv1-in1:~# ip addr add 10.114.1.3/16 dev enp1s0 root@srv1-in1:~# ip addr show dev enp1s0 4: enp1s0: mtu 9000 qdisc mq state UP group default qlen 1000 link/ether f4:52:14:83:99:40 brd ff:ff:ff:ff:ff:ff inet 10.114.1.3/16 scope global enp1s0 valid_lft forever preferred_lft forever inet6 fe80::f652:14ff:fe83:9940/64 scope link valid_lft forever preferred_lft forever }}} * Run uhd_find_devices to check if the X310s can be reached {{{#!shell-session root@srv1-in1:~# uhd_find_devices --args="addr=10.114.14.1" [INFO] [UHD] linux; GNU C++ version 7.4.0; Boost_106501; UHD_3.14.1.1-release -------------------------------------------------- -- UHD Device 0 -------------------------------------------------- Device Address: serial: 31B8F3F addr: 10.114.14.1 fpga: XG name: sdr4-in1 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@srv1-in1:~/ederenv# ./start_mb1.sh -gui SN0240 || root@srv1-in2:~/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 }}} * If some or all the ports are set to "2", set them to port "1" {{{#!shell curl "am1.cosmos-lab.org:5054/rf_switch/set?name=rfsw1.sb1.cosmos-lab.org,rfsw2.sb1.cosmos-lab.org&switch=1,2,3,4&port=1" }}} === Execution === ==== Run the experiment ==== * Start transmit application on the TX node(srv1-in1). Run UHD application tx_waveforms to transmit a sine wave. {{{#!shell-session root@srv4-lg1:~# /usr/lib/uhd/examples/tx_waveforms --args="addr=10.114.14.2" --freq 100e6 --rate 200e6 --ant AB --subdev A:AB --wave-freq 1e6 --wave-type SINE }}} * Start receive application on the RX node(srv3-lg1). Run rx_ascii_art_dft to observe the sinewave as shown in the picture below {{{#!shell-session root@srv3-lg1:~# /usr/lib/uhd/examples/rx_ascii_art_dft --args="addr=10.115.6.1" --freq 100e6 --rate 200e6 --ref-lvl -20 --ant AB --subdev B:AB }}} || [[Image(mmWave_sinewave_rx.jpg, 700px)]] ||