|
|
---+ 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 allowed the UE to connect to eNB. You need 2 Ubuntu machine and svn version r7753 of OAI for this tutorial.
|
|
|
|
|
|
The procedures includes the following:
|
|
|
1 Build the eNB without S1 interface in 1st Ubuntu machine.
|
|
|
1 Build the UE without S1 interface in 2nd Ubuntu machine.
|
|
|
1 Bring up the OAI Interface.
|
|
|
1 Run the eNB.
|
|
|
1 Run the UE.
|
|
|
1 Once UE attched to eNB, do some throughput test or ping.
|
|
|
%TOC%
|
|
|
---++ 1. Installing, Building and Running the OAI eNB and the OAI UE without S1 Interface
|
|
|
|
|
|
Checklist prior to OAI installation:
|
|
|
* Ubuntu 14.04 LTS (32-bit or 64-bit)
|
|
|
* [[OpenAirKernelMainSetup][Kernel setup ]]
|
|
|
* Disable C-states from BIOS (or from GRUB)
|
|
|
* Disable CPU freq. scaling
|
|
|
* Install low-latency kernel
|
|
|
* Install _subversion_ with the command:
|
|
|
* __sudo apt-get install subversion__ for SVN version
|
|
|
* Install _git_ with the command:
|
|
|
* __sudo apt-get install git__ for GIT version.
|
|
|
* Install UHD driver for USRP Hardware B210 using the following commands:
|
|
|
* <div id="_mcePaste"> __sudo bash -c 'echo "deb http://files.ettus.com/binaries/uhd/repo/uhd/ubuntu/`lsb_release -cs` `lsb_release -cs` main" > /etc/apt/sources.list.d/ettus.list'__ </div>
|
|
|
* <div id="_mcePaste"> __sudo apt-get install -t `lsb_release -cs` uhd__ </div>
|
|
|
* <div id="_mcePaste"> __sudo apt-get update__ </div>
|
|
|
* __Run Autobuild for installing missing packages:__
|
|
|
* <em>The insructions are here,</em><span style="color: #7a4707; font-size: 10px; background-color: transparent;"><a href="AutoBuild" title="https://twiki.eurecom.fr/twiki/bin/view/OpenAirInterface/AutoBuild">https://twiki.eurecom.fr/twiki/bin/view/OpenAirInterface/AutoBuild</a></span>
|
|
|
Note: UHD related information can be found at<em>: </em>http://files.ettus.com/manual/page_install.html#install_linux
|
|
|
---+++ 1.1 Installation eNB on 1st Ubuntu Machine
|
|
|
---++++ Step 1: Check out the GIT trunk version of OAI
|
|
|
|
|
|
Download the source codes using gitlab:
|
|
|
<pre>mkdir -p ~/openairinterface5g
|
|
|
|
|
|
</pre> <pre><span style="color: #000000; font-size: small; white-space: normal;">The instruction can be found at:</span></pre> <pre><a href="GetSources" title="https://twiki.eurecom.fr/twiki/bin/view/OpenAirInterface/GetSources">https://twiki.eurecom.fr/twiki/bin/view/OpenAirInterface/GetSources</a></pre>
|
|
|
|
|
|
---++++ Step 2: Run Automated Build Script for eNB without S1 Interface
|
|
|
|
|
|
Build the eNB supporting B210:
|
|
|
<pre>cd ~/openairinterface5g/
|
|
|
source oaienv</pre> <pre>cd cmake_targets
|
|
|
./build_oai -w USRP --eNB --noS1 -x</pre>
|
|
|
|
|
|
This should starts the building process in ~/openairinterface4g/cmake_targets/lte_noS1_build_oai.
|
|
|
|
|
|
* Please refer the AutoBuild if you run into problem, here:
|
|
|
<pre>https://twiki.eurecom.fr/twiki/bin/view/OpenAirInterface/AutoBuild</pre>
|
|
|
|
|
|
---+++ 1.2 Installation UE on 2nd Ubuntu Machine
|
|
|
---++++ Step 1: Check out the GIT trunk version of OAI
|
|
|
|
|
|
Download the source codes using gitlab:
|
|
|
<pre>mkdir -p ~/openairinterface5g</pre> <pre><span style="color: #000000; font-size: small; white-space: normal;">The instruction can be found at:</span></pre> <pre>https://twiki.eurecom.fr/twiki/bin/view/OpenAirInterface/GetSources</pre>
|
|
|
|
|
|
---++++ Step 2: Run Automated Build Script for UE without S1 Interface
|
|
|
|
|
|
Build the UE supporting B210:
|
|
|
<pre>cd ~/openairinterface5g
|
|
|
source oaienv
|
|
|
cd cmake_targets
|
|
|
./build_oai -w USRP --UE --noS1 -x</pre>
|
|
|
|
|
|
This should starts the building process in ~/openairinterface4g/cmake_targets/lte_noS1_build_oai.
|
|
|
|
|
|
* Please refer the AutoBuild if you run into problem, here:
|
|
|
<pre>https://twiki.eurecom.fr/twiki/bin/view/OpenAirInterface/AutoBuild</pre>
|
|
|
|
|
|
---++ 2. Running OAI eNB and OAI UE without S1 Interface
|
|
|
|
|
|
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 5 (DL: 875MHz, UL: 830MHz).
|
|
|
---+++ 2.1 Run eNB on 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.
|
|
|
<pre>cd ~/openairinterface5g/
|
|
|
source oaienv
|
|
|
source ./cmake_targets/tools/init_nas_nos1 eNB
|
|
|
</pre>
|
|
|
|
|
|
You should now have the _oai0_ interface with IP address 10.0.1.1 netmask 255.255.255.0.
|
|
|
|
|
|
<strong>Note: </strong>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:
|
|
|
<pre>cd cmake_targets</pre> <pre>sudo -E ./lte_noS1_build_oai/build/lte-softmodem-nos1 -d -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf 2>&1 | tee ENB.log</pre>
|
|
|
|
|
|
By running eNB with pipes "tee ENB.log", allow you to record the ENB logging to be used for further investigation.
|
|
|
|
|
|
<strong>Note: </strong>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:
|
|
|
<pre><img alt="eNB-noise-floor-1.png" src="https://twiki.eurecom.fr/twiki/pub/Sandbox/TestTopic1/eNB-noise-floor-1.png" /></pre>
|
|
|
|
|
|
The eNB's configuration file used for the testing can be found at [[%ATTACHURL%/enb.band5.tm1.usrpb210.conf][enb.band5.tm1.usrpb210.conf]].
|
|
|
---+++ 2.2 Run UE on 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.
|
|
|
<pre>cd ~/openairinterface5g/
|
|
|
source ./targets/bin/init_nas_nos1 UE
|
|
|
</pre>
|
|
|
|
|
|
You should now have the _oai0_ interface with IP address 10.0.1.9 netmask 255.255.255.0.
|
|
|
|
|
|
<strong>Note: </strong>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:
|
|
|
<pre>cd cmake_targets
|
|
|
|
|
|
sudo -E ./lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2680000000 -r25 --ue-scan-carrier --ue-txgain 70 --ue-rxgain 80 -d >&1 | tee UE.log
|
|
|
|
|
|
</pre>
|
|
|
|
|
|
By running UE with pipes "tee UE.log", allow you to record the UE logging to be used for further investigation.
|
|
|
|
|
|
For the UE to able to sync with eNB, the timing advance needs to set 0 in FDD Band 5. (openair_daq_vars.timing_advance = 0). That patch can be found at [1] and use "-A 0" for setting timing advance to 0.
|
|
|
---+++ 2.3 Results of Successful UE attached to eNB
|
|
|
|
|
|
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 [[%ATTACHURL%/UE.log][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 [[%ATTACHURL%/ENB.log][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:
|
|
|
|
|
|
<img alt="LTEULScopeL.png" src="https://twiki.eurecom.fr/twiki/pub/OpenAirInterface/HowToConnectOAIENBWithOAIUEWithoutS1Interface/LTEULScopeL.png" />
|
|
|
|
|
|
Stats:
|
|
|
|
|
|
<img alt="LTEStats.png" src="https://twiki.eurecom.fr/twiki/pub/OpenAirInterface/HowToConnectOAIENBWithOAIUEWithoutS1Interface/LTEStats.png" />
|
|
|
|
|
|
L2 Stats:
|
|
|
|
|
|
<img alt="LTEl2Stats.png" src="https://twiki.eurecom.fr/twiki/pub/OpenAirInterface/HowToConnectOAIENBWithOAIUEWithoutS1Interface/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:
|
|
|
|
|
|
<img alt="LTEDLScopeL.png" src="https://twiki.eurecom.fr/twiki/pub/OpenAirInterface/HowToConnectOAIENBWithOAIUEWithoutS1Interface/LTEDLScopeL.png" />
|
|
|
|
|
|
Stats:
|
|
|
|
|
|
<img alt="LTEDLStatsL.png" src="https://twiki.eurecom.fr/twiki/pub/OpenAirInterface/HowToConnectOAIENBWithOAIUEWithoutS1Interface/LTEDLStatsL.png" />
|
|
|
---++ 3. Network Testing between OAI eNB and OAI UE without S1 Interface
|
|
|
|
|
|
Once the UE is attached to the eNB, you should able to do simple ping test or iperf test.
|
|
|
---+++ 3.1 Ping Test
|
|
|
---++++ Step 1: Ping from UE to eNB
|
|
|
|
|
|
Open the terminal and type the "ping 10.0.1.1 -c 10". This means sending 10 ICMP echo request packets from UE to eNB and expecting ICMP echo reply packets from eNB to UE.
|
|
|
|
|
|
You should see somethings, like that:
|
|
|
|
|
|
<img alt="PING-UE-eNB.png" src="https://twiki.eurecom.fr/twiki/pub/Sandbox/ChunYeowYeohSandbox/PING-UE-eNB.png" />
|
|
|
---++++ Step 2: Ping from eNB to UE
|
|
|
|
|
|
Open the terminal and type the "ping 10.0.1.9 -c 10". This means sending 10 ICMP echo request packets from eNB to UE and expecting ICMP echo reply packets from UE to eNB.
|
|
|
|
|
|
You should see somethings, like that:
|
|
|
|
|
|
<img alt="PING-eNB-UE.png" src="https://twiki.eurecom.fr/twiki/pub/Sandbox/ChunYeowYeohSandbox/PING-eNB-UE.png" />
|
|
|
---+++ 3.2 Iperf Test
|
|
|
---++++ UDP Test from UE to eNB
|
|
|
|
|
|
Open the terminal in eNB and type the "iperf -s -i 1 -u".
|
|
|
|
|
|
Next, open the terminal in UE and type the "iperf -c 10.0.1.1 -i 1 -u -t 10 -b 1M". 1M means 1Mbps UDP throughput generated from UE to eNB.
|
|
|
|
|
|
The following results can be observed:
|
|
|
|
|
|
<img alt="IPerf-ENB.png" src="https://twiki.eurecom.fr/twiki/pub/Sandbox/ChunYeowYeohSandbox/IPerf-ENB.png" />
|
|
|
|
|
|
<img alt="IPerf-UE.png" src="https://twiki.eurecom.fr/twiki/pub/Sandbox/ChunYeowYeohSandbox/IPerf-UE.png" />
|
|
|
---++ Duplex and Antenna:
|
|
|
|
|
|
The picture of antenna [3] used for this testing and duplexer as follow:
|
|
|
|
|
|
<img alt="USRPduplexer.png" src="https://twiki.eurecom.fr/twiki/pub/OpenAirInterface/HowToConnectOAIENBWithOAIUEWithoutS1Interface/USRPduplexer.png" />
|
|
|
<h2>
|
|
|
|
|
|
<span style="font-size: 19.8899993896484px; line-height: 1em;">Bugs:</span>
|
|
|
</h2>
|
|
|
|
|
|
[1] If you encounter the following errors reported by , please switch to the svn trunk version 7763:
|
|
|
|
|
|
<span style="color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">[PHY][I][pbch_detection] [UE0] Initial sync: starting PBCH detection (rx_offset 71032)</span><span style="color: #500050; font-family: arial, sans-serif; font-size: 12.8000001907349px;"><br />Program received signal SIGILL, Illegal instruction.<br /></span><span style="color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">[Switching to Thread 0x7fffd7fff700 (LWP 18558)]</span><br /><span style="color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">multadd_real_vector_complex_</span><span style="color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">scalar (x=x@entry=0xb97bc0 <filt24_0>, alpha=alpha@entry=</span><span style="color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">0x7fffd7ffe1f0,</span><br /><span style="color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> y=y@entry=0x354d91f0, N=N@entry=24) at /home/openairlte/openair4G/</span><span style="color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">openair1/PHY/TOOLS/cmult_sv.c:</span><span style="color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">94</span><br /><span style="color: #500050; font-family: arial, sans-serif; font-size: 12.8000001907349px;">94 alpha_r_128 = set1_int16(alpha[0]);</span>
|
|
|
|
|
|
This is due to the <span style="color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">machine doesn't support avx2 [2] and generates illegal instructions. EURECOM will soon </span><span style="color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">introduce some new SIMD code which exploits the AVX2.</span>
|
|
|
|
|
|
<span style="color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> </span>
|
|
|
---++ References:
|
|
|
|
|
|
[1] https://github.com/chunyeow/openairinterface5g/commit/72a8159c067517d7a7d42659f1c36c03840f3331
|
|
|
|
|
|
<span style="color: #000000;">[2] </span>https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#Advanced_Vector_Extensions_2
|
|
|
|
|
|
[3] http://www.ettus.com/product/details/VERT900
|
|
|
|
|
|
---++ Acknowledgements:
|
|
|
|
|
|
__This work was supported by <a target="_blank" href="http://www.tmrnd.com.my/" title="TMRND">Telekom Research & Development Sdn. Bhd.</a>__
|
|
|
|
|
|
-- User.ChunYeowYeoh - 28 Jul 2015 |