3 | | {{{ |
4 | | git clone https://github.com/srsRAN/srsRAN.git |
5 | | cd srsRAN |
6 | | mkdir build |
7 | | cd build |
8 | | cmake ../ |
9 | | make |
10 | | make test |
11 | | make install |
12 | | }}} |
13 | | |
14 | | {{{ |
15 | | git clone https://github.com/srsLTE/srsGUI.git |
16 | | cd srsGUI/ |
17 | | mkdir build |
18 | | cd build |
19 | | cmake ../ |
20 | | make |
21 | | make test |
22 | | sudo make install |
23 | | }}} |
24 | | |
25 | | This tutorial contains instructions for running srsLTE eNB and UE on COSMOS. |
26 | | A more detailed tutorial can be found in [https://github.com/srsLTE/srsLTE srsRAN git README] as well as in the [https://docs.srsran.com/en/latest/ srsRAN documentation pages]. |
27 | | |
28 | | == Prerequisites == |
29 | | 1. Two nodes, with appropriate hardware, within RF range |
30 | | 1. Currently supported: USRP X310, USRP B210 |
31 | | 1. Load the image {{{tutorial-srslte.ndz}}} onto both nodes |
32 | | 1. Turn the nodes on |
33 | | 1. ssh to the nodes |
34 | | |
35 | | == On node 1 == |
36 | | 1. run srsepc |
37 | | 1. run srsenb |
38 | | |
39 | | |
40 | | For further configuration details, please consult the official srsLTE webpage and documentation. |
41 | | |
42 | | == On node 2 == |
43 | | 1. run srsue |
44 | | |
45 | | |
46 | | == Once Both nodes are running == |
47 | | * if all is successful, you should see new interfaces on the two nodes, with addresses: |
48 | | * 172.16.0.1 |
49 | | * 172.16.0.2 |
50 | | * you should be able to run ping, iperf, and so on |
51 | | |
52 | | |
53 | | == Specifics per domain == |
54 | | |
55 | | === sb1.cosmos-lab.org and sb2.cosmos-lab.org === |
56 | | 1. Use 2974 |
57 | | 1. set usrp address to "type=x3xx,resource=rio0" |
58 | | 1. use RFSWITCH service to set all switches to port 1 for antenna |
59 | | port 1 for antenna |
60 | | |
61 | | === sb2.orbit-lab.org === |
62 | | 1. set usrp address to "type=x3xx,addr=192.168.40.2" |
63 | | 1. bring up usrp ethernet interface, set ip to 192.168.40.1/16 |
64 | | |
65 | | === sb1.orbit-lab.org === |
66 | | 1. set usrp address to "type=b210" |
67 | | |
68 | | === sb4.orbit-lab.org === |
69 | | 1. set usrp address to "type=b210" |
70 | | 1. configure RF matrix for 60db of attenuation between eNB and UE node chosen |
| 3 | == srsRAN 5G network in COSMOS SB1 == |
| 4 | srsRAN is an open-source software radio suite for 4G/5G provided by SRS(Software Radio Systems). |
| 5 | The srsRAN suite includes: |
| 6 | srsUE - a full-stack SDR 4G/5G UE application |
| 7 | srsENB - a full-stack SDR 4G/5G e(g)NodeB application |
| 8 | srsEPC - a light-weight 4G core network implementation with MME, HSS and S/P-GW |
| 9 | Source code for srsRAN can be found [https://github.com/srsran/srsRAN here] and documentation can be found [https://docs.srsran.com/en/latest/ here] |
| 10 | |
| 11 | |
| 12 | |
| 13 | === Description === |
| 14 | This tutorial contains instructions for setting up a 4G/5G network in COSMOS SB1. |
| 15 | |
| 16 | === Prerequisites === |
| 17 | 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. |
| 18 | |
| 19 | === Resources required === |
| 20 | 1 USRP-2974, 1 COSMOS node with SIM8200 modem. |
| 21 | in [https://wiki.cosmos-lab.org/wiki/Architecture/Domains/cosmos_weekshall COSMOS Weeks hall] domain |
| 22 | |
| 23 | === Tutorial Setup === |
| 24 | |
| 25 | Follow the steps below to gain access to the [wiki:/Architecture/Domains/cosmos_sb1 Weeks hall console] and set up nodes with appropriate images. |
| 26 | 1. If you don't have one already, sign up for a [https://www.cosmos-lab.org/portal-2/ COSMOS account] |
| 27 | 1. [wiki:/GettingStarted#MakeaReservation Create a resource reservation] on sandbox 1 |
| 28 | 1. [wiki:/GettingStarted#LogintoyourReservation Login] into sandbox 1 console (console.sb1.cosmos-lab.org) with two SSH sessions. |
| 29 | 1. Make sure all the resources in the domain are turned off: |
| 30 | {{{#!shell |
| 31 | omf tell -a offh -t system:topo:allres |
| 32 | }}} |
| 33 | For this tutorial we will be using a USRP-2974 sdr2-s1-lg1 and a COSMOS node srv1-in1. srv1-in1 has a [https://www.waveshare.com/sim8200-m2.htm Waveshare SIM8200 modem] attached over USB. |
| 34 | 1. Load amarisoft-2974.ndz on sdr2-s1-lg1 |
| 35 | {{{#!shell |
| 36 | omf load -i amarisoft-2974.ndz -t sdr2-s1-lg1 |
| 37 | }}} |
| 38 | {{{#!shell |
| 39 | omf load -i waveshare-sim8200.ndz -t srv1-in1 |
| 40 | }}} |
| 41 | 1. Turn all the required resources on and check the status |
| 42 | {{{#!shell |
| 43 | omf tell -a on -t srv1-in1,sdr2-s1-lg1 |
| 44 | }}} |
| 45 | {{{#!shell |
| 46 | omf stat -t system:topo:allres |
| 47 | }}} |
| 48 | 1. ssh to the nodes, use option -Y for using GUI. |
| 49 | |
| 50 | === Tutorial Execution === |
| 51 | ==== Run the Amarisoft MME ==== |
| 52 | * Upon logging into sdr2-s1-lg1, run uhd_find_devices to check the USRP. |
| 53 | {{{#!shell |
| 54 | root@sdr2-s1-lg1:~# uhd_find_devices --args="resource=RIO0" |
| 55 | [INFO] [UHD] linux; GNU C++ version 7.5.0; Boost_106501; UHD_3.15.0.0-release |
| 56 | -------------------------------------------------- |
| 57 | -- UHD Device 0 |
| 58 | -------------------------------------------------- |
| 59 | Device Address: |
| 60 | serial: 318F215 |
| 61 | fpga: XG |
| 62 | name: |
| 63 | product: X310 |
| 64 | resource: RIO0 |
| 65 | type: x300 |
| 66 | |
| 67 | }}} |
| 68 | * Run the MME |
| 69 | {{{#!shell |
| 70 | root@sdr2-s1-lg1:~# cd /opt/amarisoft/ltemme-linux-2021-09-18 |
| 71 | root@sdr2-s1-lg1:/opt/amarisoft/ltemme-linux-2021-09-18# ./ltemme config/mme.cfg |
| 72 | Core version 2021-09-18, Copyright (C) 2012-2021 Amarisoft |
| 73 | This software is licensed to Rutgers University (The State University of New Jersey). |
| 74 | License server: license.orbit-lab.org (0b-b4-46-dc-2f-83-58-cb) |
| 75 | Support and software update available until 2022-08-18. |
| 76 | |
| 77 | (mme) |
| 78 | |
| 79 | }}} |
| 80 | |
| 81 | ==== Run the srs gNodeb ==== |
| 82 | |
| 83 | |
| 84 | ==== SIM8200 UE ==== |
| 85 | * As the base station runs,SIM8200 modem on srv1-in1 communicates with the base station and registers to the network. You can see eNodeb trace similar to the one below. |
| 86 | {{{#!shell |
| 87 | (enb) t |
| 88 | Press [return] to stop the trace |
| 89 | PRACH: cell=01 seq=20 ta=11 snr=16.0 dB |
| 90 | ----DL----------------------- --UL------------------------------------------------ |
| 91 | UE_ID CL RNTI C cqi ri mcs retx txok brate snr puc1 mcs rxko rxok brate #its phr pl ta |
| 92 | 1 001 003d 1 7 1 6.8 0 5 708 16.1 -1.0 10.0 12 7 2.55k 1/4.5/6 0 24 -0.3 |
| 93 | 1 001 003d 1 9 1 13.8 1 23 6.46k 11.7 2.9 17.2 19 21 18.7k 1/4.1/6 5 24 -0.2 |
| 94 | 1 001 003d 1 7 1 15.4 0 5 960 11.4 14.7 9.0 0 1 628 1/1.0/1 2 25 -0.4 |
| 95 | 1 001 003d 1 7 1 11.0 0 4 312 7.2 -8.9 16.0 0 1 612 2/2.0/2 5 24 -0.1 |
| 96 | 1 001 003d 1 7 1 11.8 0 4 336 9.2 11.4 - 0 0 0 - 5 24 -1.0 |
| 97 | 1 001 003d 1 5 1 11.8 0 4 336 12.5 18.2 11.0 0 1 516 1/1.0/1 3 24 -0.4 |
| 98 | 1 001 003d 1 8 1 11.8 0 4 372 4.3 16.8 - 0 0 0 - 3 24 -0.4 |
| 99 | |
| 100 | }}} |
| 101 | * In the MME session you can check the eNodeb/gNodeb and registered ue. The modem has a SIM card with IMSI 310014000000017 as shown in the MME log below. IP address 192.168.2.2 has been allocated to the modem. In the trace below you can see the CN listed as EPC for LTE or 5GC for 5GNR SA network. |
| 102 | {{{#!shell |
| 103 | (mme) enb |
| 104 | PLMN eNB_ID IP:Port #UEctx TACs |
| 105 | 310014 0x1a2d0 127.0.1.1:47633 0 0x1 |
| 106 | (mme) ue |
| 107 | SUPI IMEISV CN M-TMSI/5G-TMSI REG TAC #BEARER IP_ADDR |
| 108 | 310014000000017 8642840402500300 EPC 0xa592c726 Y 310014. 0x1 2 192.168.2.2 192.168.4.2 2001:468:3000:1:: |
| 109 | (mme) |
| 110 | |
| 111 | }}} |
| 112 | {{{#!shell |
| 113 | (mme) gnb |
| 114 | PLMN RAN_ID IP:Port #UEctx TACs |
| 115 | 310014 0x12345 127.0.1.1:38071 0 0x64 |
| 116 | (mme) ue |
| 117 | SUPI IMEISV CN M-TMSI/5G-TMSI REG TAC #BEARER IP_ADDR |
| 118 | 310014000000017 8642840402500300 5GC 0x525b2ca7 Y 310014. 0x64 2 192.168.4.2 2001:468:3000:1:: 192.168.2.2 |
| 119 | (mme) |
| 120 | |
| 121 | }}} |
| 122 | |
| 123 | * On srv1-in1, you can see that the modem shows up as a wwan interface wwp0s20u3i5. |
| 124 | {{{#!shell |
| 125 | root@srv1-in1:~# ifconfig -a |
| 126 | CTRL: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 |
| 127 | inet 10.44.1.5 netmask 255.255.0.0 broadcast 10.44.255.255 |
| 128 | inet6 fe80::da50:e6ff:fed4:f80e prefixlen 64 scopeid 0x20<link> |
| 129 | ether d8:50:e6:d4:f8:0e txqueuelen 1000 (Ethernet) |
| 130 | RX packets 53 bytes 7687 (7.6 KB) |
| 131 | RX errors 0 dropped 7 overruns 0 frame 0 |
| 132 | TX packets 39 bytes 5910 (5.9 KB) |
| 133 | TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 |
| 134 | device interrupt 20 memory 0xf7d00000-f7d20000 |
| 135 | |
| 136 | DATA1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 |
| 137 | inet6 fe80::da50:e6ff:fed4:f60a prefixlen 64 scopeid 0x20<link> |
| 138 | ether d8:50:e6:d4:f6:0a txqueuelen 1000 (Ethernet) |
| 139 | RX packets 5 bytes 300 (300.0 B) |
| 140 | RX errors 0 dropped 5 overruns 0 frame 0 |
| 141 | TX packets 11 bytes 1874 (1.8 KB) |
| 142 | TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 |
| 143 | |
| 144 | lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 |
| 145 | inet 127.0.0.1 netmask 255.0.0.0 |
| 146 | inet6 ::1 prefixlen 128 scopeid 0x10<host> |
| 147 | loop txqueuelen 1000 (Local Loopback) |
| 148 | RX packets 148 bytes 10311 (10.3 KB) |
| 149 | RX errors 0 dropped 0 overruns 0 frame 0 |
| 150 | TX packets 148 bytes 10311 (10.3 KB) |
| 151 | TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 |
| 152 | |
| 153 | wwp0s20u3i5: flags=4291<UP,BROADCAST,RUNNING,NOARP,MULTICAST> mtu 1500 |
| 154 | inet6 fe80::7cab:29ff:fe84:1b18 prefixlen 64 scopeid 0x20<link> |
| 155 | ether 7e:ab:29:84:1b:18 txqueuelen 1000 (Ethernet) |
| 156 | RX packets 0 bytes 0 (0.0 B) |
| 157 | RX errors 0 dropped 0 overruns 0 frame 0 |
| 158 | TX packets 0 bytes 0 (0.0 B) |
| 159 | TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 |
| 160 | |
| 161 | }}} |
| 162 | |
| 163 | * Set the IP address of the wwan interface to the once allocated by the MME (192.168.2.2 in this case) |
| 164 | {{{#!shell |
| 165 | root@srv1-in1:~# ifconfig wwp0s20u3i5 192.168.2.2 |
| 166 | }}} |
| 167 | |
| 168 | |
| 169 | ==== Test ==== |
| 170 | * You can now communicate with the base station over the air. The data connection can be tested with ping or iperf as below. |
| 171 | {{{#!shell |
| 172 | root@srv1-in1:~# ifconfig wwp0s20u3i5 192.168.2.2 |
| 173 | root@srv1-in1:~# ping 192.168.2.1 |
| 174 | PING 192.168.2.1 (192.168.2.1) 56(84) bytes of data. |
| 175 | 64 bytes from 192.168.2.1: icmp_seq=1 ttl=64 time=146 ms |
| 176 | 64 bytes from 192.168.2.1: icmp_seq=2 ttl=64 time=25.0 ms |
| 177 | 64 bytes from 192.168.2.1: icmp_seq=3 ttl=64 time=23.9 ms |
| 178 | 64 bytes from 192.168.2.1: icmp_seq=4 ttl=64 time=21.9 ms |
| 179 | 64 bytes from 192.168.2.1: icmp_seq=5 ttl=64 time=39.9 ms |
| 180 | 64 bytes from 192.168.2.1: icmp_seq=6 ttl=64 time=37.9 ms |
| 181 | 64 bytes from 192.168.2.1: icmp_seq=7 ttl=64 time=35.9 ms |
| 182 | ^C |
| 183 | --- 192.168.2.1 ping statistics --- |
| 184 | 7 packets transmitted, 7 received, 0% packet loss, time 6010ms |
| 185 | rtt min/avg/max/mdev = 21.920/47.296/146.430/41.032 ms |
| 186 | |
| 187 | }}} |
| 188 | |
| 189 | * iperf testing |
| 190 | {{{#!shell |
| 191 | root@sdr2-s1-lg1:~# iperf3 -s -i 1 |
| 192 | ----------------------------------------------------------- |
| 193 | Server listening on 5201 |
| 194 | ----------------------------------------------------------- |
| 195 | |
| 196 | }}} |
| 197 | {{{#!shell |
| 198 | root@srv1-in1:~# iperf3 -c 192.168.2.1 -b 10M -i 1 -t 60 |
| 199 | Connecting to host 192.168.2.1, port 5201 |
| 200 | [ 4] local 192.168.2.2 port 34278 connected to 192.168.2.1 port 5201 |
| 201 | [ ID] Interval Transfer Bandwidth Retr Cwnd |
| 202 | [ 4] 0.00-1.00 sec 451 KBytes 3.70 Mbits/sec 0 45.2 KBytes |
| 203 | [ 4] 1.00-2.00 sec 469 KBytes 3.85 Mbits/sec 0 63.6 KBytes |
| 204 | [ 4] 2.00-3.00 sec 708 KBytes 5.80 Mbits/sec 0 84.8 KBytes |
| 205 | [ 4] 3.00-4.00 sec 635 KBytes 5.20 Mbits/sec 0 109 KBytes |
| 206 | [ 4] 4.00-5.00 sec 638 KBytes 5.22 Mbits/sec 0 129 KBytes |
| 207 | [ 4] 5.00-6.00 sec 798 KBytes 6.53 Mbits/sec 0 158 KBytes |
| 208 | [ 4] 6.00-7.00 sec 667 KBytes 5.47 Mbits/sec 0 198 KBytes |
| 209 | [ 4] 7.00-8.00 sec 643 KBytes 5.27 Mbits/sec 0 260 KBytes |
| 210 | [ 4] 8.00-9.00 sec 590 KBytes 4.83 Mbits/sec 0 315 KBytes |
| 211 | [ 4] 9.00-10.00 sec 761 KBytes 6.23 Mbits/sec 0 427 KBytes |
| 212 | [ 4] 10.00-11.00 sec 908 KBytes 7.44 Mbits/sec 0 581 KBytes |
| 213 | |
| 214 | }}} |
| 215 | |
| 216 | |
| 217 | |