== !OpenAirInterface LTE == [[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/OpenAirLXRT OAI_real-time_LTEsoftmodem] tutorial. The image used for this experiment is oai-rel_0.1-full.ndz. Image uses Ubunutu 14.04 and has low-latency 3.17 kernel install and UHD drivers needed for B210/X310 USRPs on as well as the !OpenAirInteface source code installed in /root/rel_0.1_26.10.2014 === Prepare the nodes === 1. Load the image with the !OpenAirInterface code on the nodes that have USRP B210 attached. After imaging the nodes are '''turned off automatically'''. [[CollapsibleStart(omf load -t inventory:topo:B210 -i oai-rel_0.1-full.ndz)]] [[Include(Documentation/Short/LoadImage)]][[CollapsibleEnd]] 1. 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 system:topo:imaged)]][[Include(Documentation/Short/TellOn)]][[CollapsibleEnd]] === Execute the experiment === Primary objective is to establish the LTE connection between the UE and eNB. node6-20 = eNB node19-18 = UE... || On the eNB node (node6-20) || On the UE node (node19-18) || || || lte-softmodem -Ooai.conf || lte-softmodem -U Ooai.conf || with MME support || || || || with no MME support || || Add "-d" flag if you have enabled X11 forwarding and want to see the signal tracer (requires relatively high bandwidth). || [[Image(Scope.png, width=300)]] || [[CollapsibleStart(The output on both consoles should look something like this:)]] {{{ root@node19-18:~# lte-softmodem -Ooai.conf linux; GNU C++ version 4.8.2; Boost_105400; UHD_003.008.000-release # /dev/cpu_dma_latency set to 0us num component carrier 1 ---------------------------------------------------------------------- ENB CONFIG FILE CONTENT LOADED (TBC): ---------------------------------------------------------------------- ENB CONFIG for instance 0: eNB name: eNB_Eurecom_LTEBox: eNB ID: 3584: Cell type: CELL_MACRO_ENB: TAC: 1: MCC: 208: MNC: 92: eutra band for CC 0: 7: downlink freq for CC 0: 2680000000: uplink freq for CC 0: -120000000: Cell ID for CC 0: 0: N_RB_DL for CC 0: 25: rach_numberOfRA_Preambles for CC 0: 15: rach_preamblesGroupAConfig for CC 0: 0: rach_powerRampingStep for CC 0: 2: rach_preambleInitialReceivedTargetPower for CC 0: 6: rach_preambleTransMax for CC 0: 6: rach_raResponseWindowSize for CC 0: 7: rach_macContentionResolutionTimer for CC 0: 5: rach_maxHARQ_Msg3Tx for CC 0: 4: bcch_modificationPeriodCoeff for CC 0: 0: pcch_defaultPagingCycle for CC 0: 2: pcch_nB for CC 0: 2: prach_root for CC 0: 0: prach_config_index for CC 0: 0: prach_high_speed for CC 0: 0: prach_zero_correlation for CC 0: 1: prach_freq_offset for CC 0: 2: pdsch_referenceSignalPower for CC 0: -26: pdsch_p_b for CC 0: 0: pusch_n_SB for CC 0: 1: pusch_hoppingMode for CC 0: 0: pusch_hoppingOffset for CC 0: 0: pusch_enable64QAM for CC 0: 0: pusch_groupHoppingEnabled for CC 0: 1: pusch_groupAssignment for CC 0: 0: pusch_sequenceHoppingEnabled for CC 0: 0: pusch_nDMRS1 for CC 0: 1: pucch_delta_shift for CC 0: 0: pucch_nRB_CQI for CC 0: 1: pucch_nCS_AN for CC 0: 0: pucch_n1_AN for CC 0: 32: srs_enable for CC 0: 0: pusch_p0_Nominal for CC 0: -108: pucch_p0_Nominal for CC 0: -108: pusch_alpha for CC 0: 7: pucch_deltaF_Format1 for CC 0: 2: pucch_deltaF_Format1b for CC 0: 1: pucch_deltaF_Format2 for CC 0: 1: pucch_deltaF_Format2a for CC 0: 1: pucch_deltaF_Format2b for CC 0: 1: msg3_delta_Preamble for CC 0: 6: ul_CyclicPrefixLength for CC 0: 0: ue_TimersAndConstants_t300 for CC 0: 5: ue_TimersAndConstants_t301 for CC 0: 5: ue_TimersAndConstants_t310 for CC 0: 5: ue_TimersAndConstants_n310 for CC 0: 7: ue_TimersAndConstants_t311 for CC 0: 3: ue_TimersAndConstants_n311 for CC 0: 0: Global log level: info HW log level: info PHY log level: info MAC log level: info RLC log level: info PDCP log level: info RRC log level: info -------------------------------------------------------- Downlink frequency/ uplink offset of CC_id 0 set to 2680000000/-120000000 log init done configuring for eNB reported resolution = 1 ns [PHY][I][INIT] OFDM size : 512 [PHY][I][INIT] FRAME_LENGTH_SAMPLES : 153600 [PHY][I][INIT] NUMBER_OF_SYMBOLS_PER_FRAME : 140 [PHY][I][INIT] Initializing FFT engine using 512 point fft (9, 0x342f6500) [PHY][I][INIT] twiddle_fft= 0x35087940, twiddle_ifft=0x3508f940, twiddle_fft_tim es4=0x35097940,twiddle_ifft_times4=0x3509f940 [PHY][I][eNB 0] Initializing DL_FRAME_PARMS : N_RB_DL 25, PHICH Resource 1, PHIC H Duration 0 [PHY][I]init eNB: Nid_cell 0 [PHY][I]init eNB: frame_type 0,tdd_config 3 [PHY][I]init eNB: number of ue max 16 number of enb max 7 number of harq pid max 8 HW: Configuring card 0 -- Operating over USB 3. -- Initialize CODEC control... -- Initialize Radio control... -- Performing register loopback test... pass -- Performing register loopback test... pass -- Performing CODEC loopback test... pass -- Performing CODEC loopback test... pass -- Asking for clock rate 32.000000 MHz -- Actually got clock rate 32.000000 MHz -- Performing timer loopback test... pass -- Performing timer loopback test... pass -- Asking for clock rate 30.720000 MHz -- Actually got clock rate 30.720000 MHz -- Performing timer loopback test... pass -- Performing timer loopback test... pass -- Successfully tuned to 2680.000000 MHz -- -- Successfully tuned to 2560.000000 MHz -- Actual TX sample rate: 7.680000MSps... Actual RX sample rate: 7.680000MSps... Actual TX frequency: 2.680000GHz... Actual RX frequency: 2.560000GHz... Actual TX gain: 89.750000... Actual RX gain: 62.000000... Actual TX bandwidth: 56.000000M... Actual RX bandwidth: 56.000000M... Actual TX antenna: TX/RX... Actual RX antenna: RX2... Device timestamp: 0.000445... [MAC][I][l2_init] [MAIN] MAC_INIT_GLOBAL_PARAM IN... [MAC][I][mac_init_global_param] [MAIN] CALLING RLC_MODULE_INIT... [MAC][I][mac_init_global_param] [MAIN] RLC_MODULE_INIT OK, malloc16 for mac_rlc_ xface... [MAC][I][mac_init_global_param] [MAIN] malloc16 OK, mac_rlc_xface @ 0x37870b60 [MAC][I][mac_init_global_param] [MAIN] RLC interface setup and init [PDCP][I]PDCP layer has been initialized [MAC][I][mac_init_global_param] [MAIN] Init Global Param Done [MAC][I][l2_init] [MAIN] init eNB MAC functions [MAC][I][l2_init] [MAIN] init UE MAC functions [MAC][I][l2_init] [MAIN] PHY Frame configuration [MAC][I][mac_top_init] [MAIN] Init function start:Nb_UE_INST=0 [MAC][I][mac_top_init] [MAIN] Init function start:Nb_eNB_INST=1 [MAC][I][mac_top_init] [MAIN] calling RRC [RRC][I][eNB] handover active state is 0 [MAC][I][mac_top_init] [MAIN][INIT] Init function finished [MAC][I][mrbch_phy_sync_failure] [eNB 0] Frame 0: PHY Sync failure [SCTP][I][sctp_eNB_task] Starting SCTP layer [S1AP][I][s1ap_eNB_task] Starting S1AP layer [UDP][I][udp_enb_init] Initializing UDP task interface [UDP][I][udp_enb_init] Initializing UDP task interface: DONE [GTPV1U][I][gtpv1u_eNB_init] Initializing GTPU stack 0x12d8e60 ITTI tasks created [OTG][I][init_all_otg] init done: init_all_otg [OTG][I][init_seeds] set taus seed to 0 done [OTG][I][init_predef_traffic] OTG_CONFIG BCBR, src = 0, dst = 0, dist type for s ize = 5 [OTG][I][init_predef_traffic] OTG_CONFIG BCBR, src = 0, dst = 1, dist type for s ize = 5 [OTG][I][init_predef_traffic] OTG_CONFIG BCBR, src = 1, dst = 0, dist type for s ize = 5 [OTG][I][init_predef_traffic] OTG_CONFIG BCBR, src = 1, dst = 1, dist type for s ize = 5 setup_eNB_buffers: frame_parms = 0x7f7a335d78e0 rxdata[0] @ 0x378d7a00 (0x378d7a00) txdata[0] @ 0x37922a10 Setting eNB buffer to all-RX [UDP][I][udp_eNB_create_socket] Initializing UDP for local address 10.10.19.18 w ith port 2152 [UDP][I][udp_eNB_create_socket] Inserting new descriptor for task 11, sd 43 [UDP][I][udp_eNB_create_socket] Initializing UDP for local address 10.10.19.18 w ith port 2152: DONE Waiting for eNB application to be ready [RRC][I][eNB 0] Received RRC_CONFIGURATION_REQy . [S1AP][I][s1ap_eNB_handle_register_eNB] Registered new eNB[0] and macro eNB id 3 584 [RRC][I][eNB 0] Init (UE State = RRC_IDLE)... [RRC][I][eNB 0] Checking release [RRC][I][eNB 0] Rel8 RRC [RRC][I][eNB 0] Configuration SIB2/3 [MAC][I][rrc_mac_config_req] [CONFIG][eNB 0] Configuring MAC/PHY [MAC][I][rrc_mac_config_req] [CONFIG]SIB2/3 Contents (partial) [MAC][I][rrc_mac_config_req] [CONFIG]pusch_config_common.n_SB = 1 [MAC][I][rrc_mac_config_req] [CONFIG]pusch_config_common.hoppingMode = 0 [MAC][I][rrc_mac_config_req] [CONFIG]pusch_config_common.pusch_HoppingOffset = 0 [MAC][I][rrc_mac_config_req] [CONFIG]pusch_config_common.enable64QAM = 0 [MAC][I][rrc_mac_config_req] [CONFIG]pusch_config_common.groupHoppingEnabled = 1 [MAC][I][rrc_mac_config_req] [CONFIG]pusch_config_common.groupAssignmentPUSCH = 0 [MAC][I][rrc_mac_config_req] [CONFIG]pusch_config_common.sequenceHoppingEnabled = 0 [MAC][I][rrc_mac_config_req] [CONFIG]pusch_config_common.cyclicShift = 1 [RRC][I][eNB 0] OPENAIR RRC IN.... [SCTP][I][sctp_handle_new_association_req] Setsockopt SOL_SOCKET socket bound to : eth1 [SCTP][I][sctp_handle_new_association_req] Converted ipv4 address 10.10.0.100 to network type [SCTP][I][sctp_handle_new_association_req] connectx assoc_id 2 in progress..., used 1 addresses [SCTP][I][sctp_handle_new_association_req] Inserted new descriptor for sd 44 in list, nb elements 1, assoc_id 2 [SCTP][I][sctp_eNB_flush_sockets] Found data for descriptor 44 [SCTP][I][sctp_eNB_read_from_socket] Received notification for sd 44, type 32769 [SCTP][I][sctp_eNB_read_from_socket] Client association changed: 0 [SCTP][I][sctp_get_peeraddresses] ---------------------- [SCTP][I][sctp_get_peeraddresses] Peer addresses: [SCTP][I][sctp_get_peeraddresses] - [10.10.0.100] [SCTP][I][sctp_get_peeraddresses] ---------------------- [SCTP][I][sctp_get_sockinfo] ---------------------- [SCTP][I][sctp_get_sockinfo] SCTP Status: [SCTP][I][sctp_get_sockinfo] assoc id .....: 2 [SCTP][I][sctp_get_sockinfo] state ........: 4 [SCTP][I][sctp_get_sockinfo] instrms ......: 8 [SCTP][I][sctp_get_sockinfo] outstrms .....: 64 [SCTP][I][sctp_get_sockinfo] fragmentation : 1452 [SCTP][I][sctp_get_sockinfo] pending data .: 0 [SCTP][I][sctp_get_sockinfo] unack data ...: 0 [SCTP][I][sctp_get_sockinfo] rwnd .........: 106496 [SCTP][I][sctp_get_sockinfo] peer info : [SCTP][I][sctp_get_sockinfo] state ....: 2 [SCTP][I][sctp_get_sockinfo] cwnd .....: 4380 [SCTP][I][sctp_get_sockinfo] srtt .....: 0 [SCTP][I][sctp_get_sockinfo] rto ......: 3000 [SCTP][I][sctp_get_sockinfo] mtu ......: 1500 [SCTP][I][sctp_get_sockinfo] ---------------------- [SCTP][I][sctp_eNB_read_from_socket] Comm up notified for sd 44, assigned assoc_ id 2 }}} [[CollapsibleEnd]] === The command line parameters of lte-softmodem === 1. -O file: eNB configuration file (this is the preferred way to pass basic parameters and there are several examples in $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE_EPC/CONF/ 1. -g LEVEL: set the level of debug for the log generation (-g7 is quite high and useful to trace bugs in the procedures/protocols, -g9 even dumps packets at all levels of the protocol stack) 1. -d: enables xforms signal tracer 1. -U: start as UE (default: eNB) 1. -C freq: set carrier frequency to f0 for all chains (extension to independent frequencies trivial) 1. -V: enables the VCD debugging tool (this is a temporal event tracer, which is useful for real-time debugging using GTKWave) 1. -K file: ITTI logfile. ITTI is an intertask tracing utility which helps debugging with an EPC. It can traces all exchanges between RRC<->S1AP, RRC<->PDCP, PDCP<->S1 1. -S: do not exit for the missing slots, instead increment the counter. 1. --debug-ue-prach: only send prach but do not connect 1. --no-L2-connect: only runs rx, does not send prach