This page lists coverage measurements performed for the COSMOS nodes. The goal is to give experimenters an idea of what coverage each node provides in the testbed area, so experiments may be planned more effectively. '''''Contributors:''' Tingjun Chen, Angel Daniel Estigarribia, Manav Kohli, Watson Mushimbei, Dwiref Oza, Irfan Tamim, Jeswanth Yadagani''' For any questions, please email mpk2138[at]columbia.edu. ==== Node Coverage Measurements * [[Hardware/Nodes/Measurements/s3-lg1|s3-lg1]] * [[Hardware/Nodes/Measurements/md2|md2]] ==== Measurement Overview A uniform procedure is used to measure each node. The procedure utilizes the [https://wiki.cosmos-lab.org/wiki/Hardware/sdr/usrp2974#USRP2974 USRP 2974] in each node to transmit real 802.11g data packets at regular 100ms intervals with fixed +27 dBm power on channel 1 (2412 MHz). The 802.11g packets are generated in GNU Radio, using an 802.11 out-of-tree (OOT) framework [ 1 ], and transmitted through the node's [https://wiki.cosmos-lab.org/wiki/Hardware/rf-front-end#RFFrontEnd RF Front End], as shown in Figure 1. A Dell XPS 13 laptop computer with an Intel 8265 !WiFi card [ 2 ] is then used to receive and decode these packets in different locations, with the output provided by the {{{tcpdump}}} command. Each decoded packet reports its received power from the perspective of the Laptop !WiFi card. || [[Image(COSMOS Node Measurements Overview.png, 600px)]] || Figure 1: Overview of node measurement procedure. Each measurement location is measured for 20 seconds, allowing both an average received power and packet reception ratio (PRR) to be computed over 200 packets. ==== Detailed Measurement Procedure The specific procedure for setting up a node for measurements is outlined in this section. '''Setting up the Node''' As an example, node {{{s3-lg1}}} is used, but the following commands may be used on any node in the testbed. 1. Load the correct image onto the USRP 2974 in {{{s3-lg1}}} {{{ console~$ omf load -i mpk2138-cosmos-node-measurements-2021-03-26.ndz -t sdr2-s3-lg1 }}} 2. Set up the RF front end of the node to transmit at 2.412 GHz. {{{ console~$ curl "am1.cosmos-lab.org:5054/rf_control/set_tx_path?node=sdr2-md2.bed.cosmos-lab.org&rf_port=0,1&power_amp=on&f_lower=2400&f_upper=2460" }}} 3. Turn on the USRP 2974. Wait one minute for the radio to turn on after issuing this command. {{{ console~$ omf tell -a on -t sdr2-md2.bed.cosmos-lab.org }}} 4. Login to the USRP 2974 and set it up for transmitting the !WiFi packets. The prompt will say {{{sdr2-s3-lg1}}} no matter what node you use. {{{ console~$ ssh -X root@sdr2-md2 sdr2-s3-lg1~# /usr/local/bin/niusrprio_pcie start sdr2-s3-lg1~# sudo sysctl -w net.core.wmem_max=625000000 sdr2-s3-lg1~# sudo sysctl -w net.core.rmem_max=625000000 sdr2-s3-lg1~# cd cosmos_measurements }}} '''Setting up the Laptop''' The instructions here are specific to the Dell XPS 13 laptop with Intel 8265 [ 2 ] !WiFi card running Ubuntu 18.10. Performance with other !WiFi cards may vary, and setup may also be different. 1. Restart the laptop. 2. Setup the !WiFi card to monitor all incoming packets on 2.412 GHz. Please note, the {{{wlp2s0}}} !WiFi card interface may be named differently - use the {{{ifconfig -a}}} command to find the name of the !WiFi card interface. {{{ $ sudo su $ iw dev $ iw phy phy0 info $ iw phy phy0 interface add mon0 type monitor $ ip link $ iw dev wlp2s0 del $ rfkill unblock wifi $ ip link set mon0 up $ iw dev mon0 info $ iw dev mon0 set freq 2412 $ exit $ cd ~/COSMOS\ Measurements }}} '''Taking Measurements''' Measurements are taken by placing the laptop at various locations around the node and recording the !WiFi packets as the USRP 2974 in the node transmits them. The node image loaded onto the USRP 2974 provides a Python script that will start the packet transmissions from the USRP 2974. To transmit packets for roughly 45 seconds, run the following on the node SSH terminal: {{{ sdr2-s3-lg1~/cosmos_measurements# timeout 45s python wifi_tx_nogui.py }}} Once the command line shows the radio has started transmitting (usually the presence of {{{U}}} showing up confirms this), the following script can be run on the Dell laptop to collect a 20 second packet measurement: {{{ COSMOS Measurements$ sudo python measure.py 20 }}} The filename can be anything but it is recommended to be descriptive including a date and the node being measured. The measurement number starts at 001 and increments with every measurement. Therefore an example measurement command would be: {{{ COSMOS Measurements$ sudo python measure.py 20 2050-01-01-s3lg1Measurement 001 }}} After the 20 second measurement has concluded, the GPS coordinates of the current laptop position can be recorded using an app such as one on iOS and Android called "Coordinates" [ 3 ]. The Dell laptop can then be moved to the next location, and the next measurement can be performed. ==== References [ 1 ] - [https://github.com/bastibl/gr-ieee802-11 IEEE 802.11 a/g/p transceiver for GNU Radio] [ 2 ] - [https://ark.intel.com/content/www/us/en/ark/products/94150/intel-dual-band-wireless-ac-8265.html Intel 8265 Dual Band WiFi Card] [ 3 ] - [https://apps.apple.com/us/app/coordinates-gps-formatter/id494286614 Coordinates App]