| 84 | [[CollapsibleStart(Run eNodeB/gNodeB)]] |
| 85 | * Disable CPU hyper-threading to ensure stable CPU timing for real-time SDR tasks: |
| 86 | |
| 87 | {{{#!shell |
| 88 | root@sdr1-piradio:~# echo off | sudo tee /sys/devices/system/cpu/smt/control |
| 89 | off |
| 90 | root@sdr1-piradio: |
| 91 | }}} |
| 92 | |
| 93 | * Run Amarisoft 5G NR Stand alone gNodeB as shown below by passing the gNodeB configuration file as an argument. The configuration file defines SDR(USRP 2974) address, operating band, bandwidth and other parameters. |
| 94 | |
| 95 | {{{#!shell |
| 96 | root@sdr1-piradio:~# cd /opt/amarisoft/lteenb-linux-2024-09-13 |
| 97 | root@sdr1-piradio:/opt/amarisoft/lteenb-linux-2024-09-13# ./lteenb config/gnb-sa-2974-n7-5M.cfg |
| 98 | Base Station version 2024-09-13, Copyright (C) 2012-2024 Amarisoft |
| 99 | This software is licensed to Rutgers University (The State University of New Jersey). |
| 100 | License server: license.orbit-lab.org (0b-b4-46-dc-2f-83-58-cb) |
| 101 | Support and software update available until 2025-08-18. |
| 102 | |
| 103 | [INFO] [UHD] linux; GNU C++ version 11.4.0; Boost_107400; UHD_4.4.0.HEAD-0-g3cf9529f |
| 104 | [INFO] [X300] X300 initialization sequence... |
| 105 | [INFO] [X300] Connecting to niusrpriorpc at localhost:5444... |
| 106 | [INFO] [X300] Using LVBITX bitfile /usr/local/share/uhd/images/usrp_x310_fpga_XG.lvbitx |
| 107 | [INFO] [GPS] Found an internal GPSDO: LC_XO, Firmware Rev 0.929b |
| 108 | [INFO] [X300] Radio 1x clock: 184.32 MHz |
| 109 | RF0: sample_rate=7.680 MHz dl_freq=2680.000 MHz ul_freq=2560.000 MHz (band n7) dl_ant=1 ul_ant=1 |
| 110 | WARNING: The GPS is not locked. If you need time synchronization, you should restart the program when the GPS is locked. |
| 111 | (enb) |
| 112 | (enb) ng |
| 113 | gNB NG connection state: |
| 114 | - server=127.0.1.100:38412 state=setup_done name=amarisoft.amf.5gc.mnc014.mcc310.3gppnetwork.org PLMN=310014 |
| 115 | (enb) |
| 116 | (enb) cell phy |
| 117 | [gnb0012345] PLMN=310014 gNB_ID=0x12345 |
| 118 | --------Global-------- -----------DL-------------- -----------UL---------- -----SSB--- |
| 119 | Cell RAT BAND BW P ARFCN ANT NL SCS QAM POW ARCFN ANT NL SCS QAM ARFCN SCS |
| 120 | 0x001 NR n7 5 0 536000 1 1 15 256 -39 512000 1 1 15 256 535937 15 |
| 121 | (enb) |
| 122 | (enb) tx_gain |
| 123 | Chan Port Gain(dB) |
| 124 | TX0 0 10.0 |
| 125 | (enb) |
| 126 | }}} |
| 127 | * Type 'help' at the prompt and use commands like 'cell phy' to look at the various parameters of the base station. |
| 128 | |
| 129 | [[CollapsibleEnd]] |
| 130 | |
| 131 | |
| 132 | [[CollapsibleStart(Run Amarisoft UE Simulator)]] |
| 133 | * Run the Amarisoft UE simulator on sdr2-piradio by passing the configuration file 'ue-nr-sa-2974-n7-5M.cfg' as an argument. |
| 134 | |
| 135 | {{{#!shell |
| 136 | root@sdr2-piradio:~# cd /opt/amarisoft/lteue-linux-2024-09-13 |
| 137 | root@sdr2-piradio:/opt/amarisoft/lteue-linux-2024-09-13# ./lteue config/ue-nr-sa-2974-n7-5M.cfg |
| 138 | UE version 2024-09-13, Copyright (C) 2012-2024 Amarisoft |
| 139 | This software is licensed to Rutgers University (The State University of New Jersey). |
| 140 | License server: license.orbit-lab.org (0b-b4-46-dc-2f-83-58-cb) |
| 141 | Support and software update available until 2025-08-18. |
| 142 | |
| 143 | [INFO] [UHD] linux; GNU C++ version 11.4.0; Boost_107400; UHD_4.4.0.HEAD-0-g3cf9529f |
| 144 | [INFO] [X300] X300 initialization sequence... |
| 145 | [INFO] [X300] Connecting to niusrpriorpc at localhost:5444... |
| 146 | [INFO] [X300] Using LVBITX bitfile /usr/local/share/uhd/images/usrp_x310_fpga_XG.lvbitx |
| 147 | [INFO] [GPS] Found an internal GPSDO: LC_XO, Firmware Rev 0.929a |
| 148 | [INFO] [X300] Radio 1x clock: 184.32 MHz |
| 149 | RF0: sample_rate=23.040 MHz dl_freq=2680.000 MHz ul_freq=2560.000 MHz (band n7) dl_ant=1 ul_ant=1 |
| 150 | WARNING: The GPS is not locked. If you need time synchronization, you should restart the program when the GPS is locked. |
| 151 | (ue) Cell 0: SIB found |
| 152 | ue |
| 153 | # UE_ID CL RNTI RRC_STATE EMM_STATE #ERAB IP_ADDR |
| 154 | NR 0 1 0 0 offline power off 0 |
| 155 | (ue) power_on |
| 156 | (ue) ue |
| 157 | # UE_ID CL RNTI RRC_STATE EMM_STATE #ERAB IP_ADDR |
| 158 | NR 0 1 0 461b running registered 1 192.168.2.2 |
| 159 | (ue) t |
| 160 | |
| 161 | }}} |
| 162 | |
| 163 | * Type 'ue' at the prompt to see the status of the UEs and type 'power_on' to start a UE. The above simulation shows 1 UE, and the number of UEs is specified as UE_COUNT in the configuration file. |
| 164 | * Go back to 'mme' prompt in srv1-lg1 and check the gnb, ue list. |
| 165 | |
| 166 | {{{#!shell |
| 167 | (mme) gnb |
| 168 | PLMN RAN_ID IP:Port #UEctx TACs |
| 169 | 310014 0x12345 127.0.1.1:49084 0 0x1 |
| 170 | (mme) ue |
| 171 | SUPI IMEISV CN M-TMSI/5G-TMSI REG TAC #BEARER IP_ADDR |
| 172 | 001010123456789 0123456700000101 5GC 0xa5fa281 Y 310014. 0x1 1 cosmos-5G/192.168.2.2 |
| 173 | (mme) |
| 174 | |
| 175 | }}} |
| 176 | * The base station (sdr1-piradio) can now talk to the UEs via the IP addresses assigned above. |
| 177 | [[CollapsibleEnd]] |
| 178 | |
| 179 | |
| 180 | [[CollapsibleStart(Iperf test)]] |
| 181 | * Network name space and tunnels for each UE. |
| 182 | {{{#!shell |
| 183 | root@sdr2-piradio:~# ip netns list |
| 184 | ue1 (id: 1) |
| 185 | root@sdr2-piradio:~# ip netns exec ue1 ip addr |
| 186 | 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 |
| 187 | link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 |
| 188 | inet 127.0.0.1/8 scope host lo |
| 189 | valid_lft forever preferred_lft forever |
| 190 | inet6 ::1/128 scope host |
| 191 | valid_lft forever preferred_lft forever |
| 192 | 19: pdn0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 500 |
| 193 | link/none |
| 194 | inet 192.168.2.2/24 scope global pdn0 |
| 195 | valid_lft forever preferred_lft forever |
| 196 | |
| 197 | }}} |
| 198 | * Iperf server on the UE |
| 199 | {{{#!shell |
| 200 | root@sdr2-piradio:~# ip netns exec ue1 iperf3 -s -B 192.168.2.2 |
| 201 | ----------------------------------------------------------- |
| 202 | Server listening on 5201 |
| 203 | ----------------------------------------------------------- |
| 204 | |
| 205 | }}} |
| 206 | * Iperf client on the base station |
| 207 | {{{#!shell |
| 208 | root@sdr1-piradio:~# iperf3 -c 192.168.2.2 -b 30M -i 1 -u -t 10 |
| 209 | Connecting to host 192.168.2.2, port 5201 |
| 210 | [ 5] local 192.168.2.1 port 37967 connected to 192.168.2.2 port 5201 |
| 211 | [ ID] Interval Transfer Bitrate Total Datagrams |
| 212 | [ 5] 0.00-1.00 sec 3.57 MBytes 30.0 Mbits/sec 2588 |
| 213 | [ 5] 1.00-2.00 sec 3.58 MBytes 30.0 Mbits/sec 2590 |
| 214 | [ 5] 2.00-3.00 sec 3.58 MBytes 30.0 Mbits/sec 2589 |
| 215 | [ 5] 3.00-4.00 sec 3.58 MBytes 30.0 Mbits/sec 2590 |
| 216 | [ 5] 4.00-5.00 sec 3.58 MBytes 30.0 Mbits/sec 2590 |
| 217 | [ 5] 5.00-6.00 sec 3.58 MBytes 30.0 Mbits/sec 2590 |
| 218 | [ 5] 6.00-7.00 sec 3.58 MBytes 30.0 Mbits/sec 2590 |
| 219 | [ 5] 7.00-8.00 sec 3.58 MBytes 30.0 Mbits/sec 2589 |
| 220 | [ 5] 8.00-9.00 sec 3.58 MBytes 30.0 Mbits/sec 2590 |
| 221 | [ 5] 9.00-10.00 sec 3.58 MBytes 30.0 Mbits/sec 2590 |
| 222 | - - - - - - - - - - - - - - - - - - - - - - - - - |
| 223 | [ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams |
| 224 | [ 5] 0.00-10.00 sec 35.8 MBytes 30.0 Mbits/sec 0.000 ms 0/25896 (0%) sender |
| 225 | [ 5] 0.00-10.00 sec 0.00 Bytes 0.00 bits/sec 0.000 ms 0/0 (0%) receiver |
| 226 | iperf3: error - the server has terminated |
| 227 | root@sdr1-piradio:~# |
| 228 | }}} |
| 229 | |
| 230 | * You can also get the detailed report of the transmission ( UE_ID, SINR, RSRP, mcs, Bitrate) by activating the status display on the UE side. |
| 231 | |
| 232 | {{{#!shell |
| 233 | (ue) power_on |
| 234 | (ue) ue |
| 235 | # UE_ID CL RNTI RRC_STATE EMM_STATE #ERAB IP_ADDR |
| 236 | NR 0 1 0 461b running registered 1 192.168.2.2 |
| 237 | (ue) t |
| 238 | Press [return] to stop the trace |
| 239 | ----------------------Hz---ppm----dB----dBm-----------------------DL---------- ---------------------UL- |
| 240 | UE_ID RAT CL RNTI CFO SRO SINR RSRP mcs retx rxko rxok brate #its mcs ta retx tx brate |
| 241 | 1 NR 00 461c -697 -0.5 2.0 -77.2 0.0 15 17 51 376k 1/3.6/5 17.0 6 0 1 14.3k |
| 242 | 1 NR 00 461c -733 -1.5 1.8 -76.9 0.0 339 358 935 345k 1/3.8/5 15.7 7 4 26 16.8k |
| 243 | 1 NR 00 461c -750 -2.2 0.3 -77.0 0.0 342 363 908 335k 1/3.8/5 14.2 9 4 21 12.4k |
| 244 | 1 NR 00 461c -746 -0.8 -2.5 -79.3 0.0 336 357 926 343k 1/3.8/5 14.6 11 5 22 13.2k |
| 245 | 1 NR 00 461c -855 -1.8 0.2 -77.6 0.0 340 363 906 334k 1/3.8/5 14.6 13 1 24 14.2k |
| 246 | 1 NR 00 461c -841 -2.1 -1.4 -79.4 0.0 351 369 913 338k 1/3.8/5 15.3 14 5 20 12.5k |
| 247 | 1 NR 00 461c -848 0.2 -5.2 -81.9 0.0 330 353 916 340k 1/3.8/5 14.3 16 5 25 14.7k |
| 248 | 1 NR 00 461c -764 -0.2 -0.1 -78.7 0.0 357 372 898 332k 1/3.8/5 14.7 16 7 24 14.9k |
| 249 | 1 NR 00 461c -743 -0.4 2.5 -77.3 0.0 327 355 906 334k 1/3.8/5 15.0 16 4 27 16.7k |
| 250 | 1 NR 00 461c -761 -0.5 -2.3 -80.4 0.0 333 363 902 332k 1/3.8/5 14.9 16 3 19 11.3k |
| 251 | ----------------------Hz---ppm----dB----dBm-----------------------DL---------- ---------------------UL- |
| 252 | }}} |
| 253 | |
| 254 | |
| 255 | [[CollapsibleEnd]] |