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 eNB, follow these instructions.

 1. Build the eNB  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

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

Step 5: On the UE - Download and install the latest srsLTE code

git clone https://github.com/srsLTE/srsLTE.git
cd srsLTE
mkdir build
cd build
cmake ../
make
sudo make install

srslte_install_configs.sh user

Edit the ue.conf  file

Make sure the following parameters are set.

vi /home/iristest/.config/srslte/ue.conf
dl_earfcn = 3400

[usim]
mode = soft
algo = milenage
opc = 63bfa50ee6523365ff14c1f45f88737d
k = 00112233445566778899aabbccddeeff
imsi = 001010123456780
imei = 353490069873319

 

Step 6: 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 valid IP addresses for Magma EPC and OAI ENB
vi my-enb.band7.tm1.25PRB.usrpb210.conf
iristest@enb:~/openairinterface5g/ci-scripts/conf_files$ diff enb.band7.tm1.25PRB.usrpb210.conf my-enb.band7.tm1.25PRB.usrpb210.conf
17c17
<     plmn_list = ( { mcc = 208; mnc = 92; mnc_length = 2; } );
---
>     plmn_list = ( { mcc = 001; mnc = 01; mnc_length = 2; } );
36c36
<       downlink_frequency      			      = 2680000000L;
---
>       downlink_frequency      			      = 2685000000L;
177c177
<     mme_ip_address      = ( { ipv4       = "CI_MME_IP_ADDR";
---
>     mme_ip_address      = ( { ipv4       = "10.154.50.75";
194c194
<         ENB_IPV4_ADDRESS_FOR_S1_MME              = "CI_ENB_IP_ADDR";
---
>         ENB_IPV4_ADDRESS_FOR_S1_MME              = "10.154.50.69";
196c196
<         ENB_IPV4_ADDRESS_FOR_S1U                 = "CI_ENB_IP_ADDR";
---
>         ENB_IPV4_ADDRESS_FOR_S1U                 = "10.154.50.69";
198c198
<         ENB_IPV4_ADDRESS_FOR_X2C                 = "CI_ENB_IP_ADDR";
---
>         ENB_IPV4_ADDRESS_FOR_X2C                 = "10.154.50.69";
250c250
<     FLEXRAN_IPV4_ADDRESS   = "CI_MME_IP_ADDR";
---
>     FLEXRAN_IPV4_ADDRESS   = "10.154.50.75";
iristest@enb:~/openairinterface5g/ci-scripts/conf_files$ 


# 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 --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.

Step 7: Start the srsLTE UE (precompiled on the git version)

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

Start srsUE

On machine 2 (x310ue), run srsUE as follows:

sudo srsue

On UE run the following command. This will ping the SPGW gateway:

ping 172.16.0.1


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