[[Include(WikiToC)]] = Mobile PAAM OFDM = === Description === In this tutorial, we demonstrate an OFDM link with two mobile PAAMs, each consisting of an [https://wiki.cosmos-lab.org/wiki/Hardware/SubSystems/IBM#IBM28-GHzPhasedArrayBoardForCOSMOS IBM 28 GHz phased array antenna modules (PAAMs)] and a USRP-2974 SDR. When not in use outdoors, mobile PAAMs are accessible in [https://wiki.cosmos-lab.org/wiki/Architecture/Domains/cosmos_sb1 sb1]. This tutorial is based on the following demo in MobiCom 2024. * P. Maddala, J. Kolodziejski, A. Adhikari, K. Hermstein, D. Chen, L. Zhu, T. Chen, I. Seskar, and G. Zussman, “Demo: Experimentation with Mobile 28 GHz Phased Array Antenna Modules”, in Proc. ACM MobiCom’24, Washington D.C., Nov. 2024 Author: Kevin Hermstein, Columbia University (klh2179@columbia.edu) Last updated November 15th, 2024 === Prerequisites === In order to access a COSMOS sandbox, 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 getting [https://wiki.cosmos-lab.org/wiki/GettingStarted started page] to get started. === Resources Required === Two mobile PAAMs. This tutorial uses {{{mob4-1}}} and {{{mob4-2}}}, but either may be swapped for {{{mob4-3}}} if necessary. === Tutorial Setup === Follow the steps below to gain access to the sandbox 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 COSMOS SB1 1. Login to sandbox console ({{{console.sb1.cosmos-lab.org}}}) with four SSH sessions. (One session for array control, one session for GNURadio for each mobile PAAM) 1. Make sure all the nodes and devices used in the experiment are turned off. {{{#!shell omf tell -a offh -t mob4-1,mob4-2 }}} 1. Use the {{{mob-paam-ofdm-tutorial.ndz}}} node image with Ubuntu 20.04, UHD 4.1, gnuradio 3.9, and a grc example used in this tutorial. Load {{{mob-paam-ofdm-tutorial.ndz}}} onto each mobile PAAM. Run each command in a separate session so they run in parallel. {{{#!shell omf load -i mob-paam-ofdm-tutorial.ndz -t mob4-1 }}} {{{#!shell omf load -i mob-paam-ofdm-tutorial.ndz -t mob4-2 }}} 1. Turn all the required resources on and check the status of all the resources. {{{#!shell omf tell -a on -t mob4-1,mob4-2 }}} {{{#!shell omf stat -t all }}} 1. {{{ssh}}} to each mobile PAAM with option -Y for using GUI with gnuradio. In the other two sessions, the -Y can be omitted. {{{#!shell ssh -Y root@mob4-1 }}} {{{#!shell ssh -Y root@mob4-2 }}} At this point, you should have 4 sessions open. 2 {{{ssh}}} sessions connected to {{{mob4-1}}} and 2 connected to {{{mob4-2}}}. At least one session for each must be initialized with {{{-Y}}} to enable the GNURadio GUI. === Experiment Execution === ==== Configure the mobile PAAM ==== COSMOS uses a RESTful [https://wiki.cosmos-lab.org/wiki/Resources/Services/ArrayMgmt service for PAAM management]. A local version of this service is running on each mobile PAAM to allow for configuration outside of SB1. There are two paradigms for array management: * Dynamic array management - The user connects to the antenna using {{{connect}}} command, dynamically steers the antenna during the experiment using {{{steer}}} command, and disconnects once the experiment is done. * Static array management - The user can connect, steer, and disconnect in a single command, {{{configure}}} We will use mob4-1 as our transmitter. We will enable it to use all ICs and 16 elements with V-polarization. Initially, it will be steered towards broadside (0,0). {{{#!shell root@mob4-1:~# curl "http://rfdev-mob:3000/array_mgmt/enable?dev_name=Local&ics=all&num_elements=16&txrx=tx&pol=v&theta=0&phi=0" }}} Now we configure mob4-2 as the receiver with the same parameters. {{{#!shell root@mob4-2:~# curl "http://rfdev-mob:3000/array_mgmt/enable?dev_name=Local&ics=all&num_elements=16&txrx=rx&pol=v&theta=0&phi=0" }}} ==== Run the experiment ==== Open GNURadio companion on the sessions initialized with {{{-Y}}} {{{#!shell root@mob4-1:~# gnuradio-companion }}} {{{#!shell root@mob4-2:~# gnuradio-companion }}} On mob4-1, open the TX_OFDM.grc file. On mob4-2, open the RX_OFDM.grc file. ==== Observe and improve the results ====