Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
openairinterface5G
openairinterface5G
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Merge Requests 24
    • Merge Requests 24
  • Analytics
    • Analytics
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Members
    • Members
  • Activity
  • Graph
  • Commits
Collapse sidebar
  • oai
  • openairinterface5Gopenairinterface5G
  • Wiki
  • HowToConnectOAIENBWithOAIUEWithoutS1Interface

Last edited by Raphael Defosseux Sep 03, 2019
Page history

HowToConnectOAIENBWithOAIUEWithoutS1Interface

How to Connect OAI eNB (USRP B210) with OAI UE (USRP B210) without S1 Interface

This tutorial is intended to setup the OAI eNB and OAI UE without the S1 interface and allowing the UE to connect with eNB. You need 2 Ubuntu machines.

This tutorial has been updated after the master branch release (tag v1.1.0) (July 2019).

This tutorial is heavily based on the way the OAI RAN CI job is running. See Jenkins job.

The procedures includes the following:

  1. HW setup
  2. Installing, Building the OAI eNB and the OAI UE
    1. Installation of the eNB on the 1st Ubuntu Machine
    2. Installation of the UE on the 2nd Ubuntu Machine
  3. Running OAI eNB and OAI UE with tunnel interfaces
    1. Starting the eNB on the 1st Ubuntu Machine
    2. Starting the UE on the 2nd Ubuntu Machine
  4. Running OAI eNB and OAI UE with the nasmesh kernel module
    1. Starting the eNB on the 1st Ubuntu Machine
    2. Starting the UE on the 2nd Ubuntu Machine
  5. Network Testing between OAI eNB and OAI UE in tunnel version.
    1. Ping Testing
    2. Iperf Testing

1. HW setup

The two following configurations has been tested (use either one or the other) :

HW_config

HW_config_Lab

The attenuation between UE and eNB should be adjusted between 40 and 60 dB. You can start with 50 and in function of what is seen in the scope it should be adjusted.

The OAI CI Bench setup does not have attenuators.

2. Installing and Building the OAI eNB and the OAI UE

2.1 Installation of the eNB on the 1st Ubuntu Machine

Step 1: Check out the GIT trunk version of OAI

Download the source codes using GitLab:

mkdir -p ~/openairinterface5g

The instruction can be found at: Get the Sources.

Step 2: Run Automated Build Script for eNB

Build the eNB supporting B210:

cd ~/openairinterface5g/
# Retrieve the latest version of the `master` branch
git checkout master
# or Retrieve the tag used to write this tutorial
git checkout v1.1.0
source oaienv
cd cmake_targets
# no more need to specify noS1 as build option
./build_oai -w USRP --eNB

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

Please refer to Build documentation if you run into problems.

2.2 Installation of the UE on the 2nd Ubuntu Machine

Build the UE supporting B210:

cd ~/openairinterface5g
# Retrieve the latest version of the `master` branch
git checkout master
# or Retrieve the tag used to write this tutorial
git checkout v1.1.0
source oaienv
cd cmake_targets
./build_oai -w USRP --UE

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

3. Running OAI eNB and OAI UE with tunnel interfaces

NOTE: this is now the preferred and fully validated way

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

3.1 Starting the eNB on the 1st Ubuntu Machine

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
vi my-enb.band7.tm1.25PRB.usrpb210.conf
cd ~/openairinterface5g/cmake_targets
sudo -E ./lte_build_oai/build/lte-softmodem -O ~/openairinterface5g/ci-scripts/conf_files/ci-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.

3.2 Starting the UE on the 2nd Ubuntu Machine

cd ~/openairinterface5g/cmake_targets/lte_build_oai/build
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.

4. Running OAI eNB and OAI UE with the nasmesh kernel module

CAUTION: this way is supposed to work but is no longer validated by the CI process. So it may not work at some point

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: 2660MHz, UL: 2540MHz).

4.1 Starting the eNB on the 1st Ubuntu Machine

Step 1: Loading the nasmesh Kernel Module and Setup the OAI Interface

Loading the nasmesh.ko to setup the radio bearer and providing the IP connectivity between eNB and attached UE.

cd ~/openairinterface5g/
source oaienv
source ./cmake_targets/tools/init_nas_nos1 eNB

You should now have the oai0 interface with IP address 10.0.1.1 netmask 255.255.255.0. (ifconfig to verify)

Note: In case that you are not able to load the nasmesh.ko, please make sure that OPENAIR_DIR is correctly set in the script.

Step 2: Running the eNB

The command of running the eNB should be as follow:

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

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

By using --nokrnmod 0 option, it forces the usage of the nasmesh kernel module.

Note: We have put a duplexer in the eNB to avoid background noise closed to saturating the receiver. You should get the noise floor similar to the diagram as shown below:

eNB-noise-floor-1.png

4.2 Starting the UE on the 2nd Ubuntu Machine

Step 1: Loading the nasmesh Kernel Module and Setup the OAI Interface

Loading the nasmesh.ko to setup the radio bearer and providing the IP connectivity between eNB and attached UE.

cd ~/openairinterface5g/
source ./targets/bin/init_nas_nos1 UE

You should now have the oai0 interface with IP address 10.0.1.9 netmask 255.255.255.0.

Note: In case that you are not able to load the nasmesh.ko, please make sure that OPENAIR_DIR is correctly set in the script.

Step 2: Running the UE

The command of running the UE should be as follow:

cd ~/openairinterface5g/cmake_targets/lte_build_oai/build
sudo ./lte-uesoftmodem -C 2680000000 -r 25 --ue-rxgain 120 --ue-txgain 0 --ue-max-power 0 --ue-scan-carrier --nokrnmod 0 --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.

4.3 Results of Successful UE attached to eNB

CAUTION: this section and the associated log files have NOT been updated.

If the user is successfully attached to the eNB, you should observe the RRCConnectionReconfigurationComplete message sent by the UE and the UE state is RRC_RECONFIGURED. The example of the UE log file can be found at UE.log.

The eNB will also indicate that the receiving of RRCConnectionReconfigurationComplete message from the UE and the UE state is moved to RRC_RECONFIGURED. The example of the eNB log file with OAI UE successfully attached can be found at ENB.log.

When there is traffic going on between the UE and the eNB, the following stats, L2 stats and LTE UL Scope can be observed:

LTE UL Scope eNB:

LTEULScopeL.png

Stats:

LTEStats.png

L2 Stats:

LTEl2Stats.png

When there is traffic going on between the UE and the eNB, the following stats and LTE DL Scope UE can be observed:

LTE DL Scope UE:

LTEDLScopeL.png

Stats:

LTEDLStatsL.png

5. Network Testing between OAI eNB and OAI UE in tunnel version

Once the UE is attached to the eNB, you should able to do simple ping tests or iperf tests.

5.1 Ping Testing

Step 1: Ping from UE to eNB

Open the terminal and type the 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 somethings, like that:

PING 10.0.1.1 (10.0.1.1) from 10.0.1.2 oaitun_ue1: 56(84) bytes of data.
64 bytes from 10.0.1.1: icmp_seq=1 ttl=64 time=25.6 ms
64 bytes from 10.0.1.1: icmp_seq=2 ttl=64 time=23.9 ms
64 bytes from 10.0.1.1: icmp_seq=3 ttl=64 time=22.9 ms
64 bytes from 10.0.1.1: icmp_seq=4 ttl=64 time=21.9 ms
64 bytes from 10.0.1.1: icmp_seq=5 ttl=64 time=20.9 ms
64 bytes from 10.0.1.1: icmp_seq=6 ttl=64 time=19.9 ms
64 bytes from 10.0.1.1: icmp_seq=7 ttl=64 time=18.9 ms
64 bytes from 10.0.1.1: icmp_seq=8 ttl=64 time=17.9 ms
64 bytes from 10.0.1.1: icmp_seq=9 ttl=64 time=23.9 ms
64 bytes from 10.0.1.1: icmp_seq=10 ttl=64 time=26.0 ms
64 bytes from 10.0.1.1: icmp_seq=11 ttl=64 time=25.0 ms
64 bytes from 10.0.1.1: icmp_seq=12 ttl=64 time=24.3 ms
64 bytes from 10.0.1.1: icmp_seq=13 ttl=64 time=22.9 ms
64 bytes from 10.0.1.1: icmp_seq=14 ttl=64 time=21.9 ms
64 bytes from 10.0.1.1: icmp_seq=15 ttl=64 time=20.9 ms
64 bytes from 10.0.1.1: icmp_seq=16 ttl=64 time=19.9 ms
64 bytes from 10.0.1.1: icmp_seq=17 ttl=64 time=18.9 ms
64 bytes from 10.0.1.1: icmp_seq=18 ttl=64 time=17.9 ms
64 bytes from 10.0.1.1: icmp_seq=19 ttl=64 time=23.9 ms
64 bytes from 10.0.1.1: icmp_seq=20 ttl=64 time=25.9 ms

--- 10.0.1.1 ping statistics ---
20 packets transmitted, 20 received, 0% packet loss, time 19019ms
rtt min/avg/max/mdev = 17.976/22.238/26.003/2.583 ms

Step 2: Ping from eNB to UE

Open the terminal and type the 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, like that:

PING 10.0.1.2 (10.0.1.2) from 10.0.1.1 oaitun_enb1: 56(84) bytes of data.
64 bytes from 10.0.1.2: icmp_seq=1 ttl=64 time=34.8 ms
64 bytes from 10.0.1.2: icmp_seq=2 ttl=64 time=32.9 ms
64 bytes from 10.0.1.2: icmp_seq=3 ttl=64 time=32.0 ms
64 bytes from 10.0.1.2: icmp_seq=4 ttl=64 time=30.9 ms
64 bytes from 10.0.1.2: icmp_seq=5 ttl=64 time=29.9 ms
64 bytes from 10.0.1.2: icmp_seq=6 ttl=64 time=29.0 ms
64 bytes from 10.0.1.2: icmp_seq=7 ttl=64 time=27.9 ms
64 bytes from 10.0.1.2: icmp_seq=8 ttl=64 time=26.9 ms
64 bytes from 10.0.1.2: icmp_seq=9 ttl=64 time=26.0 ms
64 bytes from 10.0.1.2: icmp_seq=10 ttl=64 time=26.9 ms
64 bytes from 10.0.1.2: icmp_seq=11 ttl=64 time=25.9 ms
64 bytes from 10.0.1.2: icmp_seq=12 ttl=64 time=24.9 ms
64 bytes from 10.0.1.2: icmp_seq=13 ttl=64 time=24.0 ms
64 bytes from 10.0.1.2: icmp_seq=14 ttl=64 time=22.9 ms
64 bytes from 10.0.1.2: icmp_seq=15 ttl=64 time=21.9 ms
64 bytes from 10.0.1.2: icmp_seq=16 ttl=64 time=20.9 ms
64 bytes from 10.0.1.2: icmp_seq=17 ttl=64 time=19.9 ms
64 bytes from 10.0.1.2: icmp_seq=18 ttl=64 time=18.9 ms
64 bytes from 10.0.1.2: icmp_seq=19 ttl=64 time=17.9 ms
64 bytes from 10.0.1.2: icmp_seq=20 ttl=64 time=23.9 ms

--- 10.0.1.2 ping statistics ---
20 packets transmitted, 20 received, 0% packet loss, time 19019ms
rtt min/avg/max/mdev = 17.975/25.987/34.884/4.632 ms

5.2 Iperf Testing

UDP Test from UE to eNB

Open the terminal in eNB and type the iperf -B 10.0.1.1 -u -s -i 1 -fm.

Next, open the terminal in UE and type the iperf -c 10.0.1.1 -u -b 8.00M -t 30 -i 1 -fm -B 10.0.1.2. 8.00M means 8Mbps UDP throughput generated from UE to eNB.

The following results can be observed:

iperf result (10.0.1.2)
   Req Bitrate : 8.0 Mbits/sec
   Bitrate     : 7.97 Mbits/sec
   Bitrate Perf: 99.62 %
   Packet Loss : 0.16%
   Jitter      : 0.497 ms

UDP Test from eNB to UE

Open the terminal in UE and type the iperf -B 10.0.1.2 -u -s -i 1 -fm.

Next, open the terminal in eNB and type the iperf -c 10.0.1.2 -u -b 14.00M -t 30 -i 1 -fm -B 10.0.1.1. 14.00M means 14Mbps UDP throughput generated from eNB to UE.

The following results can be observed:

iperf result (10.0.1.2)
   Req Bitrate : 14.0 Mbits/sec
   Bitrate     : 14.0 Mbits/sec
   Bitrate Perf: 100.00 %
   Packet Loss : 0.0028%
   Jitter      : 0.257 ms

Attachments

  • ENB.log
  • eNB-noise-floor-1.png
  • LTEDLScopeL.png
  • LTEDLStatsL.png
  • LTEl2Stats.png
  • LTEStats.png
  • LTEULScopeL.png
  • UE.log
  • USRPduplexer.jpg
  • USRPduplexer.png
Clone repository
  • 5g nr development and setup
  • ALUProject
  • AskQuestions
  • AutoBuild
  • CBMIMO1Integ
  • CardList
  • Cbmimo1Flash
  • Chorist3Nodes
  • ChoristMplsIPv6072008
  • Configure_simplestreams_for_a_private_cloud
  • CoreBasebandAndRF
  • CoreNetworking
  • DebugTools
  • DeployOpenStackHeat
  • DisablingInterrupts
View All Pages