[[Include(WikiToC)]] == ORAN Split 7.2 E2E == === Description === This tutorial contains instructions for setting up 5G ORAN Split 7.2 network using OAI/srsRAN + various O-RUs(LiteOn, Jabil, Benetel) in COSMOS SB1. === Prerequisites === In order to access the test bed, create a reservation and have it approved by the reservation service. Access to the resources is granted after the reservation is confirmed. Please follow the process shown on the COSMOS [wiki:GettingStarted getting started] page to get started. === Resources required === 1 server in [https://wiki.cosmos-lab.org/wiki/Architecture/Domains/cosmos_sb1 COSMOS SB1] domain and sdr1-in3(with SIMCom SIM8200EA-M2 USB modem) === Tutorial Setup === Follow the steps below to gain access to the [wiki:/Architecture/Domains/cosmos_sb1 sandbox 1 console] and set up nodes with appropriate images. 1. If you don't have one already, sign up for a [https://www.cosmos-lab.org/portal-2/ COSMOS account] 1. [wiki:/GettingStarted#MakeaReservation Create a resource reservation] on sandbox 1 1. [wiki:/GettingStarted#LogintoyourReservation Login] into sandbox 1 console (console.sb1.cosmos-lab.org) with two SSH sessions. 1. Make sure all the resources in the domain are turned off: {{{#!shell omf tell -a offh -t system:topo:allres }}} For this tutorial we will be using the SB1 servers, srv1-lg1, srv2-lg1, USRP N310s in large and medium nodes, sdr1-s1-lg1 and sdr1-md1. 1. Load 5G-tutorial-cosmos.ndz on srv1-lg1,srv2-lg1. {{{#!shell omf load -i sb1_oai_liteon_11_8_2024.ndz -t srv1-lg1 }}} 1. To access the UE, Waveshare SIM8200 USB modem connected to sdr1-in3, load the image waveshare-sim8200.ndz on sdr1-in3. This image has the SIMCOM network drivers installed to control the modem. {{{#!shell omf load -i waveshare-sim8200.ndz -t sdr1-in3 }}} 1. Turn all the required resources on and check the status {{{#!shell omf tell -a on -t srv1-lg1,sdr1-in3 }}} {{{#!shell omf stat -t system:topo:allres }}} 1. ssh to the servers, use option -Y for using GUI. {{{#!shell ssh root@srv1-lg1 }}} === Tutorial Execution === [[CollapsibleStart(Initialize DPDK)]] {{{#!shell root@srv1-lg1:~# ./init_dpdk.sh --- Disable CPU sleep state --- WARNING: cpupower not found for kernel 5.15.0-1071 You may need to install the following packages for this specific kernel: linux-tools-5.15.0-1071-realtime linux-cloud-tools-5.15.0-1071-realtime You may also want to install one of the following packages to keep up to date: linux-tools-realtime linux-cloud-tools-realtime --- Set interface enp134s0f0 ring buffer size to 4096 --- ----- Set RX buffer size ----- ----- Set TX buffer size ----- --- Set interface enp134s0f0 MTU to 9000 --- --- Create VFs (enp134s0f0, MTU: 9000, VLAN: 4) --- ----- Creating VF 1 ----- ----- Creating VF 2 ----- --- Unbind/rebind DPDK devices (86:01.0 86:01.1) --- ----- Unbinding VF 0 ----- ----- Unbinding VF 1 ----- ----- Binding VF 0 ----- ----- Binding VF 1 ----- --- Final VF setup --- 3: enp134s0f0: mtu 9000 qdisc mq state UP mode DEFAULT group default qlen 1000 link/ether 50:7c:6f:6c:76:9c brd ff:ff:ff:ff:ff:ff vf 0 link/ether 00:11:22:33:44:66 brd ff:ff:ff:ff:ff:ff, vlan 4, spoof checking off, link-state auto, trust off vf 1 link/ether 00:11:22:33:44:67 brd ff:ff:ff:ff:ff:ff, vlan 4, spoof checking off, link-state auto, trust off }}} [[CollapsibleEnd]] [[CollapsibleStart(Run the 5G Core)]] {{{#!shell root@srv1-lg1:/opt/amarisoft/ltemme-linux-2024-09-13# ./lte_init.sh Select enp134s0f0 enp94s0f0np0 default interface Configure NAT for enp134s0f0 Configure NAT for enp94s0f0np0 net.ipv4.tcp_congestion_control = bbr net.core.rmem_max = 62500000 net.core.wmem_max = 62500000 root@srv1-lg1:/opt/amarisoft/ltemme-linux-2024-09-13# ./ltemme config/mme.cfg Core Network version 2024-09-13, Copyright (C) 2012-2024 Amarisoft This software is licensed to Rutgers University (The State University of New Jersey). License server: license.orbit-lab.org (0b-b4-46-dc-2f-83-58-cb) Support and software update available until 2025-08-18. (mme) }}} [[CollapsibleEnd]] [[CollapsibleStart(Run OAI CU+DU)]] root@srv1-lg1:~# ./run_oai_liteon.sh CMDLINE: "./openairinterface5g/cmake_targets/ran_build/build/nr-softmodem" "-O" "/root/liteon/band78.2x2.40M.timing.conf" "--sa" "--thread-pool" "0,2,4,6,8,10,12,14" [LIBCONFIG] Path for include directive set to: /root/liteon [CONFIG] function config_libconfig_init returned 0 [CONFIG] config module libconfig loaded [CONFIG] debug flags: 0x00000000 log init done Reading in command-line options [ENB_APP] nfapi (0) running mode: MONOLITHIC [[CollapsibleEnd]] [[CollapsibleStart(Check Liteon Status)]] {{{ ssh user@liteon-oru-mgmt.instrument.orbit-lab.org user@liteon-oru-mgmt.instrument.orbit-lab.org's password: Welcome to Liteon ORU Wed Nov 13 17:51:48 UTC 2024 Please enter help > enable Enter Password: Auto exit privileged commands in 300 Seconds # show oru-status Sync State : SYNCHRONIZED RF State : Ready DPD : Ready DuConnected : Ready # show pm-data 1,POWER,2024-11-13T17:59:55Z,2024-11-13T18:00:12Z,o-ran-hardware:O-RU-FPGA,10.6144,11.7710,11.1235,iana-hardware:cpu,10.6144,11.7710,11.1235 2,TEMPERATURE,2024-11-13T17:59:55Z,2024-11-13T18:00:12Z,o-ran-hardware:O-RU-FPGA,57.9699,59.9283,58.6268,iana-hardware:cpu,56.8352,58.9491,57.6974 13,VOLTAGE,2024-11-13T17:59:55Z,2024-11-13T18:00:29Z,0,0.0000,2024-11-13T17:59:56Z,2.0142,2024-11-13T18:00:19Z,0.0000,2024-11-13T17:59:56Z,0.0000,2024-11-13T18:00:29Z,3499680000 1,POWER,2024-11-13T18:00:12Z,2024-11-13T18:00:29Z,o-ran-hardware:O-RU-FPGA,10.6720,12.2464,11.1989,iana-hardware:cpu,10.6720,12.2464,11.1989 2,TEMPERATURE,2024-11-13T18:00:12Z,2024-11-13T18:00:29Z,o-ran-hardware:O-RU-FPGA,57.9854,59.7729,58.8154,iana-hardware:cpu,56.5866,59.6641,57.9875 1,RX_ON_TIME,2024-11-13T17:59:55Z,2024-11-13T18:00:29Z,ru1,1537482 2,RX_EARLY,2024-11-13T17:59:55Z,2024-11-13T18:00:29Z,ru1,0 3,RX_LATE,2024-11-13T17:59:55Z,2024-11-13T18:00:29Z,ru1,0 6,RX_TOTAL,2024-11-13T17:59:55Z,2024-11-13T18:00:29Z,ru1,1604032 7,RX_ON_TIME_C,2024-11-13T17:59:55Z,2024-11-13T18:00:29Z,ru1,64192 8,RX_EARLY_C,2024-11-13T17:59:55Z,2024-11-13T18:00:29Z,ru1,0 9,RX_LATE_C,2024-11-13T17:59:55Z,2024-11-13T18:00:29Z,ru1,0 1,TX_TOTAL,2024-11-13T17:59:55Z,2024-11-13T18:00:29Z,ru1,192841 }}} [[CollapsibleEnd]] [[CollapsibleStart(SIMCOM SIM8200EA-M2 UE)]] {{{#!shell root@sdr1-in3:~# minicom -D /dev/ttyUSB2 Welcome to minicom 2.7.1 OPTIONS: I18n Compiled on Aug 13 2017, 15:25:34. Port /dev/ttyUSB2, 17:45:12 Press CTRL-A Z for help on special keys at OK at+cops=? +COPS: (1,"Amarisoft Network","Amarisof","310014",12),(1,"Verizon","Verizon","311480",7),(3,"T-Mobile","T-Mobile","310260",7),(3,"AT&T","AT&T","310410",7),(3,"313 100","313 100","313100",7),(3,"T-Mobile","T-Mobile","310260",12),(1,"311 490","311 490","311490",12),(3,"313 340","313 340) OK }}} * The at+cops=? command takes a few minutes to return. You can see that it finds the Amarisoft network. This AT command prompts the modem to scan and attach to the base station. * Run the following application on sdr1-in3 {{{#!shell root@sdr1-in3:~/SIM8200_code/Goonline# ./simcom-cm [11-13_18:27:19:600] Build Version: 2020-07-14 10:20:15 [11-13_18:27:19:600] SIMCOM_CM START... [11-13_18:27:19:600] ./simcom-cm profile[1] = (null)/(null)/(null)/0, pincode = (null) [11-13_18:27:19:600] Find /sys/bus/usb/devices/2-4.4 idVendor=1e0e idProduct=9001 [11-13_18:27:19:600] Find /sys/bus/usb/devices/2-4.4:1.5/net/wwp0s20f0u4u4i5 [11-13_18:27:19:600] Find usbnet_adapter = wwp0s20f0u4u4i5 [11-13_18:27:19:600] Find /sys/bus/usb/devices/2-4.4:1.5/usbmisc/cdc-wdm0 [11-13_18:27:19:600] Find qmichannel = /dev/cdc-wdm0 [11-13_18:27:19:601] netcard driver = qmi_wwan_simcom [11-13_18:27:19:604] cdc_wdm_fd = 7 [11-13_18:27:19:676] Get clientWDS = 15 [11-13_18:27:19:708] Get clientDMS = 1 [11-13_18:27:19:740] Get clientNAS = 2 [11-13_18:27:19:772] Get clientUIM = 1 [11-13_18:27:19:804] Get clientWDA = 1 [11-13_18:27:19:836] requestBaseBandVersion MPSS.HI.2.0.c3-00246-SDX55_CPEALL_PACK-1 1 [Oct 26 2020 16:00:00] [11-13_18:27:19:900] requestGetSIMStatus SIMStatus: SIM_READY [11-13_18:27:19:932] requestGetProfile[1] cosmos-5G///0 [11-13_18:27:19:964] requestRegistrationState2 MCC: 310, MNC: 14, PS: Attached, DataCap: NR5G [11-13_18:27:19:996] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED [11-13_18:27:20:060] requestRegistrationState2 MCC: 310, MNC: 14, PS: Attached, DataCap: NR5G [11-13_18:27:20:124] requestSetupDataCall WdsConnectionIPv4Handle: 0x734209c0 [11-13_18:27:20:188] requestQueryDataCall IPv4ConnectionStatus: CONNECTED [11-13_18:27:20:220] ifconfig wwp0s20f0u4u4i5 up [11-13_18:27:20:252] Fail to access /usr/share/udhcpc/default.script, errno: 2 (No such file or directory) [11-13_18:27:20:252] busybox udhcpc -f -n -q -t 5 -s /usr/share/udhcpc/default.script -i wwp0s20f0u4u4i5 udhcpc: started, v1.27.2 udhcpc: sending discover udhcpc: sending select for 192.168.2.2 udhcpc: lease of 192.168.2.2 obtained, lease time 7200 }}} * Set the IP address of the wwan interface to the one allocated by the MME (192.168.2.2 in this case) {{{#!shell root@sdr1-in3:~# ifconfig wwp0s20f0u4u4i5 192.168.2.2 netmask 255.255.255.0 }}} * You can now communicate with the base station over the air(5G). The data connection can be tested with ping or iperf as below. {{{#!shell root@sdr1-in3:~# ping 192.168.2.1 PING 192.168.2.1 (192.168.2.1) 56(84) bytes of data. 64 bytes from 192.168.2.1: icmp_seq=1 ttl=64 time=21.8 ms 64 bytes from 192.168.2.1: icmp_seq=2 ttl=64 time=19.2 ms 64 bytes from 192.168.2.1: icmp_seq=3 ttl=64 time=18.2 ms 64 bytes from 192.168.2.1: icmp_seq=4 ttl=64 time=16.8 ms ^C --- 192.168.2.1 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3004ms rtt min/avg/max/mdev = 16.800/19.043/21.802/1.828 ms }}} [[CollapsibleEnd]] [[CollapsibleStart(Iperf test)]] {{{#!shell root@sdr1-in3:~# iperf3 -s -B 192.168.2.2 ----------------------------------------------------------- Server listening on 5201 ----------------------------------------------------------- }}} {{{#!shell root@srv1-lg1:~# iperf3 -c 192.168.2.2 -i 1 -b 0 -t 10 Connecting to host 192.168.2.2, port 5201 [ 5] local 192.168.2.1 port 45344 connected to 192.168.2.2 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 7.99 MBytes 67.0 Mbits/sec 100 35.4 KBytes [ 5] 1.00-2.00 sec 3.75 MBytes 31.5 Mbits/sec 52 583 KBytes [ 5] 2.00-3.00 sec 6.25 MBytes 52.4 Mbits/sec 91 250 KBytes [ 5] 3.00-4.00 sec 6.25 MBytes 52.4 Mbits/sec 88 1.03 MBytes [ 5] 4.00-5.00 sec 7.50 MBytes 62.9 Mbits/sec 99 631 KBytes [ 5] 5.00-6.00 sec 5.00 MBytes 41.9 Mbits/sec 107 578 KBytes [ 5] 6.00-7.00 sec 6.25 MBytes 52.4 Mbits/sec 24 806 KBytes [ 5] 7.00-8.00 sec 8.75 MBytes 73.4 Mbits/sec 38 1.06 MBytes [ 5] 8.00-9.00 sec 6.25 MBytes 52.4 Mbits/sec 100 653 KBytes [ 5] 9.00-10.00 sec 7.50 MBytes 62.9 Mbits/sec 15 585 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 65.5 MBytes 54.9 Mbits/sec 714 sender [ 5] 0.00-10.00 sec 62.1 MBytes 52.1 Mbits/sec receiver }}} [[CollapsibleEnd]]