| 4 | |
| 5 | === Description === |
| 6 | |
| 7 | In this tutorial, we demonstrate the TDD 2x2 MIMO channel sounding procedure using the USRP-2974s in the [https://wiki.cosmos-lab.org/wiki/Architecture/Domains/cosmos_sb2 COSMOS Sandbox2 (sb2)] and the [https://github.com/renew-wireless/RENEWLab/ RENEW Sounder software] |
| 8 | |
| 9 | * The instructions of the RENEW Platform Sounder software can be found [https://docs.renew-wireless.org/dev-suite/design-flows/cpp/sounder/ here] under [https://docs.renew-wireless.org/license/ RENEW license]. |
| 10 | * The COSMOS team contributes to adding the UHD support for the Sounder software under the [https://github.com/EttusResearch/uhd/blob/master/LICENSE.md UHD license]. |
| 11 | |
| 12 | Author: Tingjun Chen, Columbia University (tc2668[at]columbia.edu) |
| 13 | |
| 14 | Last updated: Sept. 21, 2020 |
| 15 | |
| 16 | === Prerequisites === |
| 17 | |
| 18 | In order to access sb2, create a reservation in sb2 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. |
| 19 | |
| 20 | === Resources Required === |
| 21 | |
| 22 | * 2 USRP-2974 ({{{sdr2-s1-lg1}}} and {{{sdr2-md1}}}) |
| 23 | * 1 Server ({{{srv2-lg1}}}) |
| 24 | |
| 25 | === Tutorial Setup === |
| 26 | |
| 27 | Follow the steps below to gain access to the sb2 console and set up nodes with appropriate images. |
| 28 | 1. If you don't have one already, sign up for a [https://www.cosmos-lab.org/portal-2/ COSMOS account] |
| 29 | 1. [wiki:/GettingStarted#MakeaReservation Create a resource reservation] on COSMOS sb2 |
| 30 | 1. [Documentation/Short/Login Login] into sb2 console ({{{console.sb2.cosmos-lab.org}}}) with two SSH sessions. |
| 31 | 1. Make sure all the nodes and devices used in the experiment are turned off: |
| 32 | {{{#!shell |
| 33 | omf tell -a offh -t sdr2-s1-lg1,sdr2-md1,srv2-lg1 |
| 34 | }}} |
| 35 | 1. Use the {{{baseline_gr.ndz}}} node image (see [https://wiki.cosmos-lab.org/wiki/UserGuide/DiskImages#DiskImages here] for the list of pre-defined images) with Ubuntu 18.04, UHD 3.15, and gnuradio 3.8. Load {{{baseline_gr.ndz}}} on on the server. |
| 36 | {{{#!shell |
| 37 | omf load -i baseline_gr.ndz -t srv2-lg1 |
| 38 | }}} |
| 39 | 1. Turn all the required resources on and check the status |
| 40 | {{{#!shell |
| 41 | omf tell -a on -t sdr2-s1-lg1,sdr2-md1,srv2-lg1 |
| 42 | }}} |
| 43 | {{{#!shell |
| 44 | omf stat -t system:topo:allres |
| 45 | }}} |
| 46 | 1. {{{ssh}}} to the the same server from two terminals, use option -Y for using GUI. |
| 47 | {{{#!shell |
| 48 | [Terminal 1] ssh -Y root@srv2-lg1, |
| 49 | [Terminal 2] ssh -Y root@srv2-lg1 |
| 50 | }}} |
| 51 | |
| 52 | === Experiment Execution === |
| 53 | ==== Find and prepare USRPs ==== |
| 54 | * The IP addresses for Ethernet Port 1(10G) on {{{sdr2-s1-lg1}}} and {{{sdr2-md1}}} were hard-coded to {{{10.118.2.2}}} and {{{10.118.3.2}}} respectively. To access them from {{{srv2-lg1}}}, configure the network interface {{{eno2}}} as follows: |
| 55 | {{{#!shell |
| 56 | root@srv2-lg1:~# ifconfig eno2 10.118.1.2 netmask 255.255.0.0 mtu 9000 up |
| 57 | root@srv2-lg1:~# sudo sysctl -w net.core.wmem_max=24862979 |
| 58 | net.core.wmem_max = 24862979 |
| 59 | root@srv2-lg1:~# sudo sysctl -w net.core.rmem_max=24862979 |
| 60 | net.core.rmem_max = 24862979 |
| 61 | root@srv2-lg1:~# ifconfig |
| 62 | eno2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9000 |
| 63 | inet 10.118.1.2 netmask 255.255.0.0 broadcast 10.118.255.255 |
| 64 | inet6 fe80::9a03:9bff:fe61:9609 prefixlen 64 scopeid 0x20<link> |
| 65 | ether 98:03:9b:61:96:09 txqueuelen 1000 (Ethernet) |
| 66 | RX packets 4053772 bytes 17770502341 (17.7 GB) |
| 67 | RX errors 0 dropped 0 overruns 0 frame 0 |
| 68 | TX packets 1727950 bytes 2972166223 (2.9 GB) |
| 69 | TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 |
| 70 | |
| 71 | }}} |
| 72 | |
| 73 | * Run {{{und_find_devicec}}} to make sure that the USRP-2974s can be reached: |
| 74 | {{{#!shell |
| 75 | root@srv2-lg1:~# uhd_find_devices --args="addr=10.118.2.2" |
| 76 | [INFO] [UHD] linux; GNU C++ version 7.5.0; Boost_106501; UHD_3.15.0.HEAD-0-gaea0e2de |
| 77 | -------------------------------------------------- |
| 78 | -- UHD Device 0 |
| 79 | -------------------------------------------------- |
| 80 | Device Address: |
| 81 | serial: 318F20F |
| 82 | addr: 10.118.2.2 |
| 83 | fpga: XG |
| 84 | name: |
| 85 | product: NI-2974 |
| 86 | type: x300 |
| 87 | |
| 88 | root@srv2-lg1:~# uhd_find_devices --args="addr=10.118.3.2" |
| 89 | [INFO] [UHD] linux; GNU C++ version 7.5.0; Boost_106501; UHD_3.15.0.HEAD-0-gaea0e2de |
| 90 | -------------------------------------------------- |
| 91 | -- UHD Device 0 |
| 92 | -------------------------------------------------- |
| 93 | Device Address: |
| 94 | serial: 3165747 |
| 95 | addr: 10.118.3.2 |
| 96 | fpga: XG |
| 97 | name: |
| 98 | product: X310 |
| 99 | type: x300 |
| 100 | }}} |
| 101 | |
| 102 | * Download and build the RENEW Sounder software **on the {{{develop}}} branch** at [https://github.com/renew-wireless/RENEWLab/ here] and follow the [https://docs.renew-wireless.org/dev-suite/design-flows/cpp/sounder/ instructions] to build it. Note that the {{{master}}} branch does not have UHD support. |