The following steps are adapted for the Iris Testbed from the following OAI URL: https://gitlab.eurecom.fr/oai/openairinterface5g/-/wikis/HowToConnectOAIENBWithOAIUEWithoutS1Interface

To prepare the Base Ubuntu 18.04 (low-latency) Image instantiated in this jfed experiment at the Iris testbed, we followed the instructions on the following URL from ETTUS Research:  https://kb.ettus.com/Getting_Started_with_4G_LTE_using_Eurecom_OpenAirInterface_(OAI)_on_the_USRP_2974 

Step 1 (for new experimenters): Download and install jFed software

Instructions here: https://jfed.ilabt.imec.be/get_started/

Step 2 (for new experimenters): Request A Fed4FIRE+ Account

If you do not have a jfed account, please register at the following URL.

https://doc.fed4fire.eu/getanaccount.html

This information from IMEC should also be useful: https://doc.ilabt.imec.be/ilabt/virtualwall/getting_started.html#getting-an-account

Step 3: OAI 5G RSPEC for 2 VM instance at the Iris testbed

Copy and paste this rspec into jfed. This rspec supports the instantiation of two VM instances at the Iris testbed

<?xml version='1.0'?>
<rspec xmlns="http://www.geni.net/resources/rspec/3" type="request" generated_by="jFed RSpec Editor" generated="2020-07-10T13:24:25.756+01:00" xmlns:emulab="http://www.protogeni.net/resources/rspec/ext/emulab/1" xmlns:delay="http://www.protogeni.net/resources/rspec/ext/delay/1" xmlns:jfed-command="http://jfed.iminds.be/rspec/ext/jfed-command/1" xmlns:client="http://www.protogeni.net/resources/rspec/ext/client/1" xmlns:jfed-ssh-keys="http://jfed.iminds.be/rspec/ext/jfed-ssh-keys/1" xmlns:jfed="http://jfed.iminds.be/rspec/ext/jfed/1" xmlns:sharedvlan="http://www.protogeni.net/resources/rspec/ext/shared-vlan/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.geni.net/resources/rspec/3 http://www.geni.net/resources/rspec/3/request.xsd ">
  <node client_id="eNB" exclusive="false" component_manager_id="urn:publicid:IDN+iris-open-testbed.connectcentre.ie+authority+am">
    <sliver_type name="vm">
      <disk_image name="urn:publicid:IDN+iris-open-testbed.connectcentre.ie+image+oai5g_ubuntu-18.04-5.3.0-62-lowlatency-oai-latest-07-07-2020"/>
      <flavor_type xmlns="http://iris-testbed.connectcentre.ie/rspec/ext/openstack/1" name="m1.oai.performance.7cpu.25gb-ram"/>
    </sliver_type>
    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1" x="210.0" y="100.5"/>
  </node>
  <node client_id="UE" exclusive="false" component_manager_id="urn:publicid:IDN+iris-open-testbed.connectcentre.ie+authority+am">
    <sliver_type name="vm">
      <disk_image name="urn:publicid:IDN+iris-open-testbed.connectcentre.ie+image+oai5g_ubuntu-18.04-5.3.0-62-lowlatency-oai-latest-07-07-2020"/>
      <flavor_type xmlns="http://iris-testbed.connectcentre.ie/rspec/ext/openstack/1" name="m1.oai.performance.7cpu.25gb-ram-b210"/>
    </sliver_type>
    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1" x="212.0" y="193.5"/>
  </node>
</rspec>

 

Step 4: Download and install the latest OAI5G code [NOTE: always get the latest code]

To compile the latest code from OAI5G, follow these instructions.

 1. Build the eNB and UE supporting B210:

git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git
cd ~/openairinterface5g/ 
cd openairinterface5g
source oaienv
cd cmake_targets
# no need to specify noS1 as build option
./build_oai -w USRP --eNB --UE

This should start the building process in ~/openairinterface4g/cmake_targets/lte_build_oai.

 

Step 5: Start the OAI eNodeB (precompiled on the git version). 

The setup should be started with running the OAI eNB first before running the OAI UE. Both OAI eNB and OAI UE are running on LTE FDD Band 7 (DL: 2680MHz, UL: 2560MHz).

Open the ssh terminal in jFed on the eNB node and execute the following instructions:

cd ~/openairinterface5g 
source oaienv
cd ~/openairinterface5g/ci-scripts/conf_files
cp enb.band7.tm1.25PRB.usrpb210.conf my-enb.band7.tm1.25PRB.usrpb210.conf
# edit the conf file by replacing all `CI_*IP_ADDR` pattern with a dummy IP address such as 192.168.5.1
vi my-enb.band7.tm1.25PRB.usrpb210.conf

# ensure no LTE session already running
sudo kill -9 `ps aux | grep -ie lte | awk '{print $2}' `

cd ~/openairinterface5g/cmake_targets
sudo -E ./lte_build_oai/build/lte-softmodem -O ~/openairinterface5g/ci-scripts/conf_files/my-enb.band7.tm1.25PRB.usrpb210.conf --nokrnmod 1 --noS1 --eNBs.[0].rrc_inactivity_threshold 0 2>&1 | tee ENB.log

By running eNB with pipes tee ENB.log, it allows you to record the ENB logging to be used for further investigation.

By setting rrc_inactivity_threshold to 0, it disables the RRC Inactivity timers. This is mandatory with this configuration file.

By using --nokrnmod 1 option, it forces the usage of the tunnel interface. Once the eNB is up, you can check by typing ifconfig to see if the oaitun_enb1 is mounted. It shall have the 10.0.1.1 IP address

ifconfig oaitun_enb1

Step 6: Start the OAI UE (precompiled on the git version)

Open the ssh terminal in jFed on the UE node and execute the following instructions:

cd ~/openairinterface5g/cmake_targets/lte_build_oai/build

#ensure no UE session already running
sudo kill -9 `ps aux | grep -ie lte | awk '{print $2}' `

sudo ./lte-uesoftmodem -C 2680000000 -r 25 --ue-rxgain 120 --ue-txgain 0 --ue-max-power 0 --ue-scan-carrier --nokrnmod 1 --noS1 2>&1 | tee UE.log

By running UE with pipes tee UE.log, allow you to record the UE logging to be used for further investigation.

It is mandatory to run from the build folder, so the executable can read the USIM files.

By using --nokrnmod 1 option, it forces the usage of the tunnel interface. Once the UE is attached to the eNB, you can check by typing ifconfig to see if the oaitun_ue1 is mounted. It shall have the 10.0.1.2 IP address. This is important. If the interface does not get a connection, the air link is not available. 

ifconfig oaitun_ue1

Step 7: Network Testing between OAI eNB and OAI UE in tunnel version (Ping from UE to eNB)

Open the UE terminal and type the the following command:

ping -I oaitun_ue1 -c 20 10.0.1.1

This means sending 20 ICMP echo request packets from UE to eNB and expecting ICMP echo reply packets from eNB to UE.

You should see something similar to the following:

example....

Step 8: Network Testing between OAI eNB and OAI UE in tunnel version (Ping from eNB to UE)

Open the eNB terminal and type the following command.

ping -I oaitun_enb1 -c 20 10.0.1.2

This means sending 20 ICMP echo request packets from eNB to UE and expecting ICMP echo reply packets from UE to eNB.

You should see somethings to the following:

example....

Step 9: iPerf testing - UDP Test from UE to eNB

Open the terminal in eNB and type the following command:

iperf -B 10.0.1.1 -u -s -i 1 -fm

Next, open the terminal in UE and type the following command:

iperf -c 10.0.1.1 -u -b 8.00M -t 30 -i 1 -fm -B 10.0.1.2

This command sends 8Mbps UDP throughput generated from UE to eNB.

Step 10: iPerf testing - UDP Test from eNB to UE

Open the terminal in UE and type the following command:

iperf -B 10.0.1.2 -u -s -i 1 -fm

Next, open the terminal in eNB and type the following command:

iperf -c 10.0.1.2 -u -b 8.00M -t 30 -i 1 -fm -B 10.0.1.1

This command sends 8Mbps UDP throughput generated from eNB to the UE.

 

Troubleshooting Issues

Reboot USB device

Example Error: 

[INFO] [B200] Loading firmware image: /usr/share/uhd/images/usrp_b200_fw.hex...

[ERROR] [UHD] Device discovery error: EnvironmentError: IOError: Could not load firmware:

EnvironmentError: IOError: ihex_reader::read(): record hander returned failure code

Error opening UHD: code 11

/home/srslte/srsLTE/lib/src/phy/rf/rf_imp.c.130: No compatible RF frontend found

/home/srslte/srsLTE/lib/src/radio/radio.cc.36: Error opening RF device

Example Solution: 

iristest@enb:~/openairinterface5g/cmake_targets/lte_build_oai/build$ dmesg | grep USRP

[    2.467667] usb 3-1: Product: USRP B200

echo '3-1' |sudo tee /sys/bus/usb/drivers/usb/unbind

echo '3-1' |sudo tee /sys/bus/usb/drivers/usb/bind

Benchmark Test USRP device [send results to ]

cd /usr/local/lib/uhd/examples/

./benchmark_rate --rx_rate 10e6 --tx_rate 10e6 --duration 300