AraRAN Experiments

Experiment 1 - Transmitting, Receiving, and Visualizing Waveforms using UHD and GNURadio

Platform: Software Defined Radios.

Resources needed: 2 x USRP B210s

Short Description: Transmit and receive samples to a file using USRP Hardware Driver (UHD) and GNU Radio.

Detailed Description: The experiment makes use of UHD and Gnuradio to transmit signals from the base station, receive, visualize, and save the IQ samples to a file for analysis.

Follow the steps below to create leases and launch containers for this experiment:

  1. Login to the portal ARA Portal with your username and password.

  2. Create two reservations using the Project -> Reservations -> Leases tab from the dashboard:

    1. gNB

      • Site: Sandbox

      • Resource Type: AraRAN

      • Device Type: Host

      • Device ID: 002

    2. UE

      • Site: Sandbox

      • Resource Type: AraRAN

      • Device Type: Host

      • Device ID: 001

  3. Create two containers on the respective nodes using the corresponding reservation IDs. For the containers, the Docker images can be used as follows:

    1. gNB

      • Container Image: arawirelesshub/openairinterface5g:oai_gnb

      • CPU: 2

      • Memory: 5120

    2. nrUE

      • Container Image: arawirelesshub/openairinterface5g:oai_nrue

      • CPU: 2

      • Memory: 5120

    Note

    Note that the above container images are equipped with USRP Hardware Driver (UHD).

  4. Once the container is launched, take a note on the floating IP if you want to access the container from your PC via ARA jumpbox.

  5. The containers can be accessed via the console tab of the respective containers in the Project -> Containers tab from the dashboard or using SSH via the jumpbox server.

  6. In the gNB container, run the following commands to transmit a sample waveform with specific frequency, sampling rate, bandwidth, and gain.

    # cd /usr/local/lib/uhd/examples
    # ./tx_waveforms --freq 3586.08e6 --rate 5e6 --gain 70
    

    The output from the tx_waveforms is as follows:

    Creating the usrp device with: ...
    [INFO] [UHD] linux; GNU C++ version 7.5.0; Boost_106501; UHD_4.0.0.HEAD-0-g90ce6062
    [INFO] [MPMD] Initializing 1 device(s) in parallel with args: mgmt_addr=192.168.20.2,type=n3xx,product=n320,serial=32584FD,claimed=False,addr=192.168.20.2
    [INFO] [MPM.PeriphManager] init() called with device args `mgmt_addr=192.168.20.2,product=n320,clock_source=gpsdo,time_source=gpsdo'.
    [INFO] [MPM.Rhodium-0] init() called with args `mgmt_addr=192.168.20.2,product=n320,clock_source=gpsdo,time_source=gpsdo'
    [INFO] [MPM.Rhodium-1] init() called with args `mgmt_addr=192.168.20.2,product=n320,clock_source=gpsdo,time_source=gpsdo'
    [INFO] [MPM.Rhodium-0] Re-initializing daughter board. This may take some time.
    [INFO] [MPM.Rhodium-0] init() called with args `mgmt_addr=192.168.20.2,product=n320,clock_source=internal,time_source=internal,skip_rfic=None,master_clock_rate=245760000.0,ref_clk_freq=25000000.0'
    [INFO] [MPM.Rhodium-0.init.LMK04828] LMK initialized and locked!
    [INFO] [MPM.Rhodium-0.DAC37J82] DAC PLL Locked!
    [INFO] [MPM.Rhodium-0.AD9695] ADC PLL Locked!
    [INFO] [MPM.Rhodium-0.init] JESD204B Link Initialization & Training Complete
    [INFO] [MPM.Rhodium-1] Re-initializing daughter board. This may take some time.
    [INFO] [MPM.Rhodium-1] init() called with args `mgmt_addr=192.168.20.2,product=n320,clock_source=internal,time_source=internal,skip_rfic=None,master_clock_rate=245760000.0,ref_clk_freq=25000000.0'
    [INFO] [MPM.Rhodium-1.init.LMK04828] LMK initialized and locked!
    Using Device: Single USRP:
      Device: N300-Series Device
      Mboard 0: n320
      RX Channel: 0
        RX DSP: 0
        RX Dboard: A
        RX Subdev: Rhodium
      RX Channel: 1
        RX DSP: 1
        RX Dboard: B
        RX Subdev: Rhodium
      TX Channel: 0
        TX DSP: 0
        TX Dboard: A
        TX Subdev: Rhodium
      TX Channel: 1
        TX DSP: 1
        TX Dboard: B
        TX Subdev: Rhodium
    
    Setting TX Rate: 1.000000 Msps...
    Actual TX Rate: 0.999024 Msps...
    
    Setting TX Freq: 3500.000000 MHz...
    Setting TX LO Offset: 0.000000 MHz...
    Actual TX Freq: 3500.000000 MHz...
    
    Setting TX Gain: 0.000000 dB...
    Actual TX Gain: 0.000000 dB...
    
    [INFO] [MPM.Rhodium-1.DAC37J82] DAC PLL Locked!
    [INFO] [MPM.Rhodium-1.AD9695] ADC PLL Locked!
    [INFO] [MPM.Rhodium-1.init] JESD204B Link Initialization & Training Complete
    [WARNING] [0/Radio#0] Attempting to set tick rate to 0. Skipping.
    Setting device timestamp to 0...
    Checking TX: all_los: locked ...
    Press Ctrl + C to stop streaming...
    ^C
    Done!
    
  7. To visualize the DFT/FFT of the waveform generated in Step 6, run the following command in the nrUE container.

    # cd /usr/local/lib/uhd/examples
    # ./rx_ascii_art_dft --freq 3586.08e6 --rate 1e6 --gain 40 --ref-lvl -60
    

    The terminal displays DFT/FFT as in the figure below when we run rx_ascii_art_dft

    ../_images/rx_ascii.png

    Note

    We can change the properties of the waveform to suit our preference. Moreover, we can transmit an OFDM signal/waveform such as the one from the OAI nrsoftmodem.

Experiment 3: Capturing CSI Data using the AraMIMO deployment

Platform: Skylark Wireless

Resources needed: Central Unit (CU), Distributed Unit (DU), Radio Unit (RU), and a Customer Premises Equipment (CPE)/User Equipment (UE).

Short Description: The experiment is designed to capture raw CSI data using AraMIMO deployment.

Detailed Description: AraMIMO consists of multiple CPEs connected to the Base Station (BS), a Skylark Wireless Faros V2 equipment. Using this experiment, we launch a container equipped with APIs and AraMIMO Repo. For the network diagram, refer to AraRAN_Expt2 above.

Detailed Steps

  1. Follow the steps of AraRAN_Expt2 up to Step 8 until the container is launched and the user has SSH access to the container.

  2. Go to the root home directory.

    # cd
    
  3. Go to the aramimo directory.

    # cd aramimo
    
  4. The aramimo directory has multiple scripts to collect the measurement data. Run the csi script to start capturing the CSI data.

    # ./csi_capture_script.py <time in seconds>
    

    NOTE

    The time can not be greater than 100 seconds. Each frame is 10ms, so 100s would capture CSI data of 10,000 frames.

  5. As an example, enter the time as 10 seconds and execute the script. The script connects to the Skylark CU and start collecting the data.

  6. Once the CSI capture is complete, the data will be saved to the /home/root/csi_data directory. The files can be saved locally to user’s computer via jumpbox for analysis. This script captures 3 files, i.e., csi.h5, csi_info.json, and hardware.json in a zip file. The file csi.h5 contains the actual CSI data while the other two files contain system-related data such as data rates, SNR, and system parameters.

  7. To save the files to local PC, first copy it over to the jumpbox server using scp. On the jumpbox server run the command.

    # scp -r root@<floating_ip_of_container>:/home/root/csi_data ~/
    
  8. The data from jumbox server can be copied to you local computer using the user’s ssh-key (assuming the data is saved user’s home directory on jumpbox server).

    # scp -i <path_to_user_private_key> -r <username>@jbox.arawireless.org:~/csi_data .
    
  9. The whole csi_data folder will be copied to the current directory of your host computer where the above command is run.

  10. To explore the CSI data, we need to unzip the zip file. Go to the csi_data folder and run the following to untar the files.

    cd csi_data
    unzip csi_563000000.0_24000000.0_03_24_2024_02_40_52.zip
    
  11. Here is an example script to read and explore the contents of the h5 file.

    import h5py
    csi_read = h5py.File('csi.h5', 'r')
    for key in csi_read.keys():
       print(key)
       for subkey in csi_read[key].keys():
          print(csi_read[key][subkey])
    
  12. Keys are ref_uplink, ref_downlink and ue_uplink. Subkeys are bin, ch, data, frame, hdl.

  13. The hdl (or handle) is the user number. ch (or channel) is the channel of the hdl (each user has two channels, 0 and 1). frame is the frame number, bin is the frequency offset from the center frequency. data contains the actual IQ values for each hdl, ch and frame.

  14. As an example, following line will print the IQ data for the uplink pilots in first frame, first hdl, and first ch.

    print(list(csi_read['ue_uplink']['data'][0:512]))
    
  15. The BS has a total of 42 antennas. The uplink pilot from each UE is received on all the antennas. The first 4 values in the 512 values above are for the reference antennas. There are two reference antennas, which also receive these pilots and the first 4 values (I and Q) in the above 512 values correspond to these reference antennas. The next 84 values are the I and Q values on the 42 BS antennas. The remaining values has no data becuase we only has 43 antennas, however the application support upto 256 antennas.

  16. The following will print the first 100 hdl, ch, frame and bin respectively.

    print(list(csi_read['ue_uplink']['hdl'][0:100]))
    print(list(csi_read['ue_uplink']['ch'][0:100]))
    print(list(csi_read['ue_uplink']['frame'][0:100]))
    print(list(csi_read['ue_uplink']['bin'][0:100]))
    
  17. To check which hdl correspond to which UE, run the following command in ara-sklk-cli.

    get_connected_ues
    

Experiment 4: Spectrum Sensing

Platform: Software Defined Radios USRP B210

Resources needed: User equipment with USRP B210.

Short Description: Collect the IQ samples for analyzing which spectrum bands are occupied in the span of interest.

Detailed Description: The experiment makes use of USRP Hardware Driver (UHD) and a Python script to compute the spectrum occupancy at regular intervals. The script logs the frequency components in a .csv file which can be copied by the users for analysis and visualization.

Follow the steps below to create leases and launch containers for this experiment:

  1. Login to the ARA portal.

  2. Create a reservation using the Project -> Reservations -> Leases tab from the dashboard using the following attributes:

    • Site: CurtissFarm or Ames

    • Resource Type: AraRAN

    • Device Type: User Equipment

  3. Launch a container on the reserved node using the corresponding reservation IDs as described in the Hello World experiment. For the container, use the following Docker image:

    • Container Image: arawirelesshub/ara-sensing:v1

    Note that the container is equipped with UHD and other required dependencies.

  4. [Optional step if the user wants to access the container via SSH] Once the container is launched, take a note on the floating IP from the container information.

  5. The containers can be accessed via the console tab of the respective containers in the Project -> Containers tab from the dashboard or using ssh via the jumpbox server. Visit ARA Jumpbox for more information on accessing containers via jumpbox.

  6. In the container, run the following commands to start the experiment

    # cd /root
    # python3 sensing-experiment.py
    

    The command starts the experiment and logs the spectrum occupancy information in different files in the same folder. The users can copy the files to their computer and plot using a Python script or MATLAB and check the occupied spectrum bands between 3400 and 3600 MHz at that location.

Experiment 5: Indoor/Sandbox Over-the-Air OpenAirInterface5g Experiment Using USRPs

Platform: Universal Software Radio Peripheral (USRP)

Resources needed: Two USRP B210s and associated host computers. (Please note that the core network is provided by ARA and does not need to be created by the user.)

Short Description: The experiment demonstrates a establishing a 5G BS-UE link using OpenAirInterface5g and USRPs. The setup includes an OpenAirInterface (OAI) gNB and nrUE.

Detailed Description: This experiment features a 5G network deployment using containerized 5G software components of OpenAirInterface5g, i.e., a containerized gNB and a containerized UE deployed on Intel x86 servers. Both gNB and nrUE containers run on general purpose Intel x86 servers which are connected to USRP B210 SDR via a USB 3.0 cable. The gNB is connected to the core network via a high-speed Ethernet link. The following figure shows the 5G BS-UE link created from the experiment.

../_images/Experiment_5.png

Detailed Steps for the Experiment

  1. Login to ARA portal with your credentials.

  2. Create two reservations using the Project -> Reservations -> Leases tab from the dashboard.

    1. gNB

      • Site: Sandbox

      • Resource Type: AraRAN

      • Device Type: Host

      • Device ID: 005

    2. UE

      • Site: Sandbox

      • Resource Type: AraRAN

      • Device Type: Host

      • Device ID: 001

  3. Create the following two containers on the respective nodes using the corresponding reservation IDs. For the containers, the Docker images can be used as follows:

    1. gNB

      • Container Image: arawirelesshub/openairinterface5g:oai_gnb

      • CPU: 8

      • Memory: 8192

    2. nrUE

      • Container Image: arawirelesshub/openairinterface5g:oai_nrue

      • CPU: 8

      • Memory: 8192

  4. Once the container is launched, take a note on the floating IP if you want to access the container from your PC via ARA jumpbox.

  5. The containers can be accessed via the console tab of the respective containers in the Project -> Containers tab from the dashboard or using SSH via the jumpbox server. Visit ARA Jumpbox for more information on accessing containers via jumpbox.

  6. In both containers, run the following command to check the radios connected to the host.

    # uhd_find_devices
    

    The output of the above command looks like the following image. You may see multiple B210s since each host is connected to two SDRs.

    ../_images/UHD_Find_Devices.png
  7. In order to open and edit the configuration file for the gNB to suit the specifications of our experiment, do the following

    # nano ~/openairinterface5g/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf
    
  8. To make the gNB connected to our core network, we need to attach the gNB to the AMF of the core network. Follow Step 7 to open the gNB configuration file to make the necessary changes as seen in the figure below. For communicating the IP address, run ifconfig command and obtain the IP address assigned to eth1 interface of the container. Note that in the following image, we assume the IP address as 192.168.70.65. Use /26 subnet mask while specifying the IP address, i.e., 192.168.70.65/26

    ../_images/Network_Interface.png

    Further, specify the B210 serial number by changing the line starting with sdr_addrs to sdr_addrs = "serial=8000167"; as shown below:

    ../_images/SDR_Address.png

    Once the modification is complete, save and exit the nano editor.

  9. Add a route to the core network from the gNB container with the following command. Please note that we need to provide the interface we identified from Step 8.

    # ip route add 192.168.70.128/26 via 192.168.70.126 dev eth1
    
  10. In the gNB container, run the OAI gNB using the following commands.

    # cd ~/openairinterface5g
    # source oaienv
    # cd cmake_targets/ran_build/build
    # ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf --gNBs.[0].min_rxtxtime 6 --sa -E --continuous-tx
    
  11. An important parameter that users want to change is the center frequency. Even though it is advisable to keep it default, the center frequency can be modified using the following two parameters.

    1. absoluteFrequencySSB

    2. dl_absoluteFrequencyPointA

    The parameters above take NR ARFCN values for the specific center frequency. You can use the online 5G NR ARFCN Calculator to get the absoluteFrequencySSB in case if you are not familiar with the low-level calculation. To obtain the corresponding dl_absoluteFrequencyPointA, subtract 1272 from the absoluteFrequencySSB value.

  12. In the UE container, run the OAI nrUE using the following commands in the UE container.

    # cd ~/openairinterface5g
    # source oaienv
    # cd cmake_targets/ran_build/build
    # ./nr-uesoftmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/ue.conf -r 106 --numerology 1 --band 78 -C 3604800000 --ue-fo-compensation --sa -E --ue-txgain 0 --usrp-args "serial=8000170" --nokrnmod 1
    

    Console Traces

    On establishing a successful connection, the commands provide the following output.

    gNB Console Trace

    ../_images/gNB_Console.png

    nrUE Console Trace

    ../_images/UE_Console.png

    Note

    When the connection is established, we can observe a new interface oaitun_ue1 with an IP address assigned by the SMF of the core network. In order to find the IP address, open (or SSH into) another terminal for nrUE container and run the command ifconfig.

    In this experiment, the interface name assigned to the nrUE by the SMF is given as oaitun_ue1, which is used in the commands provided in the steps below.

    Note

    ARA provides a dedicated core network for sandbox experiments and is reachable with the IP address 192.168.70.135.

  13. Ping test to the Core Network: On the nrUE container, run the following command to ping the core network to ensure stable connection.

    # ping -I oaitun_ue1 192.168.70.135
    

    An example output of the ping command is shown below.

    ../_images/sandbox_ping.png

    For recording the ping output to a text file (say ping_output.txt), we can use the following command.

    # ping -I oaitun_ue1 192.168.70.135 | tee ping_output.txt
    

Experiment 6: Outdoor Over-The-Air (OTA) Openairinterface 5G SA Experiment.

Platform: Openairinterface5g and Universal Software Radio Peripherals

Resources used: NI N320 (BS), N320 host computer, USRP B210, B210 host computer, power amplifiers, Commscope SS-65M-R2 Sector BS Antenna, and Laird OC69421 UE Antenna

Description: This experiment features a 5G network deployment using containerized 5G software components of OpenAirInterface5g, i.e., a containerized gNB, a containerized nrUE, and a containerized core network deployed in Intel x86 servers. The core network deployed in the data center and connects to the base station via long distance fiber backhaul connection. The following figure shows the 5G network created from the experiment.

../_images/Experiment6.png

Detailed Steps for the Experiment

  1. Login to ARA portal with your credentials.

  2. Create two reservations using the Project -> Reservations -> Leases tab from the dashboard. Since each base station works with specific UEs, we need to take extra care while reserving the nodes for experiments as well as setting the configuration parameters for gNB and UE. The following are BS-UE combinations which are operational for the OAI outdoor experiment. You can make use of any experiment resource combination listed below for your experiment.

    Experiment Resource Combination 1 (for Curtiss Farm)

    Resource No.

    Site

    Resource Type

    Device Type

    Device ID

    1

    Curtiss Farm

    AraRAN

    Base Station

    000 or leave it blank

    2

    Curtiss Farm

    AraRAN

    User Equipment

    001 or 002

    Experiment Resource Combination 2 (for Agronomy Farm)

    Resource No.

    Site

    Resource Type

    Device Type

    Device ID

    1

    Agronomy Farm

    AraRAN

    Base Station

    000 or leave it blank

    2

    Agronomy Farm

    AraRAN

    User Equipment

    010

    Experiment Resource Combination 3 (for Wilson Hall)

    Resource No.

    Site

    Resource Type

    Device Type

    Device ID

    1

    Wilson Hall

    AraRAN

    Base Station

    000 or leave it blank

    2

    Ames

    AraRAN

    User Equipment

    000

  3. Create the following two containers on the respective nodes using the corresponding reservation IDs. For the containers, the Docker images can be used as follows for different lease combinations:

    Container Specification for Combination 1 (for Curtiss Farm)

    AraRAN Component

    Container Image

    CPU

    Memory

    gNB

    arawirelesshub/openairinterface5g:oai_gnb_curtiss

    8

    8192

    nrUE

    arawirelesshub/openairinterface5g:oai_nrue_outdoor

    8

    8192

    Container Specification for Combination 2 (for Agronomy Farm)

    AraRAN Component

    Container Image

    CPU

    Memory

    gNB

    arawirelesshub/openairinterface5g:oai_gnb_agronomy

    8

    8192

    nrUE

    arawirelesshub/openairinterface5g:ag_ue

    8

    8192

    Container Specification for Combination 3 (for Wilson Hall)

    AraRAN Component

    Container Image

    CPU

    Memory

    gNB

    arawirelesshub/openairinterface5g:oai_gnb_wilson

    8

    8192

    nrUE

    arawirelesshub/openairinterface5g:oai_nrue_wilson

    8

    8192

    Note

    In case if you face any errors while launching container, refer to our FAQ.

  4. Once the container is launched, take a note on the floating IP if you want to access the container from your PC via ARA jumpbox.

  5. The containers can be accessed via the console tab of the respective containers in the Project -> Containers tab from the dashboard or using ssh via the jumpbox server. Visit ARA Jumpbox for more information on accessing containers via jumpbox.

  6. In both containers, run the following command to check the radios connected to the host. In case the command cannot find SDR, refer the instructions in FAQ.

    # uhd_find_devices
    

    The output of the above command should look like the following image.

    ../_images/UHD_Find_Devices_6.png
  7. In order to connect gNB to the core network, we need to provide the container’s IP address and interface in the gNB configuration file. For finding the IP address of the container, run the following command.:

    # ifconfig
    

    Note down the interface with IP address 192.168.70.113. For this experiment, we assume that the interface is eth2. (For example, for Curtiss Farm, the interface is eth4.)

  8. Edit the configuration file to provide the Ethernet interface and IP address of the container.

    Open the configuration file.

    # nano ~/openairinterface5g/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf
    

    To make gNB connected to our core network, we need to attach the gNB to the AMF of the core network. Edit the lines as shown in the figure below with the IP address and the interface corresponding to the IP address mentioned in Step 7.

    ../_images/Core_Net_Config_6.png

    Once the modification is complete, save and exit the nano editor.

  9. Add a route to the core network from the gNB container with the following command. Please note that we need to provide the interface we identified from Step 7. (For Curtiss Farm, the interface provided at the end of the command should be eth4).

    # ip route add 192.168.70.128/26 via 192.168.70.126 dev eth2
    
  10. Running the Base Station: In the gNB container, run the OAI gNB using the following commands. In case of any error, refer our FAQ.

    For Experiment Combination 1 (for Curtiss Farm):

    # cd ~/openairinterface5g
    # source oaienv
    # cd cmake_targets/ran_build/build
    # ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf --gNBs.[0].min_rxtxtime 6 --sa --usrp-tx-thread-config 1
    

    For Experiment Combination 2 (for Agronomy Farm):

    # cd ~/openairinterface5g
    # source oaienv
    # cd cmake_targets/ran_build/build
    # ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf --gNBs.[0].min_rxtxtime 6 --sa --usrp-tx-thread-config 1 --RUs.[0].att_rx 24
    

    For Experiment Combination 3 (for Wilson Hall):

    # cd ~/openairinterface5g
    # source oaienv
    # cd cmake_targets/ran_build/build
    # ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf --gNBs.[0].min_rxtxtime 5 --sa --usrp-tx-thread-config 1 --RUs.[0].att_rx 24
    
  11. An important parameter that users want to change is the center frequency. Even though it is advisable to keep it default, the center frequency can be modified using the following two parameters in the above-mentioned configuration file.

    1. absoluteFrequencySSB

    2. dl_absoluteFrequencyPointA

    The parameters above take NR ARFCN values for the specific center frequency. You can use the online 5G NR ARFCN Calculator to get the absoluteFrequencySSB in case if you are not familiar with the low-level calculation. To obtain the corresponding dl_absoluteFrequencyPointA, subtract 1272 from the absoluteFrequencySSB value.

  12. Starting nrUE: In the UE container, run the OAI nrUE using the following commands.

    Note

    If you want to connect multiple UEs to the same BS, configure the UEs as provided here before executing the following commands.

    In case of error or UE not connecting to gNB, refer FAQ.

    For Experiment Combination 1 (for Curtiss Farm):

    # cd ~/openairinterface5g
    # source oaienv
    # cd cmake_targets/ran_build/build
    # ./nr-uesoftmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/ue.conf -r 106 --numerology 1 --band 78 -C 3604800000 --ue-fo-compensation --sa -E --ue-txgain 0 --nokrnmod 1
    

    For Experiment Combination 2 (for Agronomy Farm):

    # cd ~/openairinterface5g
    # source oaienv
    # cd cmake_targets/ran_build/build
    # ./nr-uesoftmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/ue.conf -r 106 --numerology 1 --band 78 -C 3586080000  --sa -E --ue-txgain 16 --ue-fo-compensation --nokrnmod 1 --ue-rxgain 120
    

    Note: If you face issue any issue in the BS-UE link at the Agronomy Farm site, try --ue-txgain 18 (instead of --ue-txgain 16) in the above command.

    For Experiment Combination 3 (for Wilson Hall):

    # cd ~/openairinterface5g
    # source oaienv
    # cd cmake_targets/ran_build/build
    # ./nr-uesoftmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/ue.conf -r 106 --numerology 1 --band 78 -C 3586080000 --ue-fo-compensation --sa -E --ue-txgain 6 --nokrnmod 1 --ue-rxgain 120
    

    Console Traces

    On establishing a successful connection, the commands provide the following output.

    gNB Console Trace

    ../_images/gNB_Console_6.png

    nrUE Console Trace

    ../_images/nrUE_Console_6.png

    Note

    When the connection is established, we can observe a new interface oaitun_ue1 with an IP address assigned by the SMF of the core network. In order to find the IP address, run the command ifconfig in the nrUE container.

    For this experiment, we assume that the IP address assigned to oaitun_ue1 as 12.1.1.28, which is used in the commands in the subsequent steps. Note that this IP will change anytime the UE is connected to the core network.

    Note

    ARA provides a dedicated core network for experimenters and is deployed in the data center. The oai-ext-dn container of the core network is reachable with the IP address 192.168.70.135.

  13. Ping test to the Core Network: On the nrUE container, run the following command to ping the core network to ensure stable connection.

    # ping 192.168.70.135 -I oaitun_ue1
    

    An example output of the ping command is shown below.

    ../_images/ping_Console_6.png

    For recording the ping output to a text file (say ping_output.txt), we can use the following command.

    # ping 192.168.70.135 -I oaitun_ue1 | tee ping_output.txt
    

    For sending 10 packets with an inter-packet interval of 0.5 seconds, use the -c and -i options, respectively, as follows.

    # ping 192.168.70.135 -I oaitun_ue1 -c 10 -i 0.5 | tee ping_output.txt
    

    The file can be further copied to local machine using the instructions provided in Experiment Data Collection.

Connecting multiple UEs to BS

It is possible in this experiment to connect multiple UEs to the same BS. For example, Curtiss Farm BS (CurtissFarm-BS-000) has two UEs (CurtissFarm-UE-001 and CurtissFarm-UE-002) in its vicinity ready for establishing links. For establishing a second link, we need to create an additional lease for the second UE at Curtiss Farm and launch the UE container following the same procedure as described above.

In addition to launching containers, we need to modify the IMSI value in the configuration file of both UEs using the following steps:

  1. Open the UE configuration file.

    # nano /root/openairinterface5g/targets/PROJECTS/GENERIC-NR-5GC/CONF/ue.conf
    
    ../_images/UE1_Configuration_File.png

    For connecting multiple UEs, it is important to note that each UE should have different values for the imsi attribute in the configuration file. By default the configuration file has the imsi value 001010000000001. For the first UE, we can keep it as it is and, for the second UE, we can change it to 001010000000002 (changing the last digit) as follows:

    ../_images/UE2_Configuration_File.png

    After modifying imsi, save and exit from the file. Use Ctrl+X to save and exit if you are using the nano editor.

  2. Run the nrUE at each UE using Step 12 described above.

Experiment 7: Basic srsRAN Experiment in Sandbox Using USRPs.

Platform: srsRAN and Universal Software Radio Peripherals

Resources used: USRP B210 (BS and UE), NUC13 Pro computer, Panaroma Antennas, USB 3.0 cables

Description: This experiment features a 4G network deployment using containerized instances of the major components of srsRAN, i.e., a containerized evolved packet core (srsepc), containerized eNB (srsenb), and a containerized UE (srsue), deployed on Intel x86 servers. The following figure shows the 5G network created from the experiment.

Note

srsRAN currently supports only 15kHz sub-carrier spacing on srsue. Therefore, any experiment using SDR-based srsue is limited to 4G Frequency Division Duplex (FDD).

../_images/srsRAN_Sandbox_4G.png

Detailed Steps for the Experiment

  1. Login to ARA portal with your credentials.

  2. Create two reservations using the Project -> Reservations -> Leases tab from the dashboard.

    1. eNB

      • Site: Sandbox

      • Resource Type: AraRAN

      • Device Type: Host

      • Device ID: 005

    2. UE

      • Site: Sandbox

      • Resource Type: AraRAN

      • Device Type: Host

      • Device ID: 001

  3. Create the following two containers on the respective nodes. For the containers, the Docker images can be used as follows:

    1. eNB

      • Container Image: arawirelesshub/srsran:srsenb

      • CPU: 6

      • Memory: 8192

    2. UE

      • Container Image: arawirelesshub/srsran:srsue_4g

      • CPU: 6

      • Memory: 8192

  4. The containers can be accessed via the console tab of the respective containers in the Project -> Containers menu from the dashboard, or via SSH through the jumpbox server using the floating IP. For this experiment, we recommend to use the jumpbox approach since we need multiple terminal access to the same container. Visit ARA Jumpbox for more information on accessing containers via jumpbox.

  5. In both containers, run the following command to check the radios connected to the host. In case the command cannot find SDR, refer the instructions in FAQ.

    # uhd_find_devices
    

    The output of the above command should look like the following image.

    ../_images/UHD_Find_Devices_6.png
  6. Open three different terminals for the base station. The first one to run the evolved packet core (EPC), the second is to run the eNB instance, and the third to perform the delay (ping) and throughput experiments (iperf).

  7. For the UE, open two separate terminals. The first one is to run the UE instance and the other for delay (ping) and throughput experiments (iperf).

  8. In the first terminal of the base station, run the following command to start the EPC.

    # srsepc
    

    The command generates the output as below.

    ../_images/srsepc.png
  9. In the second terminal of the base station, run the following command to start eNB.

    # srsenb
    

    The output of the above command will be as shown in the following figure.

    ../_images/srsenb.png
  10. In the first terminal of the user equipment, run the UE using the following command.

    # srsue
    

    The command srsue generates the output as provided below.

    ../_images/srsue.png
  11. Ping test to the Core Network: On the second UE terminal, run the following command to ping the EPC.

    # ping 172.16.0.1
    

    An example output of the ping command is shown below.

    ../_images/ueping.png

    Console Traces

    On establishing a successful connection, press t followed by ENTER on the srsenb and srsue terminals to observe the link metrics as seen below.

    eNB Console Trace

    ../_images/srsenb_console.png

    UE Console Trace

    ../_images/srsue_console.png
  12. End-to-end throughput test: For measuring the end-to-end throughput (from UE to the EPC), we run the iperf server at the EPC and iperf client at the UE.

    For the iperf server, execute the following command in the third terminal of the base station.

    # iperf -s -u -i 1
    

    On the second UE terminal, where you run the ping earlier, run the iperf client using the following command to perform the throughput test for 10 seconds.

    # iperf -c 172.16.0.1 -u -i 1 -b 25M -t 10
    

    The sample output of the iperf server is shown below.

    ../_images/iperfserver.png

    You can observe the brate section for both the console traces of the srsenb and srsue showing the actual throughput measured on the link.

    The console traces for the srsenb start as shown in the figure below.

    ../_images/brate.png

Experiment 8: Outdoor 5G Channel Measurement using COTS UEs

Platform: ARA COTS platform

Resources Needed:
  • Ericsson Base Station: RP 6647 (base band), AIR 6419 (mid-band radio), AIR 5322 (mmWave radio)

  • COTS UE: Quectel RG530 and computer hosting the Quectel radio.

Description: The experiment is designed to measure the wireless channel characteristics using COTS UE from an already established Ericsson RAN. Please note that in this experiment, we do not establish any link. However, we measure the characteristics of an existing link. The experiment uses a container with a script for measuring the channel characteristics. The following figure shows the Ericsson network used for the experiment.

../_images/Experiment_8.png

Detailed Steps

  1. Login to ARA portal with your username and password.

    Note

    If you are a first time user, it is highly recommended to run the Hello World experiment experiment first to get familiarized with the interface and the portal.

  2. Create a reservation using the Project -> Reservations -> Leases tab from the dashboard with the following attributes:

    • Site: Ames

    • Resource Type: AraRAN

    • Device Type: User Equipment

    • Device ID: 000

    In general, you can use any UE which is equipped with COTS Quectel radio.

  3. Launch a container equipped using the container image arawirelesshub/cots:baseline. You can keep the other container attributes according to your choice.

  4. Once the container is launched, take a note on the floating IP and SSH to the container via the ARA jumpbox. Detailed instructions for accessing the container via jumpbox can be found here.

  5. In the container, run the following commands to start the measurement script.

    cd
    python3 measure_cots.py 10
    

    Here, 10 represents the time in seconds we want to execute the measurement script and the samples are collected every 1 second. You can provide the experiment duration as required.

    The command produces the following output.

    ../_images/COTS_Output.png
  6. The command in Step 5 generates an output file named hostname_YYYY_MM_DD-HH:MM:SS.csv (in CSV format) with the measurement data including the timestamp of the sample, band, ARFCN, RSRP, SINR, RSRQ, Cell ID, and Cell Name. You can see the content of the generated file using the following command. Note that the timestamp in the filename represents the time at which the measurement started.

    cat <filename>
    

    An example of the content of the file from the above command is shown below.

    ../_images/COTS_CSV_Data.png

    Note

    The last column in the CSV file represents the Cell Name, which takes the form ResourceName-SectorNumber. For example, WilsonHall-BS-000-2 indicates the 2nd sector of the base station specified as WilsonHall-BS-000.

Experiment 9: Field-Deployed OAI 5G RAN with Integrated E2 agent and nearRT-RIC using O-RAN Compliant FlexRIC

Platform: OpenAirInterface5g, FlexRIC, and Universal Software Radio Peripherals.

Resources used: USRP N320 and Dell R750 server as gNB, USRP B210 and Supermicro server as nrUE, CommScope SS-65M-R2 antenna, Laird OC69421 UE Antenna, Power Amplifiers, and Low Noise Amplifiers.

Description: This experiment features a 5G NR Radio Access Network (RAN) deployment using containerized instances of OAI 5G softmodems with O-RAN support. The experiment describes the steps of deployment OAI 5G RAN with integrated E2 agent and a nearRT-RIC using O-RAN compliant FlexRIC. The figure below shows the network diagram of the experiment.

../_images/oran_experiment.png

Detailed Steps for the Experiment

  1. Login to ARA portal with your credentials.

  2. Create two reservations using the Project -> Reservations -> Leases tab from the dashboard.

    1. gNB

      • Site: Curtiss Farm

      • Resource Type: AraRAN

      • Device Type: Base Station

      • Device ID: 000

    2. UE

      • Site: Curtiss Farm

      • Resource Type: AraRAN

      • Device Type: User Equipment

      • Device ID: 001 or 002

  3. Create the following two containers on the respective nodes using the corresponding reservation IDs. For the containers, use the following setting:

    1. gNB

      • Container Image: arawirelesshub/openairinterface5g:oran

      • CPU: 8

      • Memory: 8192

    2. nrUE

      • Container Image: arawirelesshub/openairinterface5g:oai_nrue_outdoor

      • CPU: 8

      • Memory: 8192

  4. Once the container is launched, take a note on the floating IP if you want to access the container from your PC via ARA jumpbox. The containers can be accessed via the console tab of the respective containers in the Project -> Containers tab from the dashboard or using SSH via the ARA jumpbox server. Visit ARA Jumpbox for more information on accessing containers via jumpbox.

  5. In both containers, run the following command to check the radios connected to the host.

    # uhd_find_devices
    

    The output of the above command should look like the following image.

    ../_images/uhd_find_curtiss.png
  6. In order to connect gNB to the core network, we need to provide the container’s IP address and interface in the gNB configuration file. For finding the IP address of the container, run the following command.:

    # ifconfig
    

    Note down the interface with IP address 192.168.70.113. For example, for Curtiss Farm, the interface is eth4.

  7. Edit the configuration file to provide the Ethernet interface and IP address of the container.

    Open the configuration file.

    # nano ~/oai/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf
    

    To make gNB connected to our core network, we need to attach the gNB to the AMF of the core network. Edit the lines as shown in the figure below with the IP address and the interface corresponding to the IP address mentioned in Step 6.

    ../_images/net_int.png

    Once the modification is complete, save and exit the nano editor.

  8. Add a route to the core network from the gNB container with the following command. Please note that we need to provide the interface we identified from Step 6. (For Curtiss Farm, the interface provided at the end of the command should be eth4).

    # ip route add 192.168.70.128/26 via 192.168.70.126 dev eth4
    
  9. Running the gNodeB: In one terminal of the gNB container created, run the OAI gNB using the following commands. In case of any error, refer our FAQ.

    # cd ~/oai
    # source oaienv
    # cd cmake_targets/ran_build/build
    # ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf --gNBs.[0].min_rxtxtime 6 --sa --usrp-tx-thread-config 1
    
  10. Starting nrUE: In the UE container, run the OAI nrUE using the following commands.

    # cd ~/openairinterface5g
    # source oaienv
    # cd cmake_targets/ran_build/build
    # ./nr-uesoftmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/ue.conf -r 106 --numerology 1 --band 78 -C 3604800000 --ue-fo-compensation --sa -E --ue-txgain 0 --nokrnmod 1
    

    In case of error or UE not connecting to gNB, refer FAQ.

  11. Starting nearRT-RIC: In a second terminal of the gNB container, start the nearRT-RIC using the following commands.

    # cd flexric
    # ./build/examples/ric/nearRT-RIC
    

    The console trace when the flexRIC starts is shown below:

    ../_images/flexRIC.png
  12. Starting KPM monitor xApp: In a third terminal of the gNB container, start the KPM monitor xApp using the following commands.

    # cd flexric
    # ./build/examples/xApp/c/monitor/xapp_kpm_moni
    

    The console trace when the KPM monitor xApp starts is shown below.

    ../_images/KPM_xApp.png
  13. Starting GTP monitor xApp: In a fourth terminal of the gNB container, start the (MAC + RLC + PDCP) monitor xApp using the following commands.

    # cd flexric
    # ./build/examples/xApp/c/monitor/xapp_gtp_moni
    

    The console trace when the GTP monitor xApp starts is shown below.

    ../_images/gtp_xApp.png
  14. Starting (MAC + RLC + PDCP) monitor xApp: In a fifth terminal of the gNB container, start the (MAC + RLC + PDCP) monitor xApp using the following commands.

    # cd flexric
    # ./build/examples/xApp/c/monitor/xapp_mac_rlc_pdcp_moni
    

    The console trace when the MAC_RLC_PDCP monitor xApp starts is shown below.

    ../_images/pdcp_xApp.png

    Console traces for gNB and nrUE on different events.

    gNB when flexRIC starts

    ../_images/gnb_flexRIC.png

    gNB when connection with nrUE is established

    ../_images/gnb_UE_attaches.png

    nrUE when connection with gNB is established

    ../_images/nrUE_terminal.png