== !OpenAirInterface LTE == [[TOC(noheading, Tutorials/g0WmLTE*, depth=2)]] [[Include(Documentation/Short/Prereq)]] This tutorial also assumes basic familiarity with [http://en.wikipedia.org/wiki/LTE_%28telecommunication%29 LTE standard]. It uses [http://www.openairinterface.org/ OpenAirInterface] open source software implementation of LTE basestation (eNodeB or eNB) and modem (user equipment or UE) developed at [http://www.eurecom.fr/en Eurecom]. The tutorial given here is based on the [https://twiki.eurecom.fr/twiki/bin/view/OpenAirInterface/HowToConnectOAIENBWithOAIUEWithoutS1Interface] tutorial. The image used for this experiment is 'oai-nos1.ndz'. The image uses Ubuntu 14.04 and has low-latency 3.13 kernel install and UHD drivers needed for B210/X310 USRPs (UHD 3.8.2)) as well as the !OpenAirInteface source code installed in /root/openairinterface5g/. More details on various build options are available on [https://twiki.eurecom.fr/twiki/bin/view/OpenAirInterface/AutoBuild OpenAirInterface build page]. In this tutorial we will use nodes equipped with USRP B210 and have the basestation on node1-1 and modem on node1-2 on sandbox 1. === Quickstart Option === We have an image available, named {{{oai-dev.ndz}}}. It has all the necessary driver and software pre-installed, and two scripts available to immediately boot up the eNB and UE. 1. To proceed, after having a reservation, load the following image. * {{{omf load -t node1-1,node1-2 -i oai-dev.ndz}}} * The nodes will automatically turn off when imaging is completed. 1. Turn the nodes on. * {{{omf tell -a on -t node1-1,node1-2}}} 1. Open a terminal to each node. You must enable X11 Forwarding to see the GUI and statistics screens. 1. This is a two step process, to extend the tunnel to your local machine. SSH with tunnel to the console, and then again with the tunnel from the console to the node. 1. Linux: Simply use the -X or -Y flags, e.g. 1. {{{ssh -Y username@sb1.orbit-lab.org}}} 1. {{{ssh -Y root@node1-1.sb1.orbit-lab.org}}} 1. Repeat above two steps for second node. 1. Windows: You must either use an X11 capable ssh client, such as mobaXterm or bitvise ssh, or install a standalone x11 client, such as FIXME 1. Start x11 capable client 1. SSH to console 1. SSH to node 1. Mac: You must use an X11 capable ssh client such as FIXME, or install a standalone X11 client such as FIXME 1. Start x11 capable client 1. SSH to console 1. SSH to node 1. On the first node, execute script {{{./CompandRuneNB}}} 1. On the second node, execute script {{{./CompandRunUE}}} 1. For subsequent runs, execute {{{./runeNB}}} or {{{./runUE}}} instead, to avoid recompiling. 1. These scripts will create interface {{{oai0}}} and assign an address. 1. Use {{{ifconfig}}} or {{{ip a}}} to see the address assigned. 1. You should be able to ping from one node to the other on these addresses. 1. For throughput testing 1. On one node, execute {{{iperf -s}}} 1. On the second node, execute {{{iperf -c Put_other_oai_IP_here}}} === Prepare the nodes === ORBIT Images with preloaded OAI software have been made available. If you prefer to prepare a new image starting from a baseline, 1a. Load the image with the !OpenAirInterface code on the nodes. After imaging the nodes are '''turned off automatically'''. [[CollapsibleStart(omf load -i oai-nos1.ndz -t all)]] [[Include(Documentation/Short/LoadImage)]][[CollapsibleEnd]] 2a. Turn ON the nodes that successfully imaged (give them some time and check their status with '''omf stat''' before proceeding). [[CollapsibleStart(omf tell -a on -t all)]][[Include(Documentation/Short/TellOn)]][[CollapsibleEnd]] 3a. [OPTIONAL] Upgrade to the latest code and compile {{{ oai git pull cd cmake_targets ./build_oai -I --install-optional-packages -w USRP #If updating eNB ./build_oai --eNB -C -w USRP #If updating UE ./build_oai --UE -C -w USRP }}} 1b. [ALTERNATIVE METHOD] [[CollapsibleStart(Compile from scratch)]][[Include(Documentation/Short/CompileOAI)]][[CollapsibleEnd]] === Execute the experiment === Primary objective is to establish the LTE connection between the UE and eNB. 1. '''ssh into nodes:''' Open two ssh sessions from the console to the two nodes 2. '''Prepare configuration files:''' The configuration file used for eNB is ''enb.band5.tm1.usrpb210.conf'', located at ''/root/openinterface5g/targets/PROJECTS/GENERIC-LTE-EPC/CONF/''. Another configuration may be used, or a new configuration file can be created using one of the existing ones, so that the parameters can be adjusted. 3. '''Run the lte-softmodem:''' The following commands need to be run in order the execute the LTE softmodem. By default, the IP address of eNB is 10.0.1.1, and the IP of UE is 10.0.1.9. These parameters can be changed in ''/root/openinterface5g/targets/bin/init_nas_nos1''. The user can also choose whether to run the version with or without the graphical analyzer. In order to run the experiment with the graphical analyzer, make sure you have used the '-X' flag to ssh into the console and then into the nodes. a. On both nodes, run {{{ source /root/openairinterface5g/targets/bin/init_nas_nos1 }}} b. On eNB (node1-1), run {{{ sh /root/openairinterface5g/targets/bin/init_nas_nos1 eNB /root/openairinterface5g/targets/bin/oailtenoviz -d -O /root/enb.band3.tm1.usrpb210.conf 2>&1 | tee ENB.log }}} or, to run it without the graphical analyzer {{{ /root/openairinterface5g/targets/bin/lte-softmodem-nos1.Rel10 -d -O /root/enb.band3.tm1.usrpb210.conf 2>&1 | tee ENB.log }}} c. On UE (node1-2), run {{{ /root/openairinterface5g/targets/bin/lte-softmodem-nos1.Rel10 -U -C1865000000 -r25 --ue-scan-carrier --ue-txgain 100 --ue-rxgain 110 -A 0 2>&1 | tee UE.log }}} The output on the two consoles should look like: || node1-1 (eNB) || node1-2 (UE) || || [[Image(node1-1.jpg, width=450)]] || [[Image(node1-2.jpg, width=450)]] || The connection should now be established. As a simple test, you should be able to ping the eNB node from the UE node by running the following command in a separate terminal window: {{{ ping 10.0.1.1 }}} If the eNB was run using the graphical analyzer, after the connection is established and the pinging starts, the analyzer should look similar to the one shown on the picture below. [[Image(analyzer.png, width=500)]]