Docs Srsran Com 4g en Latest
Docs Srsran Com 4g en Latest
Release 23.11
1 Getting Started 2
2 srsRAN 4G Features 3
2.1 srsUE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 srsENB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3 srsEPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3 Reporting Issues 6
4 Development Status 7
5 Installation Guide 8
5.1 Which Installation Should I Use? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5.2 Package Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5.3 Installation from Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5.4 Getting Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
6 Release Notes 12
7 Contributions 18
7.1 FAQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
8 Troubleshooting 20
8.1 Building with Debug Symbols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
8.2 Examining PCAPs with Wireshark . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
10 UE User Manual 24
10.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
10.2 Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
10.3 Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
10.4 Advanced Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
10.5 Configuration Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
10.6 Command Line Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
i
11.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
11.2 Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
11.3 Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
11.4 Advanced Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
11.5 Configuration Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
11.6 Command Line Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
14 COTS UE 58
14.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
14.2 Driver & Conf. File Set-Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
14.3 Connecting a COTS UE to srsRAN 4G . . . . . . . . . . . . . . . . . . . . . . . . . . 64
14.4 Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
16 Carrier Aggregation 93
16.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
16.2 Carrier Aggregation using SDR Hardware . . . . . . . . . . . . . . . . . . . . . . . . . 93
16.3 Carrier Aggregation using ZeroMQ RF emulation . . . . . . . . . . . . . . . . . . . . 95
16.4 Known issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
17 C-V2X Signalling 96
17.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
17.2 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
17.3 Anatomy of a C-V2X Signal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
17.4 Decoding C-V2X Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
ii
19.4 Decoding the NB-IoT transmission . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
19.5 Transmit and Receive Downlink Signal . . . . . . . . . . . . . . . . . . . . . . . . . . 107
19.6 Known issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
22 5G SA srsUE 123
22.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
22.2 Hardware Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
22.3 Hardware Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
22.4 Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
22.5 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
22.6 Running the Network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
22.7 Console Trace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
iii
srsRAN 4G Documentation, Release 23.11
srsRAN 4G is an open-source 4G software radio suite from SRS. For 5G RAN, see our new O-RAN
CU/DU solution - srsRAN Project.
Featuring UE, eNodeB and lightweight EPC applications, srsRAN 4G can be used to build a complete
end-to-end LTE mobile wireless network. For more information, see www.srsran.com.
The srsRAN 4G suite currently includes:
• srsUE: a full-stack 4G UE application with prototype 5G features
• srsENB: a full-stack 4G eNodeB
• srsEPC: a light-weight 4G EPC implementation with MME, HSS and S/P-GW
All srsRAN 4G software runs in linux with off-the-shelf compute and radio hardware.
For our ORAN-native 5G CU/DU solution, see the srsRAN Project documentation.
GENERAL 1
CHAPTER
ONE
GETTING STARTED
2
CHAPTER
TWO
SRSRAN 4G FEATURES
2.1 srsUE
srsUE is a 4G LTE UE modem with prototype 5G NR features implemented entirely in software. Running
as an application on a standard Linux-based operating system, srsUE connects to any LTE network and
provides a standard network interface with high-speed mobile connectivity.
The SRS UE includes the following features:
• LTE Release 10 aligned with features up to release 15
• Prototype 5G NSA and SA support
• TDD and FDD configurations
• Tested LTE bandwidths: 1.4, 3, 5, 10, 15 and 20 MHz
• Tested 5G SA bandwidths: 5, 10, 15 and 20 MHz
• Transmission modes 1 (single antenna), 2 (transmit diversity), 3 (CCD) and 4 (closed-loop spatial
multiplexing)
• Manually configurable DL/UL carrier frequencies
• Soft USIM supporting XOR/Milenage authentication
• Hard USIM support via PC/SC
• Snow3G and AES integrity/ciphering support
• TUN virtual network kernel interface integration for Linux OS
• Detailed log system with per-layer log levels and hex dumps
• MAC and NAS layer wireshark packet captures
• Command-line trace metrics
• Detailed input configuration files
• Evolved multimedia broadcast and multicast service (eMBMS)
• Frequency-based ZF and MMSE equalizers
• Highly optimized Turbo Decoder available in Intel SSE4.1/AVX2 (+150 Mbps)
• Channel simulator for EPA, EVA, and ETU 3GPP channels
• QoS support
• 150 Mbps DL in 20 MHz MIMO TM3/TM4 or 2xCA configuration (195 Mbps with QAM256)
3
srsRAN 4G Documentation, Release 23.11
2.2 srsENB
The srsENB LTE eNodeB includes the following features:
• LTE Release 10 aligned with features up to release 15
• Prototype 5G NR support for both 5G NSA and SA
• FDD configuration
• Tested bandwidths: 1.4, 3, 5, 10, 15 and 20 MHz
• Transmission mode 1 (single antenna), 2 (transmit diversity), 3 (CCD) and 4 (closed-loop spatial
multiplexing)
• Frequency-based ZF and MMSE equalizer
• Evolved multimedia broadcast and multicast service (eMBMS)
• Highly optimized Turbo Decoder available in Intel SSE4.1/AVX2 (+150 Mbps)
• Detailed log system with per-layer log levels and hex dumps
• MAC layer wireshark packet capture
• Command-line trace metrics
• Detailed input configuration files
• Channel simulator for EPA, EVA, and ETU 3GPP channels
• ZeroMQ-based fake RF driver for I/Q over IPC/network
• Intra-ENB and Inter-ENB (S1) mobility support
• Proportional-fair and round-robin MAC scheduler with FAPI-like C++ API
• SR support
• Periodic and Aperiodic CQI feedback support
• Standard S1AP and GTP-U interfaces to the Core Network
• 150 Mbps DL in 20 MHz MIMO TM3/TM4 with commercial UEs (195 Mbps with QAM256)
• 75 Mbps DL in SISO configuration with commercial UEs
• 50 Mbps UL in 20 MHz with commercial UEs
• User-plane encryption
Read the ENB User Manual. for further info on the eNB.
2.3 srsEPC
srsEPC is a lightweight implementation of a complete LTE core network (EPC). The srsEPC application
runs as a single binary but provides the key EPC components of Home Subscriber Service (HSS), Mobil-
ity Management Entity (MME), Service Gateway (S-GW) and Packet Data Network Gateway (P-GW).
The srsEPC application is not intended for deployment but can be used for testing.
Read the EPC User Manual. for further info on the EPC.
2.3. srsEPC 5
CHAPTER
THREE
REPORTING ISSUES
For contributing code and reporting issues we generally encourage users to directly use the Github’s pull
request or issue tracking system. This allows easy tracking and also make enhancements and fixes coming
from public users available to everyone immediately.
For issues or fixes that could potentially affect the security of users we also provide a dedicated mail ad-
dress [email protected] that shall be used for private communication. The srsRAN team will carefully
check and analyse each submission and assign a threat category to make sure it is addressed appropriately.
6
CHAPTER
FOUR
DEVELOPMENT STATUS
7
CHAPTER
FIVE
INSTALLATION GUIDE
In short, users looking for a simple installation who only expect to run basic srsRAN 4G applications
with USRP front-ends should use the package installation. Users who wish to modify srsRAN 4G and/or
8
srsRAN 4G Documentation, Release 23.11
use alternative RF front-ends such as limeSDR and BladeRF should install from source.
or on Fedora:
For CentOS, use the Fedora packages but replace libconfig-devel with just libconfig.
Note that depending on your flavor and version of Linux, the actual package names may be different.
• Optional requirements:
– srsGUI - for real-time plotting.
– libpcsclite-dev - for accessing smart card readers
– libdw-dev libdw - for truly informative backtraces using backward-cpp
• RF front-end driver:
– UHD
– SoapySDR
– BladeRF
– ZeroMQ
ò Note
If using UHD we recommended the LTS version of UHD, i.e. either 3.9.7 or 3.15.
. Warning
All mandatory requirements, optional requirements, and RF front-end drivers must be installed prior
to building srsRAN 4G. Failing to do this will result in errors at run-time or prevent srsRAN 4G from
building correctly.
This installs srsRAN 4G and also copies the default srsRAN 4G config files to ~/.config/srsran.
SIX
RELEASE NOTES
• 23.11
– Update srsUE to work with 5/10/15/20 MHz bandwidth in 5G SA mode
– Added a new frequency estimation algorithm.
– Updated cmake file
– Other bug-fixes and improved stability and performance in all parts
• 23.04
– Introduced configurable s1 connection timer
– Updated 4G RRC ASN.1 to Rel 17
– Added reestablishment support during S1-Handover
– Added basic support for NSSAI based slicing in UE & gNodeB
– Updated the RRC to enable srsUE compatibility with new srsgnb
– Updated eMBMS to fix various outstanding issues
– Added basic support for RIC E2 interface
– Other bug-fixes and improved stability and performance in all parts
• 22.10
– Fix DL NAS integrity checks in srsUE
– Remove Travis and LGTM as CI platforms
– Remove polarssl as optional dependency (only mbedTLS used and required for security)
– Allow to specify multiple PLMNs in SIB1
– Allow non-blocking S1AP connect and expose various other SCTP options
– Add support to broadcast MAC backoff indicator
– Seperate T300/T301 timer in srsENB
– Fix in eMBMS payload buffer handling
– Fix memleak in NR scheduler
• 22.04.1
– Bug-fixes in RLC AM and PDCP in NR
12
srsRAN 4G Documentation, Release 23.11
13
srsRAN 4G Documentation, Release 23.11
15
srsRAN 4G Documentation, Release 23.11
• 001.004.000
– Fixed issue in rv for format1C causing incorrect SIB1 decoding in some networks
– Improved PDCCH decoding BER (fixed incorrect trellis initialization)
– Improved PUCCH RX performance
• 001.003.000
– Bugfixes:
∗ x300 master clock rate
∗ PHICH: fixed bug causing more NACKs
∗ PBCH: fixed bug in encoding function
∗ channel estimation: fixed issue in time interpolation
∗ DCI: Fixed bug in Format1A packing
∗ DCI: Fixed bug in Format1C for RA-RNTI
∗ DCI: Fixed overflow in MIMO formats
– Improvements:
∗ Changed and cleaned DCI blind search API
∗ Added eNodeB PHY processing functions
• 001.002.000
– Bugfixes:
∗ Estimation of extrapolated of out-of-band carriers
∗ PDCCH REG interleaving for certain cell IDs
∗ MIB decoding
∗ Overflow in viterbi in PBCH
– Improvements:
∗ Synchronization in long multipath channels
∗ Better calibration of synchronization and estimation
∗ Averaging in channel estimation
∗ Improved 2-port diversity decoding
• 001.001.000
– Added support for BladeRF
17
CHAPTER
SEVEN
CONTRIBUTIONS
Contributions to the srsRAN 4G software suite are always welcome. The easiest way to contribute is by
issuing a pull request on the srsRAN 4G repository. We use clang-format to maintain consistent code
style - see our default format.
We ask srsRAN 4G contributors to agree to a Copyright License Agreement. This provides us with
necessary permissions to use contributed code. For more information, see the FAQ below. Viewing and
accepting the CLA agreement is integrated into the GitHub pull request workflow using CLAassistant.
7.1 FAQ
7.1.1 1. What is a Copyright License Agreement (CLA) and why do I need one?
A Copyright License Agreement is a legal document in which you state you are entitled to contribute
the code/documentation/translation to the project you’re contributing to and are willing to have it used in
distributions and derivative works. This means that should there be any kind of legal issue in the future
as to the origins and ownership of any particular piece of code, then that project has the necessary forms
on file from the contributor(s) saying they were permitted to make this contribution.
The CLA also ensures that once you have provided a contribution, you cannot try to withdraw permission
for its use at a later date. People and companies can therefore use that software, confident that they will
not be asked to stop using pieces of the code at a later date.
The agreements used by the srsRAN 4G project are standard documents provided by Project Harmony, a
community-centered group focused on contributor agreements for free and open source software (FOSS).
For more information, see www.harmonyagreements.org.
18
srsRAN 4G Documentation, Release 23.11
within proprietary products. As we do not ask for copyright assignment, you retain complete ownership
of your contributions and have the same rights to use or license those contributions which you would
have had without entering into a license agreement.
If you have any questions about srsRAN 4G licensing and contributions, please contact us at licens-
[email protected]
7.1. FAQ 19
CHAPTER
EIGHT
TROUBLESHOOTING
To build srsRAN 4G with debug symbols, the following steps can be taken. If srsRAN 4G has already
been built, the original build folder should be cleared before proceeding. This can be done with the
following command:
rm -rf *
make clean
The following command can then be used to build srsRAN 4G with debug symbols enabled:
The log file containing the debug info can be found in the srsran_backtrace.log file.
20
srsRAN 4G Documentation, Release 23.11
NINE
The overall system requires 2 x RF-frontends and 2 x PCs with a Linux based OS. This can be broken
down as follows:
The UE will be instantiated on machine 1 with an RF-frontend attached. The eNB will run on machine 2
with an RF-frontend attached to communicate over the air with the UE. The EPC will be instantiated on
the same machine as the eNB. See the following figure which outlines the overall system architecture.
A list of supported RF front-end drivers is outlined here. We also have some suggested hardware pack-
ages, which can be found here.
22
srsRAN 4G Documentation, Release 23.11
Note that you have to execute the applications with root privileges to enable real-time thread priorities
and to permit creation of virtual network interfaces.
srsENB and srsEPC can run on the same machine as a network-in-the-box configuration. srsUE needs to
run on a separate machine.
If you have installed the software suite using `sudo make install` and have installed the example
config files using `sudo srsRAN_4G_install_configs.sh`, you may just start all applications with
their default parameters.
9.2.1 srsEPC
On machine 1, run srsEPC as follows:
sudo srsepc
Using the default configuration, this creates a virtual network interface named “srs_spgw_sgi” on ma-
chine 1 with IP 172.16.0.1. All connected UEs will be assigned an IP in this network.
9.2.2 srsENB
Also on machine 1, but in another console, run srsENB as follows:
sudo srsenb
9.2.3 srsUE
On machine 2, run srsUE as follows:
sudo srsue
Using the default configuration, this creates a virtual network interface named “tun_srsue” on machine
2 with an IP in the network 172.16.0.x. Assuming the UE has been assigned IP 172.16.0.2, you may
now exchange IP traffic with machine 1 over the LTE link. For example, run a ping to the default SGi IP
address:
ping 172.16.0.1
9.3 Examples
If srsRAN 4G is built from source, then pre-configured example use-cases can be found in the following
folder: `./srsRAN_4G/build/lib/examples`
The following list outlines some of the use-cases covered:
• Cell Search
• NB-IoT Cell Search
• A UE capable of decoding PDSCH packets
• An eNB capable of creating and transmitting PDSCH packets
Note, the above examples require RF-hardware to run. These examples also support the use of srsGUI
for real time plotting of data.
9.3. Examples 23
CHAPTER
TEN
UE USER MANUAL
10.1 Introduction
10.1.1 Overview
SrsUE is a 4G LTE UE modem implemented entirely in software. Running as an application on a standard
Linux-based operating system, srsUE connects to any LTE network and provides a standard network
interface with high-speed mobile connectivity. To transmit and receive radio signals over the air, srsUE
requires SDR hardware such as the Ettus Research USRP.
To provide a complete end-to-end LTE network, use srsUE with srsENB and srsEPC.
This User Guide provides all the information needed to get up and running with the srsUE application,
to become familiar with all of the key features and to achieve optimal performance. For information on
extending or modifying the srsUE source code, please see the srsUE Developers Guide.
10.1.2 Features
The SRS UE includes the following features:
• LTE Release 10 aligned with features up to release 15
• Prototype 5G NSA and SA support
• TDD and FDD configurations
• Tested LTE bandwidths: 1.4, 3, 5, 10, 15 and 20 MHz
• Tested 5G SA bandwidths: 5, 10, 15 and 20 MHz
• Transmission modes 1 (single antenna), 2 (transmit diversity), 3 (CCD) and 4 (closed-loop spatial
multiplexing)
• Manually configurable DL/UL carrier frequencies
• Soft USIM supporting XOR/Milenage authentication
24
srsRAN 4G Documentation, Release 23.11
10.1.3 UE architecture
10.1. Introduction 25
srsRAN 4G Documentation, Release 23.11
The srsUE application includes layers 1, 2 and 3 as shown in the figure above.
At the bottom of the UE protocol stack, the Physical (PHY) layer carries all information from the MAC
over the air interface. It is responsible for link adaptation, power control, cell search and cell measure-
ment.
The Medium Access Control (MAC) layer multiplexes data between one or more logical channels into
Transport Blocks (TBs) which are passed to/from the PHY layer. The MAC is responsible for control
and scheduling information exchange with the eNodeB, retransmission and error correction (HARQ) and
priority handling between logical channels.
The Radio Link Control (RLC) layer can operate in one of three modes: Transparent Mode (TM), Unac-
knowledged Mode (UM) and Acknowledged Mode (AM). The RLC manages multiple logical channels or
bearers, each of which operates in one of these three modes. Transparent Mode bearers simply pass data
through the RLC. Unacknowledged Mode bearers perform concatenation, segmentation and reassembly
of data units, reordering and duplication detection. Acknowledged Mode bearers additionally perform
retransmission of missing data units and resegmentation.
The Packet Data Convergence Protocol (PDCP) layer is responsible for ciphering of control and data
plane traffic, integrity protection of control plane traffic, duplicate discarding and in-sequence delivery
of control and data plane traffic to/from the RRC and GW layers respectively. The PDCP layer also
performs header compression (ROHC) of IP data if supported.
The Radio Resource Control (RRC) layer manages control plane exchanges between the UE and the
eNodeB. It uses System Information broadcast by the network to configure the lower layers of the UE and
handles the establishment, maintenance and release of the RRC connection with the eNodeB. The RRC
manages cell search to support cell selection as well as cell measurement reporting and mobility control
for handover between neighbouring cells. The RRC is also responsible for handling and responding to
paging messages from the network. Finally, the RRC manages security functions for key management
and the establishment, configuration, maintenance and release of radio bearers.
The Non-Access Stratum (NAS) layer manages control plane exchanges between the UE and entities
within the core network (EPC). It controls PLMN selection and manages network attachment proce-
dures, exchanging identification and authentication information with the EPC. The NAS is responsible
for establishing and maintaining IP connectivity between the UE and the PDN gateway within the EPC.
The Gateway (GW) layer within srsUE is responsible for the creation and maintenance of the TUN virtual
network kernel interface, simulating a network layer device within the Linux operating system. The GW
layer permits srsUE to run as a user-space application and operates with data plane IP packets.
If you are using a different distribution, you can install from source using the guide provided in the
project’s GitHub page.
After installing the software you can install the configuration files into the default location (~/.config/
srsran_4g), by running:
srsran_4g_install_configs.sh user
Attaching UE...
Searching cell in DL EARFCN=2850, f_dl=2630.0 MHz, f_ul=2510.0 MHz
Found Cell: Mode=FDD, PCI=1, PRB=6, Ports=2, CFO=1.3 KHz
Found PLMN: Id=00101, TAC=7
Random Access Transmission: seq=42, ra-rnti=0x2
RRC Connected
Random Access Complete. c-rnti=0x46, ta=0
Network attach successful. IP: 192.168.3.2
With the UE attached to the network, type t in the console to enable the metrics trace. Example metrics
trace:
---------Signal-----------|-----------------DL-----------------|-----------UL-
˓→----------
rat pci rsrp pl cfo | mcs snr iter brate bler ta_us | mcs buff ␣
˓→brate bler
lte 1 -11 11 -1.4u | 0 142 0.0 0.0 0% 0.0 | 0 0.0 ␣
˓→ 0.0 0%
nr 500 1 0 23u | 27 70 1.0 8.5M 0% 0.0 | 28 36k ␣
˓→8.3M 0%
lte 1 -11 11 -1.4u | 0 142 0.0 0.0 0% 0.0 | 0 0.0 ␣
˓→ 0.0 0%
nr 500 1 0 23u | 27 70 1.0 9.2M 0% 0.0 | 28 24k ␣
˓→8.1M 0%
lte 1 -11 11 -1.4u | 0 142 0.0 0.0 0% 0.0 | 0 0.0 ␣
˓→ 0.0 0%
(continues on next page)
10.2.2 Configuration
The UE can be configured through the configuration file: ue.conf. This configuration file provides
parameters relating to operating frequencies, transmit power levels, USIM properties, logging levels and
much more. To run srsUE with the installed configuration file, use sudo srsue ~/.config/srsran/
ue.conf.
All parameters specified in the configuration file can also be overwritten on the command line. For
example, to run the UE with a different EARFCN, use sudo srsue ~/.config/srsran_4g/ue.conf
--rf.dl_earfcn 3350.
By default, srsUE uses a virtual USIM card, with parameters from ue.conf. These parameters are:
• ALGO - the authentication algorithm to use (MILENAGE or XOR)
• IMSI - the unique identifier of the USIM
• K - the secret key shared with the HSS in the EPC
• OP or OPc - the Operator Code (only used with MILENAGE algorithm)
To connect successfully to a network, these parameters will need to match those in the HSS of the EPC.
MILENAGE is the algorithm used in most networks, the XOR algorithm is used primarily by test equip-
ment and test USIM cards. OP is the network-wide operator code and OPc is the USIM-specific encrypted
operator code - both are supported by srsUE.
e.g.:
e.g.:
The srsUE application supports packet capture at two levels - MAC layer and NAS layer. MAC layer
captures include both control and data traffic and will be encrypted if configured by the network. NAS
layer captures include control traffic only and will not be encrypted. Packet capture (pcap) files can be
viewed using Wireshark (www.wireshark.org).
See the explanation here on setting up wireshark to decode pcaps.
10.3 Troubleshooting
10.3.1 RF Configuration
The srsUE software application generates and consumes raw radio signals in the form of baseband I/Q
samples. In order to transmit and receive these signals over the air, an RF front end device is needed.
Devices supported by srsRAN 4G include e.g. USRP, BladeRF and LimeSDR.
When using an RF front-end, the dl_earfcn field in ue.conf should be populated. This field provides
the UE with a list (comma separated) of DL EARFCNs. The UE will perform the cell search procedure
using the specified EARFCNs. The UL EARFCN is normally deduced from the DL EARFCN but it
could optionally forced by setting ul_earfcn:
[rf]
dl_earfcn = 3400
#ul_earfcn = 21400
...
In some cases, one may use some custom bands which do not mach with any EARFCN. In these cases,
the downlink and uplink frequencies can be forced by setting dl_frequency and ul_frequency respectively
in Hertz:
10.3. Troubleshooting 29
srsRAN 4G Documentation, Release 23.11
...
dl_freq = 400e6
ul_freq = 450e6
...
Attention: the eNB and UE DL EARFCNs calculate some security sequences using the DL EARFCN.
If they do not match, the UE may fail to perform some actions.
Most off-the-shelf RF front-ends have relatively low-accuracy clocks, resulting in high frequency offsets
(> 1kHz) from base stations (which use high-accuracy GPS disciplined clock sources). A large frequency
offset deteriorates the UE receiver performance. It is recommended setting the parameter freq_offset (Hz)
in order manually correct large offsets. This parameter applies an offset to the received DL signal and will
mitigate the impairment caused by the carrier frequency offset. Also, the UE will apply a proportional
correction in the UL frequency.
...
freq_offset = -6600
...
The current UE does not support open or closed loop power control. The RF front end gain is controlled
by the user before running the UE. The transmit gain (tx_gain) is specified in dB and maximum transmit
power range varies between brands and models.
At the receiver side, an Automatic Gain Control (AGC) module is activated when the receiver gain
(rx_gain in dB) is not specified. Otherwise, it sets a fixed receive gain. Once again, the range of gain
varies between brands and models.
...
tx_gain = 80
#rx_gain = 40
...
When transmitting, the srsUE application provides a radio signal to the front-end and specifies the time
at which the signal should be transmitted. Typically, an RF front-end will have a small fixed timing offset
caused by delays in the RF chain. This offset is usually in the order of microseconds and can vary between
different devices. To calibrate this offset, it is possible to use the time_adv_nsamples parameter. This
compensates the delay and will ensure that the UE transmits at the correct time.
Misconfigured Network
A misconfigured network may stop the UE being able to see the eNB and/ or connect to the EPC. It
may be helpful to reference the EPC user manual, namely the configuration section to ensure the EPC
has been configured correctly. The UE configuration file should also be checked to ensure the relevant
information is reflected across the two files. See the configuration section of the UE documentation for
notes on this.
An unsuccessful attach can be down to how the UE’s credentials are reflected in the EPC’s config file
and database. See the COTS UE Application Note for info on how to add a UE to the EPC’s database
and ensure the correct network configuration. Note, this is for connecting a COTS UE but may also be
useful for troubleshooting issues when connecting srsUE using an SDR.
Users should also keep an eye on the console outputs of the UE, eNB and EPC to ensure no errors
were given when starting up the network. Errors during network instantiation may lead to elements not
connecting properly.
RF Issues
The RF hardware and configuration should also be checked if a network attach continues to fail.
First check that the hardware is correctly connected and running over USB 3.0, also check the drivers for
your HW are up to date. The latest drivers can be found here.
The antenna choice and position is important to ensure the correct operation of the SDR and overall
network. We recommend using the Vert2450 antenna from Ettus (or similar). The antennae should be
positioned at 90° to each other. You should also ensure the correct ports are used for the antennae. For
example, on the b200 mini the TRX and RX2 ports are used.
It is also important that the correct configuration settings are used as described above.
If possible you should use a spectrum analyser or other such piece of equipment to check the state of the
signal(s) being transmitted by the RF-hardware. If the signal is too weak or malformed then an attach
will not be successful. The gr-fosphor tool is a very useful SDR spectrum analyzer which can be used to
check the properties of transmitted RF signals.
Carrier frequency offset (CFO) may also result in a UE not being able to successfully attach to an eNB.
Check the configuration files so that EARFCNs and carrier frequencies match. You may also need to
calibrate your SDR, as low clock accuracy may result in the CFO being outside of the accepted tolerance.
Multiple open source tools like Kalibrate-RTL can be used to calculate the oscillator offset of your SDR
and help to minimize CFO. An external clock reference or GPSODO can also be used to increase clock
accuracy. Calibrating your SDR may also help with peak throughput and stability.
Computational Power
In order to achieve peak throughput, we recommend using a PC with an 8th Gen i7 processor or above,
running Ubuntu 16.04 OS or higher. Machines with lower specs can also run srsRAN 4G successfully
but with lower maximum throughput.
The CPU governor of the PC should be set to performance mode to allow for maximum compute power
and throughput. This can be configured for e.g. Ubuntu using:
10.3. Troubleshooting 31
srsRAN 4G Documentation, Release 23.11
Again, you should also ensure your SDR drivers are up to date and that you are running over USB 3.0,
as this will also affect maximum throughput.
If using a laptop, users should keep the PC connected to a power-source at all times while running srsRAN
4G, as this will avoid performance loss due to CPU frequency scaling on the machine.
The computational requirements of the srsUE application are closely tied to the bandwidth of the LTE
or NR carrier being used. For example, maximum throughput using 100-PRB carrier will require a
more powerful CPU than maximum throughput using a 25-PRB carrier. If your machine is not powerful
enough to support srsUE with a given network configuration, you will see Late and/or Overflow packet
reports from the SDR front-end.
RF Hardware
The RF-signal itself can also affect the peak throughput a network can achieve. Ensure the radio being
used is correctly calibrated and that the appropriate gain settings are used. The health of an RF-signal
can be quickly checked using the console trace output by srsUE.
The following is an example of a console trace from srsUE running in 5G NSA mode over the air:
---------Signal-----------|-----------------DL-----------------|-----------UL-
˓→----------
rat pci rsrp pl cfo | mcs snr iter brate bler ta_us | mcs buff ␣
˓→brate bler
lte 1 -33 33 -101m | 0 34 0.0 0.0 0% 1.6 | 0 0.0 ␣
˓→ 0.0 0%
nr 500 0 0 431m | 28 20 2.0 15M 0% 0.0 | 28 91k ␣
˓→ 10M 0%
lte 1 -33 33 -25m | 0 34 0.0 0.0 0% 1.6 | 0 0.0 ␣
˓→ 0.0 0%
nr 500 0 0 -8.6 | 28 20 1.9 16M 0% 0.0 | 28 216k ␣
˓→ 14M 0%
lte 1 -33 33 -191m | 0 34 0.0 0.0 0% 1.6 | 0 0.0 ␣
˓→ 0.0 0%
nr 500 0 0 -5.7 | 28 21 1.7 16M 0% 0.0 | 28 256k ␣
˓→ 15M 0%
lte 1 -33 33 -21m | 0 34 0.0 0.0 0% 1.6 | 0 0.0 ␣
˓→ 0.0 0%
nr 500 0 0 8.8 | 28 20 1.8 16M 0% 0.0 | 28 226k ␣
˓→ 15M 0%
lte 1 -33 33 50m | 0 34 0.0 0.0 0% 1.6 | 0 0.0 ␣
˓→ 0.0 0%
nr 500 0 0 -13 | 28 20 1.8 16M 0% 0.0 | 28 165k ␣
˓→ 15M 0%
lte 1 -33 33 -71m | 0 34 0.0 0.0 0% 1.6 | 0 0.0 ␣
˓→ 0.0 0%
nr 500 0 0 724m | 28 21 1.9 17M 0% 0.0 | 28 191k ␣
˓→ 15M 0%
lte 1 -33 33 -54m | 0 34 0.0 0.0 0% 1.6 | 0 0.0 ␣
(continues on next page)
The SNR, CFO and BLER can be used to debug the health of a signal connection. See the section on UE
command line reference for information regarding the console trace.
After this is done, please verify you’ve got a PCSC-compatible reader by running ‘pcsc_scan’.
Now, CMake should pick up the pcsc libraries and build the support code for it. If that is not the case,
try with a clean build folder or remove your exisiting CMakeCache.txt:
$ cmake ..
...
-- PCSC LIBRARIES: /usr/lib/x86_64-linux-gnu/libpcsclite.so
-- PCSC INCLUDE DIRS: /usr/include/PCSC
-- Building with PCSC support.
...
$ make
After the build is complete, you can verify the correct operation with the pcsc_usim_test application.
Please verify that the IMSI can be read from the card:
$ ./srsue/test/upper/pcsc_usim_test
..
09:06:36.064073 [USIM] [D] SCARD: MNC length=2
09:06:36.064079 [USIM] [D] MNC length 2
(continues on next page)
If those steps completed successfully we can now start srsUE by either enabling the PCSC USIM in the
config file or by passing the option as an command line argument, e.g., run:
$ ./srsue/src/srsue --usim.mode=pcsc
[channel]
dl.enable = true
...
As mentioned above, the channel emulator can simulate fading channels. It supports 4 different models:
• none: single tap with no delay, doppler dispersion can be applied if specified.
• epa: Extended Pedestrian A, described in 3GPP 36.101 Section B.2.1
• eva: Extended Vehicular A model, described in 3GPP 36.101 Section B.2.1
• etu: Extended Typical Urban model, described in 3GPP 36.101 Section B.2.1
The fading emulator has two parameters: enable and model. The parameter model is the channel model
mentioned above, followed by the maximum Doppler dispersion (e.g. eva5). The following example
enables the fading submodule with a EVA fading model and a maximum doppler dispersion of 5 Hz.
...
dl.fading.enable = true
dl.fading.model = eva5
...
The delay simulator generates the delay according to the next formula:
(︁ )︁
2𝜋𝑡
1 + sin delay.period
𝑑(𝑡) = delay.min_us + (delay.max_us − delay.min_us) ·
2
Where delay.min_us and delay.max_us are specified in microseconds while delay.period must be in sec-
onds.
Hence, the maximum simulated speed is given by:
300𝜋
𝑣max = (delay.max_us − delay.min_us) ·
delay.period
The following example enables the delay simulator for having a period of 1h with a minimum delay of
10 microseconds and a maximum delay of 100 microseconds:
...
dl.delay.enable = true
dl.delay.period = 3600
dl.delay.max_us = 100
dl.delay.min_us = 10
...
...
dl.rlf.enable = true
dl.rlf.t_on_ms = 10000
dl.rlf.t_off_ms = 2000
...
10.4.3 MIMO
The srsUE supports MIMO operation for transmission modes 1, 2, 3 and 4. The user can select the
number of select antennas in the ue.conf
...
[rf]
...
nof_rx_ant = 2
...
Do you want to attach to a 2 port eNb and you have only one receive channel?
No problem. The UE can attach to 2 port cell and be in TM3 or TM4 without having a second receive
antenna. Nevertheless, it will not take advantage of spatial multiplexing and it will not achieve the max-
imum throughput.
10.4.4 5G NR
srsRAN 4G 21.10 and 22.04 brought prototype 5G NSA and 5G SA capabilities to srsUE respectively.
These capabilities can be enabled via the srsUE configuration file.
To use srsUE in prototype 5G mode, see our 5G NSA and 5G SA application notes.
---------Signal-----------|-----------------DL-----------------|-----------UL-
˓→----------
cc pci rsrp pl cfo | mcs snr iter brate bler ta_us | mcs buff ␣
˓→brate bler
0 1 50 -50 -1.4u | 26 141 1.0 3.2M 0% 0.0 | 21 56 ␣
˓→151k 0%
0 1 50 -50 -899n | 26 140 1.0 3.5M 0% 0.0 | 22 169 ␣
˓→110k 0%
0 1 50 -50 -349n | 26 140 1.0 3.5M 0% 0.0 | 23 112 ␣
˓→100k 0%
0 1 50 -50 -842n | 26 140 1.0 3.5M 0% 0.0 | 23 56 ␣
˓→98k 0%
0 1 50 -50 -760n | 26 140 1.0 3.5M 0% 0.0 | 23 167 ␣
˓→100k 0%
0 1 50 -50 -754n | 26 140 1.0 3.5M 0% 0.0 | 23 114 ␣
˓→100k 0%
0 1 50 -50 106n | 26 140 1.0 3.1M 0% 0.0 | 23 169 ␣
˓→88k 0%
5G NR console trace:
---------Signal-----------|-----------------DL-----------------|-----------UL-
˓→----------
rat pci rsrp pl cfo | mcs snr iter brate bler ta_us | mcs buff ␣
˓→brate bler
lte 1 -11 11 -1.4u | 0 142 0.0 0.0 0% 0.0 | 0 0.0 ␣
˓→ 0.0 0%
nr 500 1 0 23u | 27 70 1.0 8.5M 0% 0.0 | 28 36k ␣
˓→8.3M 0%
lte 1 -11 11 -1.4u | 0 142 0.0 0.0 0% 0.0 | 0 0.0 ␣
˓→ 0.0 0%
nr 500 1 0 23u | 27 70 1.0 9.2M 0% 0.0 | 28 24k ␣
˓→8.1M 0%
lte 1 -11 11 -1.4u | 0 142 0.0 0.0 0% 0.0 | 0 0.0 ␣
(continues on next page)
Metrics are generated once per second by default. This can be configured using the ex-
pert.metrics_period_secs parameter in ue.conf.
Metrics are provided for the received signal (Signal), downlink (DL) and uplink (UL) respectively. The
following metrics are provided:
rat
Component carrier, will be either LTE or NR
cc
Component carrier (LTE)
pci
Physical Cell Identifier
rsrp
Reference Signal Receive Power (dBm)
pl
Pathloss (dB)
cfo
Carrier Frequency Offset (Hz)
mcs
Modulation and coding scheme (0-28)
snr
Signal-to-Noise Ratio (dB)
iter
Average number of turbo decoder iterations
brate
Bitrate (bits/sec)
bler
Block error rate
ta_us
Timing advance (uS)
buff
Uplink buffer status - data waiting to be transmitted (bytes)
ELEVEN
11.1 Introduction
11.1.1 Overview
srsENB is an LTE eNodeB basestation implemented entirely in software. Running as an application on
a standard Linux-based operating system, srsENB connects to any LTE core network (EPC) and creates
a local LTE cell. To transmit and receive radio signals over the air, srsENB requires SDR hardware such
as the Ettus Research USRP.
• To provide an end-to-end LTE network, use srsENB with srsEPC and srsUE.
srsENB also has prototype 5G NR capabilities.
• To provide an end-to-end 5G NSA network use srsUE, srsENB and srsEPC.
• To provide an end-to-end 5G SA network use srsUE, srsENB and a third party 5G core.
This User Guide provides all the information needed to get up and running with the srsENB application,
to become familiar with all of the key features and to achieve optimal performance. For information on
extending or modifying the srsENB source code, please see the srsENB Developers Guide.
11.1.2 Features
The srsENB LTE eNodeB includes the following features:
• LTE Release 10 aligned with features up to release 15
• Prototype 5G NR support for both 5G NSA and SA
• FDD configuration
• Tested bandwidths: 1.4, 3, 5, 10, 15 and 20 MHz
• Transmission mode 1 (single antenna), 2 (transmit diversity), 3 (CCD) and 4 (closed-loop spatial
multiplexing)
38
srsRAN 4G Documentation, Release 23.11
11.1. Introduction 39
srsRAN 4G Documentation, Release 23.11
the establishment, maintenance and release of RRC connections with the UEs. The RRC also manages
security functions for ciphering and integrity protection between the eNodeB and UEs.
Above the RRC, the S1 Application Protocol (S1-AP) layer provides the control plane connection between
the eNodeB and the core network (EPC). The S1-AP connects to the Mobility Management Entity (MME)
in the core network. Messages from the MME to UEs are forwarded by S1-AP to the RRC layer, where
they are encapsulated in RRC messages and sent down the stack for transmission. Messages from UEs
to the MME are similarly encapsulated by the UE RRC and extracted at the eNodeB RRC before being
passed to the S1-AP and on to the MME.
The GPRS Tunnelling Protocol User Plane (GTP-U) layer within srsENB provides the data plane connec-
tion between the eNodeB and the core network (EPC). The GTP-U layer connects to the Serving Gateway
(S-GW) in the core network. Data plane IP traffic is encapsulated in GTP packets at the GTP-U layer and
these GTP packets are tunneled through the EPC. That IP traffic is extracted from the tunnel at the Packet
Data Network Gateway (P-GW) and passed out into the internet.
If you are using a different distribution, you can install from source using the guide provided in the
project’s GitHub page.
After installing the software you can install the configuration files into the default location (~/.config/
srsran_4g), by running:
srsran_4g_install_configs.sh user
With the eNodeB running and one or more UEs connected, type t in the console to enable the metrics
trace. Example metrics trace:
------DL------------------------------UL----------------------------------
rnti cqi ri mcs brate bler snr phr mcs brate bler bsr
46 14.1 2.0 25.1 28.4M 0.8% 24.8 0.0 23.1 9.60M 2.2% 140k
46 14.8 2.0 26.6 30.7M 0% 24.9 0.0 23.2 9.92M 0% 140k
46 14.7 2.0 26.3 30.1M 0.8% 24.9 0.0 23.1 9.90M 0% 140k
46 14.8 2.0 26.5 30.6M 0% 24.9 0.0 23.1 9.90M 0% 140k
46 15.0 2.0 26.7 30.9M 0% 24.8 0.0 23.1 9.83M 0% 140k
46 14.5 2.0 26.1 30.0M 0% 24.9 0.0 23.1 9.88M 0% 140k
46 14.8 2.0 26.3 30.3M 0% 24.8 0.0 23.1 9.84M 0% 140k
46 14.7 2.0 26.4 30.4M 0% 24.9 0.0 23.1 9.89M 0% 140k
46 14.7 2.0 26.4 30.4M 0% 24.9 0.0 23.2 9.91M 0% 140k
46 14.7 2.0 26.3 30.4M 0% 24.9 0.0 23.1 9.87M 0% 140k
46 14.8 2.0 26.4 30.4M 0% 24.9 0.0 23.1 9.88M 0% 140k
11.2.2 Configuration
The eNodeb can be configured through the configuration file: enb.conf. This configuration file provides
parameters relating to the cell configuration, operating frequencies, transmit power levels, logging levels
and much more. To run srsENB with the installed configuration file, use sudo srsenb ~/.config/
srsran/enb.conf.
All parameters specified in the configuration file can also be overwritten on the command line. For
example, to run the eNodeB with a different EARFCN, use sudo srsenb ~/.config/srsran_4g/
enb.conf --rf.dl_earfcn 3350.
In addition to the top-level configuration file, srsENB uses separate files to configure SIBs (sib.conf),
radio resources (rr.conf) and data bearers (drb.conf). These additional configuration files are listed under
[enb_files] in the top-level enb.conf and defaults are provided for each.
A key eNodeB parameter is enb.mme_addr, which specifies the IP address of the core network MME.
The default configuration assumes that srsEPC is running on the same machine. For more information,
as well instructions for using an EPC on a separate machine, see the EPC user manual.
e.g.:
e.g.:
See the explanation here on setting up wireshark to decdode the pcaps captured by srsENB.
11.3 Troubleshooting
11.3.1 COTS UE Issues
The following are the most common issues when using a COTS UE with srsENB. A full application note
on this can be found here. Reference this for more detail on the following issues.
11.3. Troubleshooting 43
srsRAN 4G Documentation, Release 23.11
UE Won’t Attach
If the UE sees the network but cannot successfully attach, you can check the MAC-layer PCAP provided
by srsENB using Wireshark to see at which point in the attach procedure it fails. For more information
about the MAC-layer PCAP and using Wireshark, see here in the documentation.
Computational Power
In order to achieve peak throughput, we recommend using a PC with an 8th Gen i7 processor or above,
running Ubuntu 16.04 OS or highe. Machines with lower specs can also run srsENB sucessfully but with
lower maximum achievable throughput.
The CPU governor of the PC should be set to performance mode to allow for maximum compute power
and throughput. This can be configured for e.g. Ubuntu using:
Again, you should also ensure your SDR drivers are up to date and that you are running over USB 3.0,
as this will also affect maximum throughput.
If using a laptop, users should keep the PC connected to a power-source at all times while running srsENB,
as this will avoid performance loss due to CPU frequency scaling on the machine.
The computational requirements of the srsENB application are closely tied to the bandwidth of the LTE
carrier being used. For example, maximum throughput using 100-PRB carrier will require a more pow-
erful CPU than maximum throughput using a 25-PRB carrier. If your machine is not powerful enough
to support srsENB with a given network configuration, you will see Late and/or Overflow packet reports
from the SDR front-end.
RF Hardware
The RF-signal itself can also affect the peak throughput a network can achieve. Ensure the radio being
used is correctly calibrated and that the appropriate gain settings are used. The health of an RF-signal
can be quickly checked using the console trace output by srsENB.
...
[enb]
...
tm = 3
nof_ports = 2
...
The eNb configures the UE for reporting the Rank Indicator for transmission modes 3 and 4. You can set
the rank indicator periodic report in the file rr.conf field m_ri. This value is multiples of CQI report
period. For example, if the CQI period is 40ms and m_ri is 8, the rank indicator will be reported every
320ms.
-----------------DL----------------|-------------------------
˓→UL-------------------------
rat pci rnti cqi ri mcs brate ok nok (%) | pusch pucch phr mcs ␣
˓→brate ok nok (%) bsr
lte 1 47 15 0 26 1.3M 321 0 0% | 99.9 99.9 30 21 ␣
˓→84k 53 0 0% 0.0
lte 1 47 15 0 26 3.5M 875 0 0% | 99.9 99.9 30 23 ␣
˓→98k 48 0 0% 0.0
lte 1 47 15 0 26 3.5M 876 0 0% | 99.9 99.9 30 22 ␣
˓→111k 56 0 0% 0.0
lte 1 47 15 0 26 3.5M 876 0 0% | 99.9 99.9 30 23 ␣
˓→100k 49 0 0% 0.0
lte 1 47 15 0 26 3.5M 878 0 0% | 99.9 99.9 30 23 ␣
˓→98k 48 0 0% 0.0
lte 1 47 15 0 26 3.5M 874 0 0% | 99.9 99.9 30 22 ␣
˓→110k 56 0 0% 0.0
lte 1 47 15 0 26 3.5M 877 0 0% | 99.9 99.9 30 23 ␣
˓→100k 49 0 0% 0.0
5G NR Output:
-----------------DL----------------|-------------------------UL-----
˓→--------------------
rat rnti cqi ri mcs brate ok nok (%) | pusch pucch phr mcs brate ␣
(continues on next page)
Metrics are generated once per second by default. This can be configured using the ex-
pert.metrics_period_secs parameter in enb.conf.
Metrics are provided on a per-UE basis for the downlink (DL) and uplink (UL) respectively. The follow-
ing metrics are provided:
rat
The RAT being used, either NR or LTE
pci
Physical Cell Identifier
rnti
Radio Network Temporary Identifier (UE identifier)
cqi
Channel Quality Indicator reported by the UE (1-15)
ri
Rank Indicator reported by the UE (dB)
mcs
Modulation and coding scheme (0-28)
brate
Bitrate (bits/sec)
ok
Number of packets successfully sent
nok
Number of packets dropped
(%)
% of packets dropped
pusch
PUSCH SNIR (Signal-to-Interference-plus-Noise Ratio)
pucch
PUCCH SNIR
phr
Power Headroom (dB)
bsr
Buffer Status Report - data waiting to be transmitted as reported by the UE (bytes)
TWELVE
12.1 Introduction
12.1.1 Overview
srsEPC is a lightweight implementation of a complete LTE core network (EPC). The srsEPC application
runs as a single binary but provides the key EPC components of Home Subscriber Service (HSS), Mobil-
ity Management Entity (MME), Service Gateway (S-GW) and Packet Data Network Gateway (P-GW).
The figure above illustrates the main components of the EPC, along with the main interfaces between
them.
• HSS: The Home Subscriber Service (HSS) is the user database. It stores information such as the
user’s id, key, usage limits, etc. It is responsible for authenticating an authorizing the user’s access
to the network.
• MME: Mobility Managment Entity (MME) is the main control element in the network. It handles
mobility and attach control messages. It is also responsible for paging UEs in idle mode.
• S-GW : The S-GW is the main dataplane gateway for the users, as it provides the mobility anchor
for the UEs. It works as an IP router and helps setting up GTP sessions between the eNB and the
47
srsRAN 4G Documentation, Release 23.11
P-GW.
• P-GW : The Packet Gateway (P-GW) is the point of contact with external networks. It enforces the
QoS parameters for subscriber sessions.
To provide a complete end-to-end LTE network, use srsEPC with srsENB and srsUE.
This User Guide provides all the information needed to get up and running with the srsEPC application,
to become familiar with all of the key features and to achieve optimal performance. For information on
extending or modifying the srsEPC source code, please see the srsEPC Developers Guide.
12.1.2 Features
The srsEPC LTE core network includes the implementation of the MME, HSS and SPGW entities. The
features of each of these entities is further described below.
MME Features
The srsEPC MME entity provides support for standard compliant NAS and S1AP protocols to provide
control plane communication between the EPC and the UEs and eNBs.
At the NAS level, this includes:
• Attach procedure, detach procedure, service request procedure
• NAS Security Mode Command, Identity request/response, authentication
• Support for the setup of integrity protection (EIA1 and EIA2) and ciphering (EEA0, EEA1 and
EEA2)
At the S1AP level, this includes:
• S1-MME Setup/Tear-down
• Transport of NAS messages
• Context setup/release procedures
• Paging procedures
HSS Features
The srsEPC HSS entity provides support for configuring UE’s authentication parameters and other pa-
rameters that can be configured on a per-UE basis. The HSS entity includes the following features:
• Simple CSV based database
• XOR and MILENAGE authentication algorithms, specified per UE.
• QCI information
• Dynamic or static IP configuration of UEs
SPGW Features
The srsEPC SPGW entity provides support for to user plane communication between the EPC and the
and eNBs, using S1-U and SGi interfaces.
The SPGW supports the following features:
• SGi interface exposed as a virtual network interface (TUN device)
• SGi < > S1-U Forwarding using standard compliant GTP-U protocol
• Support of GTP-C procedures to setup/teardown GTP-U tunnels
• Support for Downlink Data Notification procedures
If you are using a different distribution, you can install from source using the guide provided in the
project’s GitHub page.
After installing the software you can install the configuration files into the default location (~/.config/
srsran_4g), by running:
srsran_4g_install_configs.sh user
12.2.2 Configuration
The EPC can be configured through two configuration files: epc.conf and user_db.csv. The epc.
conf will hold general configuration parameters of the MME, SPGW and the HSS. This includes PLMN
value, integrity/ciphering algorithms, APN, SGi IP address, GTP-U bind address, etc.
The user_db.csv is used to keep UE specific parameters for the HSS. This will include IMSI, authen-
tication algorithms, K, OP or OPc, etc.
In the following subsections, we will cover a few common configuration cases with srsEPC: adding a
new UE to the HSS database, running the eNB and EPC on separate machines, and setting up network
routing to enable UEs to connect to the Internet.
The usual authentication algorithm used by SIM cards is MILENAGE, but there are also test SIMs that
use XOR authentication. If you are using the MILENAGE algorithm, you must also know whether you
are using OP or OPc and the corresponding value of this parameter.
Once you know these parameters you can replace then in the user_db.csv which has the following format:
(ue_name),(algo),(imsi),(K),(OP/OPc_type),(OP/OPc_value),(AMF),(SQN),(QCI),
˓→(IP_alloc)
ue1,mil,999700000000001,00112233445566778899aabbccddeeff,opc,
˓→63bfa50ee6523365ff14c1f45f88737d,9000,000000000000,9,dynamic
. Warning
out_interface is NOT the srs_spgw_sgi interface, but the Ethernet or WiFi ethernet that connects the
PC to the Internet.
12.3 Troubleshooting
This section describes some of the most common issues with srsEPC and how to troubleshoot them.
Authentication failure
The most common case of attach failure is authentication failure. In LTE, not only the network must
authenticate the UE, but the UE must also authenticate the network. For that reason, there is an authen-
tication procedure within the attach procedure.
An simplified illustration of the messages involved in the authentication procedure can be found bellow:
If when the MME compares the RES and XRES and these values do not match, that means that the keys
used to generate those values are different and authentication fails.
For authentication, there are four important parameters that must be configured correctly both at the UE
and the HSS: the IMSI, the authentication algorithm, the UE key and OP/OPc. If you misconfigure your
IMSI, you will see an User not found. IMSI <Your_IMSI> message in the epc.log. If you misconfigure
the other parameters, you will see a “NAS Authentication Failure” message in the epc.pcap, with the
failure code “MAC Code Failure.”
Instructions on how to configure these parameters can be found in the Adding an UE to HSS database
section.
Mismatched APN
Within the attach procedure, the UEs sends an APN setting, either in the “PDN connectivity request”
message or in the “ESM information transfer” message. It is necessary that the configuration of the APN
in the UE and the EPC match. Important parameters to check are the APN name, the PDN type (must be
IPv4), and that no PAP/CHAP authentication is being used.
In srsUE you can configure these parameters in the NAS section of the ue.conf. If using a COTS UE, go
to your APN settings and make sure that the APN configured in the UE matches the one configured in
the EPC.
12.3. Troubleshooting 51
srsRAN 4G Documentation, Release 23.11
THIRTEEN
13.1 Introduction
srsRAN 4G is a 4G and 5g software radio suite. The 4G network consists of a core network, an eN-
odeB, and a UE implementation. Usually eNodeB and UE are used with physical radios for over-the-air
transmissions. However, the srsRAN 4G software suite also includes a virtual radio which uses the Ze-
roMQ networking library to transfer radio samples between applications. This approach is very useful
for development, testing, debugging, CI/CD or for teaching and demonstrating.
This application note shows how the srsRAN 4G virtual radio approach can be used to create an end-to-
end network.
53
srsRAN 4G Documentation, Release 23.11
Finally, you need to compile srsRAN 4G (assuming you have already installed all the required depen-
dencies). Note, if you have already built and installed srsRAN 4G prior to installing ZMQ and other
dependencies you will have to re-run the make command to ensure srsRAN 4G recognizes the addition
of ZMQ:
Put extra attention in the cmake console output. Make sure you read the following line:
...
-- FINDING ZEROMQ.
-- Checking for module 'ZeroMQ'
-- No package 'ZeroMQ' found
-- Found libZEROMQ: /usr/local/include, /usr/local/lib/libzmq.so
...
sudo ./srsepc/src/srsepc
˓→base_srate=23.04e6"
The last command should start the UE and attach it to the core network. The UE will be assigned an IP
address in the configured range (e.g. 172.16.0.2).
ping 172.16.0.2
In order to generate traffic in the uplink direction it is important to run the ping command in the UE’s
network namespace.
The above figure shows how the broker acts as a man-in-the-middle between the UE and the eNB. The
blue boxes and arrows show the direction of data between the network elements. The following ports are
used in this example:
Building on this simple example, the I/Q data sent between elements can be processed, manipulated and/
or visualized as needed. This would lead to a GRC architecture similar to what is shown in the following
figure.
The signal processing clouds between elements here represent where any processing of the data would
take place.
When running an E2E Network with a Broker between elements the following steps must be taken when
spinning up the network:
FOURTEEN
COTS UE
. Warning
Please note, operating a private LTE network on cellular frequency bands may be tightly regulated in
your jurisdiction. Seek the approval of your telecommunications regulator before doing so.
14.1 Introduction
This application note aims to demonstrate how to set up your own LTE network using srsENB, srsEPC
and a COTS UE. There are two options for network set-up when connecting a COTS UE: The network
can be left as is, and the UE can communicate locally within the network, or the EPC can be connected
to the internet through the P-GW, allowing the UE to access the internet for web-browsing, email etc.
58
srsRAN 4G Documentation, Release 23.11
Note, this is for illustrative purposes, this orientation of USRP and UE may not give the best stability &
throughput.
14.2.1 Drivers
Firstly, check that you have the appropriate drivers for your SDR installed. If not they must be downloaded
from the relevant source. If the drivers are already installed ensure they are up to date and are from a
stable release. This step can be skipped if you have the correct drivers and know them to be working.
• RF front-end drivers:
– UHD: https://github.com/EttusResearch/uhd
– SoapySDR: https://github.com/pothosware/SoapySDR
– BladeRF: https://github.com/Nuand/bladeRF
ò Note
This app note was tested using a b200-mini and UHD v4.0, but we recommend using UHD v3.15
where possible.
When the drivers have been installed/ updated you should connect your hardware and check that every-
thing is working correctly. To do this for a USRP using the UHD drivers run the following command:
uhd_usrp_probe
This should be done anytime you are using a USRP before carrying out any testing or implementation
to check a stable connection to the radio. Note, you should be using a USB 3.0 interface when using an
SDR for this use case.
If you have had to install or update your drivers and everything is working as intended, then you will need
to rebuild srsRAN 4G to ensure it picks up on the new/ updated drivers.
To make a clean build execute the following commands in your terminal:
cd ./srsRAN_4G/build
rm CMakeCache.txt
make clean
cmake ..
make
Your hardware and drivers should now be working correctly and be ready to use for connecting a COTS
UE to srsRAN 4G.
You have the option to install the configurations files to the user directory or for all users. For this exam-
ple the configuration files have been installed for all users by running the following command sudo
srsran_4g_install_configs.sh service. The config files can then be found in the following
folder: ~./etc/srsran_4g
You will need to edit the following files before you can run a COTS UE over the network:
• epc.conf
• enb.conf
• user_db.csv
The eNB & EPC config files will need to be edited such that the MCC & MNC values are the same across
both files. The user DB file needs to be updated so that it contains the credentials associated with the
USIM card being used in the UE.
EPC:
The following snippet shows where to change the MCC & MNC values in the EPC config file:
22 | #####################################################################
23 | [mme]
24 | mme_code = 0x1a
25 | mme_group = 0x0001
26 | tac = 0x0007
27 | mcc = 901
28 | mnc = 70
29 | mme_bind_addr = 127.0.1.100
30 | apn = srsapn
31 | dns_addr = 8.8.8.8
32 | encryption_algo = EEA0
33 | integrity_algo = EIA1
34 | paging_timer = 2
(continues on next page)
Line 27 and 28 must be changed, for Sysmocom USIMS these values are 901 & 70. These values will
be dependent on the USIM being used.
eNB:
The above changes must be mirrored in the eNB config. file. The following snippet shows this:
18 | #####################################################################
19 | [enb]
20 | enb_id = 0x19B
21 | mcc = 901
22 | mnc = 70
23 | mme_addr = 127.0.1.100
24 | gtp_bind_addr = 127.0.1.1
25 | s1c_bind_addr = 127.0.1.1
26 | n_prb = 50
27 | #tm = 4
28 | #nof_ports = 2
29 |
30 | #####################################################################
Here, the MCC and MNC values at lines 21 & 22 are changed to the values used in the EPC.
For both of the config files the rest of the values can be left at the default values. They may be changed as
needed, but further customization is not necessary to enable the successful connection of a COTS UE.
User DB:
The following list describes the fields contained in the user_db.csv file, found in the same folder as
the .conf files. As standard, this file will come with two dummy UEs entered into the CSV, these help to
provide an example of how the file should be filled in.
• Name: Any human readable value
• Auth: Authentication algorithm (xor/ mil)
• IMSI: UE’s IMSI value
• Key: UE’s key, hex value
• OP Type: Operator’s code type (OP/ OPc)
• OP: OP/ OPc code, hex value
• AMF: Authentication management field, hex value must be above 8000
• SQN: UE’s Sequence number for freshness of the authentication
• QCI: QoS Class Identifier for the UE’s default bearer
• IP Alloc: IP allocation strategy for the SPGW
The AMF, SQN, QCI and IP Alloc fields can be populated with the following values:
• 9000, 000000000000, 9, dynamic
This will result in a user_db.csv file that should look something like the following:
1 | #
2 | # .csv to store UE's information in HSS
3 | # Kept in the following format: "Name,Auth,IMSI,Key,OP_Type,OP,AMF,SQN,
˓→QCI,IP_alloc"
4 | #
5 | # Name: Human readable name to help distinguish UE's. Ignored by the␣
˓→HSS
18| #
19| # Note: Lines starting by '#' are ignored and will be overwritten
20| ue3,mil,901700000020936,4933f9c5a83e5718c52e54066dc78dcf,opc,
˓→fc632f97bd249ce0d16ba79e6505d300,9000,0000000060f8,9,dynamic
Line 20 shows the entry for the USIM being used in the COTS UE. The values assigned to the AMF,
SQN, QCI & IP Alloc are default values above, as outlined here in the EPC documentation. Ensure there
is no white space between the values in each entry, as this will cause the file to be read incorrectly.
The addition of this APN must be reflected in the EPC config file, to do this add the APN to the config.
This is shown in the following snippet:
22 | #####################################################################
23 | [mme]
24 | mme_code = 0x1a
25 | mme_group = 0x0001
26 | tac = 0x0007
27 | mcc = 901
28 | mnc = 70
29 | mme_bind_addr = 127.0.1.100
30 | apn = test123
31 | dns_addr = 8.8.8.8
32 | encryption_algo = EEA0
33 | integrity_algo = EIA1
34 | paging_timer = 2
35 |
36 | #####################################################################
The APN has been added at line 30 above. This must match the APN on the UE to enable a successful
connection.
following command:
route
The interface (Iface) associated with the default destination is one which must be passed into the masq.
script. In the above output that is the wlp2s0 interface.
The masq. script can now be run from the follow folder: srsRAN_4G/srsEPC:
The configuration files, user DB and UE should now be set up appropriately to allow the COTS UE to
connect to the eNB and Core.
sudo srsepc
sudo srsenb
The EPC console should now print an update if the eNB has successfully connected to the core:
• Open the Settings menu and navigate to the Sim & Network options
• Open this menu and proceed to the sub-menu associated with the USIM being used. It
should look something like the following:
• Under the Network Operators find the network which you have just instantiated using
srsRAN 4G
• Select the network that is a combination of your MMC & MNC values. For this exam-
ple it is the network labelled 90170 4G. The UE should then automatically connect to
the network.
The UE should now be connected to the network. To check for a successful connection use the logs
output to the console.
eNB Console:
The eNB console also display messages to confirm an attach. A RACH message should be seen followed
by a USER 0xX connected message. Where “0xX” is a hex ID representing the UE.
NOTE, you may see some other RACHs and Disconnecting rtni=0xX messages. This may be from other
devices trying to connect to the network, if you have seen a clear connection between the UE and network
these can be ignored.
The following shows an output from the eNB that indicates a successful attach:
The UE is now connected to the network. and should now automatically connect to this network each time
it is powered on. You should keep the UE in airplane mode until you want to connect it to the network.
The UE should now also have access to the internet - as if connected to a commercial 4G network.
14.4 Troubleshooting
• If the phone has troubles finding the network or can’t stay connected it might be due to frequency
shifts and drifting of the eNB signal, caused by inaccurate clocks. We therefore always recommend
to use an external 10 MHz reference clock or a GPSDO-disciplined clock for the eNB.
• Some users may experience trouble connecting to the internet, even after running the masquerading
script. Ensure that IP forwarding is enabled, and check your network configuration as this may be
stopping the UE from connecting successfully.
• Users may also have trouble connecting to the network. Firstly check all information in the config-
uration and user DB files are correct. You may also need to adjust the gain parameters in the eNB
config. file - without high enough power (pmax threshold), the UE won’t PRACH.
• Note that some USIM cards may not be compatible in UEs that are “locked” to certain network
operators.
FIFTEEN
15.1 Introduction
This application note focuses on mobility and handover. Specifically, we show how to configure an
end-to-end network to support user-controlled handover. We address both intra-eNB and S1 handover
using srsRAN 4G with ZeroMQ-based RF emulation and we use the GNURadio Companion as a broker
for controlling cell gains to trigger handover. Creating an E2E network using ZMQ and adding GRC
functionality is demonstrated in our ZMQ App Note.
For a full guide on installing srsRAN 4G see the installation guide. The ZMQ app note shows how to
correctly install and run ZMQ.
If you have had to install or update your drivers and/or dependencies without having re-built srsRAN 4G
then you will need to do so to ensure srsRAN 4G picks up on the new/ updated drivers.
To make a clean build execute the following commands in your terminal:
cd ./srsRAN_4G/build
rm CMakeCache.txt
make clean
cmake ..
make
Your hardware and drivers should now be working correctly and be ready to use correctly with srsRAN
4G.
71
srsRAN 4G Documentation, Release 23.11
#####################################################################
[rf]
#dl_earfcn = 3350
tx_gain = 80
rx_gain = 40
# Example for ZMQ-based operation with TCP transport for I/Q samples
device_name = zmq
device_args = fail_on_disconnect=true,id=enb,tx_port0=tcp://*:2101,tx_
˓→port1=tcp://*:2201,rx_port0=tcp://localhost:2100,rx_port1=tcp://
˓→localhost:2200,id=enb,base_srate=23.04e6
#####################################################################
The following table should make clear how the TCP ports are allocated across the cells:
The use of a clear labelling system for the ports is employed to allow for easier implementation of the
GRC broker. By having the least significant unit of each Rx port be 0 and Tx port be 1 the flowgraph
becomes easier to debug. The second most significant unit is used to indicate which cell the port belongs
to.
Radio Resource (RR):
The rr.conf is where the cells (sectors) are added to the eNB, this is also where the handover flags are
enabled. The following shows an example of the cell added to the existing rr.conf:
{
rf_port = 1;
cell_id = 0x02;
tac = 0x0007;
pci = 6;
root_seq_idx = 268;
dl_earfcn = 3350;
ho_active = true;
Note, the TAC of the cells must match that of the MME, and the EARFCN must be the same across both
cells and the UE. The PCI of each cell with the same EARFCN must be different, such that PCI%3 for
the cells is not equal. It is also important to remember that the ho_active flag must be set to true in the
default cell as well as the cell that has been added.
UE:
For the UE configuration, ZMQ must be set as the default device and the appropriate TCP ports set for
Tx & Rx and the network namespace (netns) set. As well as this, the EARFCN value must be checked
to ensure it is the same as that set for the cells in rr.conf. The following example shows how the ue.conf
file must be modified:
#####################################################################
[rf]
freq_offset = 0
tx_gain = 80
#rx_gain = 40
#srate = 11.52e6
# Example for ZMQ-based operation with TCP transport for I/Q samples
device_name = zmq
device_args = tx_port=tcp://*:2001,rx_port=tcp://localhost:2000,id=ue,base_
˓→srate=23.04e6
#####################################################################
[rat.eutra]
dl_earfcn = 3350
#nof_carriers = 1
#####################################################################
[gw]
netns = ue1
The default USIM configuration can be used, as it is already present in the user_db.csv file used by the
EPC to authenticate the UE. If you want to use a custom USIM set up this will need to be added to
the relevant section in the ue.conf file and reflected in the user_db.csv to ensure the UE is authenticated
correctly.
Again for these ports the least significant unit is used to indicate whether the port is being used for Tx or
Rx.
In short, the EARFCN values must be the same across the eNB, both cells and the UE, handover must
be enabled in the RR config file and ZMQ made the default device for both the eNB and UE.
The full config files can be downloaded here:
• enb.conf
• rr.conf
• ue.conf
The following table again shows the clear breakdown of how the ports are assigned to each of the network
elements:
The gain of cell2 is first set to 0, and cell1 to 1. These are then controlled via sliders and increased in
steps of 0.1 to force handover once a connection has been established. Handover should occur once the
gain of a cell is higher than the other, i.e. when the signal is stronger.
sudo srsepc
eNB:
Once the EPC is running, the eNB can by run using this command:
sudo srsenb
˓→rx_port1=tcp://localhost:2200,id=enb,base_srate=23.04e6
CHx base_srate=23.04e6
CHx id=enb
Current sample rate is 1.92 MHz with a base rate of 23.04 MHz (x12 decimation)
(continues on next page)
The EPC console should then display a confirmation that the eNB cas connected:
UE:
The UE now needs to be run, this can be done with the following command:
sudo srsue
CHx base_srate=23.04e6
CHx id=ue
Current sample rate is 1.92 MHz with a base rate of 23.04 MHz (x12 decimation)
CH0 rx_port=tcp://localhost:2000
CH0 tx_port=tcp://*:2001
Waiting PHY to initialize ... done!
Attaching UE...
Current sample rate is 1.92 MHz with a base rate of 23.04 MHz (x12 decimation)
Current sample rate is 1.92 MHz with a base rate of 23.04 MHz (x12 decimation)
GRC:
Once all three network elements have been successfully initiated, the Broker can be run. This is done
in the same way as any other GRC Flowgraph. Once successful, a pop up window should display the
interactive slider for controlling the gain of the two cells.
eNB Attach:
You will see the RACH and connection message on the eNB:
UE Attach:
The UE console will display the following:
The network is now ready for handover to be initiated and tested. To keep the UE from entering idle, you
should send traffic between the UE and the eNB. This can be done with the following command:
Handover can now be repeated as many times as needed by repeating the above steps.
15.3 S1 Handover
ò Note
srsEPC does not support handover via the S1 interface, as it is designed to be a lightweight core for
network-in-a-box type deployments. To support S1 handover, a third party EPC must be used. We
will use Open5GS for the purposes of this note, however any third-party EPC supporting S1 handover
can be used.
S1 handover takes place over the S1-interface as a UE transitions from the coverage of one eNB to the
next. This differs from intra-enb handover as the UE is leaving the coverage of all sectors in an eNBs
coverage, it is a handover to a new eNB. The following steps outline how this can be demonstrated using
srsUE, srsENB and a third-party open source core. In this case the EPC from Open5GS is used. Other
third party options would also work in this case, so long as they support S1 handover.
The following diagram outlines the network architecture:
mme:
freeDiameter: /etc/freeDiameter/mme.conf
s1ap:
- addr: 127.0.0.2
gtpc:
- addr: 127.0.0.2
gummei:
plmn_id:
mcc: 901
mnc: 70
mme_gid: 2
mme_code: 1
tai:
plmn_id:
mcc: 901
mnc: 70
tac: 7
security:
integrity_order : [ EIA2, EIA1, EIA0 ]
ciphering_order : [ EEA0, EEA1, EEA2 ]
network_name:
full: Open5GS
mme_name: open5gs-mme0
For reference, this configuration can be found from line 204 to 226.
Subscriber List:
Adding subscribers to the network is done via the web-UI provided by open5GS. Their documentation
outlines how this is done here, under the section Register Subscriber Information.
First open the UI, found at http://localhost:3000, and enter the credentials found in the UE configuration
file (ue.conf). The following credentials are used:
Note, the first five digits (PLMN) in the IMSI to 90170, and OPc (Milenage Authentication) is being used.
This differs from the USIM configuration found in ue.conf, the changes made here will later be reflected
in the ue.conf file. The IMSI is edited to reflect the values used for the MCC and MNC. Milenage is used
here to show how the sim credentials can be changed to suit certain use-cases.
15.3. S1 Handover 81
srsRAN 4G Documentation, Release 23.11
#####################################################################
[rf]
freq_offset = 0
tx_gain = 80
#rx_gain = 40
#srate = 11.52e6
# Example for ZMQ-based operation with TCP transport for I/Q samples
device_name = zmq
device_args = tx_port=tcp://*:2001,rx_port=tcp://localhost:2000,id=ue,base_
˓→srate=23.04e6
#####################################################################
[rat.eutra]
dl_earfcn = 3350
#nof_carriers = 1
#####################################################################
#####################################################################
[usim]
mode = soft
algo = milenage
opc = 63BFA50EE6523365FF14C1F45F88737D
k = 00112233445566778899aabbccddeeff
imsi = 901700123456789
imei = 353490069873319
#reader =
#pin = 1234
The downlink EARFCN is set to 3350 for this application, this is matched across the rest of the network.
This sets the LTE Band and carrier frequency for the UE and eNB(s), they must match so that a connection
can be successfully established and held. The changes made when adding the UE to the subscriber list
in the EPC are also shown here, the IMSI now leads with the correct PLMN code, and the authentication
algorithm is set to milenage; the opc is uncommented to enable this.
eNB:
For the eNB config the PLMN must be changed, the MME address must also be changed to that of the
MME associated with the Open5GS EPC. The following are the changes made to the enb.conf file:
[enb]
enb_id = 0x19B
mcc = 901
mnc = 70
mme_addr = 127.0.0.2
gtp_bind_addr = 127.0.1.1
s1c_bind_addr = 127.0.1.1
n_prb = 50
#tm = 4
#nof_ports = 2
eNB RR:
The rr.conf file must also be edited to allow for S1 Handover. To do this, two new rr.conf files are created,
named rr1.conf and rr2.conf. As there will be two eNBs, there is an rr.conf associated with each. It is
recommend that the existing rr.conf is simply copied into two new files, and only the cell_list changed
for each of the new filles. This should help to avoid misconfiguration.
rr1.conf:
After the rr.conf has been copied to a new file (in the same location as the existing configuration files),
the cell list must be edited. The following snippet shows this:
cell_list =
(
{
(continues on next page)
15.3. S1 Handover 83
srsRAN 4G Documentation, Release 23.11
// CA cells
scell_list = (
// {cell_id = 0x02; cross_carrier_scheduling = false; scheduling_cell_
˓→id = 0x02; ul_allowed = true}
meas_report_desc =
(
{
eventA = 3
a3_offset = 6;
(continues on next page)
meas_quant_desc = {
// averaging filter coefficient
rsrq_config = 4;
rsrp_config = 4;
};
}
// Add here more cells
);
Here the TAC is set to 7, and the DL EARFCN is set to 3350. To ensure S1 Handover is successful the
cell(s) associated with the second eNB must be added to the meas_cell_list. This can be seen here where
a cell with eci = 0x19C01 is included, this is the cell associated with the second eNB. The cell with eci
= 0x19B01 is the cell active on the current eNB. The DL EARFCN is the same across both.
rr2.conf:
Similarly to rr1.conf, a file rr2.conf must be created where the other configuration files are found and the
cell_list updated:
cell_list =
(
{
// rf_port = 0;
cell_id = 0x01;
tac = 0x0007;
pci = 6;
root_seq_idx = 264;
dl_earfcn = 3350;
//ul_earfcn = 21400;
ho_active = true;
//meas_gap_period = 0; // 0 (inactive), 40 or 80
//meas_gap_offset_subframe = [6, 12, 18, 24, 30];
// target_pusch_sinr = -1;
// target_pucch_sinr = -1;
// enable_phr_handling = false;
// min_phr_thres = 0;
// allowed_meas_bw = 6;
// t304 = 2000; // in msec. possible values: 50, 100, 150, 200, 500,␣
˓→1000, 2000
// CA cells
scell_list = (
(continues on next page)
15.3. S1 Handover 85
srsRAN 4G Documentation, Release 23.11
meas_quant_desc = {
// averaging filter coefficient
rsrq_config = 4;
rsrp_config = 4;
};
}
// Add here more cells
);
It is possible to enable both intra-eNB and S1 handover at the same time by combining the rr configuration
used for intra-enb HO with those shown above. Although, that will not be covered in this application note.
#!/bin/bash
LOG_ARGS="--log.all_level=debug"
PORT_ARGS="tx_port=tcp://*:2101,rx_port=tcp://localhost:2100"
ZMQ_ARGS="--rf.device_name=zmq --rf.device_args=\"${PORT_ARGS},id=enb,base_
˓→srate=23.04e6\""
OTHER_ARGS="--enb_files.rr_config=rr1.conf"
Note how the logging level is also set here using the script. Every argument in the configuration file can
be changed via the command line when the eNB is instantiated, this shows how it is done when using a
script with the logging as the example.
eNB 2:
For the second eNB we will need to set the ZMQ device, with the correct ports as above. The rr2.conf
file must also be given as the rr configuration file to be used. Additional steps must be taken with this
eNB so as to allow it to be instantiated correctly. The eNB ID must be changed, and the GTP and S1C
bind addresses must be modified. This is done with the following script:
#!/bin/bash
LOG_ARGS="--log.all_level=info"
PORT_ARGS="tx_port=tcp://*:2201,rx_port=tcp://localhost:2200"
ZMQ_ARGS="--rf.device_name=zmq --rf.device_args=\"${PORT_ARGS},id=enb,base_
˓→srate=23.04e6\""
UE:
The script for the UE will be used to set the ZMQ device and ports, while also being used to set-up the
network namespace used for the UE:
#!/bin/bash
15.3. S1 Handover 87
srsRAN 4G Documentation, Release 23.11
PORT_ARGS="tx_port=tcp://*:2001,rx_port=tcp://localhost:2000"
ZMQ_ARGS="--rf.device_name=zmq --rf.device_args=\"${PORT_ARGS},id=ue,base_
˓→srate=23.04e6\" --gw.netns=ue1"
The UE does not require any other parameters to be passed when it is instantiated.
15.3.5 GNU-Radio
The GRC file can be downloaded here. Download and/ or save the file as a .grc file. Run with GNU-
Radio Companion when needed.
The GRC Broker used here is the same as that used for intra-eNB HO. The following figure shows the
flowgraph used:
The following outlines which ports belong to which network element:
15.3. S1 Handover 89
srsRAN 4G Documentation, Release 23.11
CHx base_srate=23.04e6"
CHx id=enb
Current sample rate is 1.92 MHz with a base rate of 23.04 MHz (x12 decimation)
CH0 rx_port=tcp://localhost:2100
CH0 tx_port=tcp://*:2101
Current sample rate is 11.52 MHz with a base rate of 23.04 MHz (x2 decimation)
Current sample rate is 11.52 MHz with a base rate of 23.04 MHz (x2 decimation)
Setting frequency: DL=2630.0 Mhz, UL=2510.0 MHz for cc_idx=0
Target eNB:
CHx base_srate=23.04e6"
CHx id=enb
Current sample rate is 1.92 MHz with a base rate of 23.04 MHz (x12 decimation)
CH0 rx_port=tcp://localhost:2200
CH0 tx_port=tcp://*:2201
Current sample rate is 11.52 MHz with a base rate of 23.04 MHz (x2 decimation)
Current sample rate is 11.52 MHz with a base rate of 23.04 MHz (x2 decimation)
Setting frequency: DL=2630.0 Mhz, UL=2510.0 MHz for cc_idx=0
Note, you wont see anything on this eNB console until handover has successfully been made between the
eNBs.
UE:
CHx base_srate=23.04e6"
CHx id=ue
Current sample rate is 1.92 MHz with a base rate of 23.04 MHz (x12 decimation)
CH0 rx_port=tcp://localhost:2000
CH0 tx_port=tcp://*:2001
Waiting PHY to initialize ... done!
Attaching UE...
Current sample rate is 1.92 MHz with a base rate of 23.04 MHz (x12 decimation)
Current sample rate is 1.92 MHz with a base rate of 23.04 MHz (x12 decimation)
.
Found Cell: Mode=FDD, PCI=1, PRB=50, Ports=1, CFO=-0.2 KHz
Current sample rate is 11.52 MHz with a base rate of 23.04 MHz (x2 decimation)
Current sample rate is 11.52 MHz with a base rate of 23.04 MHz (x2 decimation)
Found PLMN: Id=90170, TAC=7
Random Access Transmission: seq=38, ra-rnti=0x2
Random Access Complete. c-rnti=0x46, ta=0
RRC Connected
You should now start to send traffic between the UE and the EPC, this is done via the following command:
This will stop the UE from timing out and keep the connection to the core open.
15.3. S1 Handover 91
srsRAN 4G Documentation, Release 23.11
Target eNB:
Received S1 HO Request
Received S1 MMEStatusTransfer
RACH: tti=3421, cc=0, preamble=20, offset=0, temp_crnti=0x47
Disconnecting rnti=0x47.
User 0x46 connected
UE:
This can be repeated as many times as needed by following the above steps.
15.4 Troubleshooting
15.4.1 Intra-eNB Handover
• If the gains of the cells are changed too abruptly the handover messages will not have enough time
to be exchanged successfully. Gradually moving the sliders between values is best practice when
changing the gain values.
15.4.2 S1 Handover
• Open5GS can also be installed from source, but it is easier to install from packages for this use-case.
• Ensure the PLMN, TAC and EARFCN are correct across all relevant network elements, as this can
cause the connection to fail or stop an attach occuring.
SIXTEEN
CARRIER AGGREGATION
16.1 Introduction
Before getting hands-on we recommend reading about Carrier Aggregation.
The srsRAN 4G software suite supports 2-carrier aggregation in both srsENB and srsUE. To experiment
with carrier aggregation using srsRAN 4G over-the-air, you will need an RF device that can tune different
frequencies in different channels, for example the USRP X300 series from Ettus Research (NI). We’ve
tested with UHD 3.15 LTS and UHD 4.0.
Alternatively, experiment with carrier aggregation without SDR hardware using our ZeroMQ-based RF
layer emulation. See our ZeroMQ Application Note for more information about RF layer emulation.
[rf]
device_name = uhd
device_args = type=x300,clock=external,sampling_rate=23.04e6
The second step is to configure srsENB with two cells. For this, one needs to modify rr.conf:
cell_list =
(
{
rf_port = 0;
cell_id = 0x01;
tac = 0x0007;
pci = 1;
root_seq_idx = 204;
(continues on next page)
93
srsRAN 4G Documentation, Release 23.11
// CA cells
scell_list = (
{cell_id = 0x02; cross_carrier_scheduling = false; scheduling_cell_id =␣
˓→0x01; ul_allowed = true}
)
},
{
rf_port = 1;
cell_id = 0x02;
tac = 0x0007;
pci = 4;
root_seq_idx = 268;
dl_earfcn = 3050;
// CA cells
scell_list = (
{cell_id = 0x01; cross_carrier_scheduling = false; scheduling_cell_id =␣
˓→0x02; ul_allowed = true}
)
}
)
16.2.2 UE Configuration
In the UE, we must again set the RF configuration and configure the UE capabilities.
For the RF configuration, we need to set the list of EARFCNs according to the cells configured in the
eNodeB and set the number of carriers to 2:
[rf]
dl_earfcn = 2850,3050
nof_carriers = 2
Adding more EARFCNs in the list makes the UE scan these frequencies and the number of carriers makes
the UE use more RF channels.
For the UE capabilities, we need to report at least release 10 and category 7:
[rrc]
ue_category = 7
ue_category_dl = 10
release = 10
[rf]
device_name = zmq
device_args = fail_on_disconnect=true,id=enb,tx_port0=tcp://*:2000,tx_
˓→port1=tcp://*:2002,rx_port0=tcp://localhost:2001,rx_port1=tcp://
˓→localhost:2003
16.3.2 UE Configuration
For srsUE, configure the zmq RF device as follows:
[rf]
device_name = zmq
device_args = tx_port0=tcp://*:2001,tx_port1=tcp://*:2003,rx_port0=tcp://
˓→localhost:2000,rx_port1=tcp://localhost:2002,id=ue,tx_freq0=2510e6,tx_
˓→freq1=2530e6,rx_freq0=2630e6,rx_freq1=2650e6
Since the ZMQ module is frequency agnostic, it is important that Tx and Rx frequencies are set in ZMQ
config. This makes internal carrier switching possible.
SEVENTEEN
C-V2X SIGNALLING
17.1 Introduction
Cellular-V2X (C-V2X), or Cellular Vehicle to Everything, is a 3GPP standard to facilitate automated and
(cooperative) intelligent transportation systems (C-ITS). With C-V2X, vehicles or other devices will be
able to directly communicate with each other without having to go through the cellular infrastructure.
This so called Sidelink communication, has a couple of advantages such as reducing communication
delay when peers are in close vicinity, but may also increase network capacity when communication re-
sources can be reused in different locations. The vehicular extensions have first been introduced in 3GPP
Release 14 but are in fact based on earlier attempts to support direct device to device (D2D) communi-
cation within cellular networks. Although C-V2X is considered a key enabler for future transportation
systems and the key market players, chip manufactures, operators and infrastructure providers, are heav-
ily pushing the technology, only few devices are available. But even if they are officially announced it is
extremely difficult to purchase them for developers or researchers, especially in small quantities.
As of version 20.04, srsRAN 4G includes a complete implementation of the 3GPP Sidelink physical
layer standardized in Release 14 licensed under AGPL v3. This includes all control and data channels
and signals for all transmission modes for both receive and transmit operation. This allows to build
complete and fully compatible C-V2X modems using software radios.
This application note shows how to use the receive-only example provided in srsRAN 4G 20.04 to decode
transmissions from a third-party commercial C-V2X device.
17.2 Requirements
The C-V2X example requires a radio that can process 10 or 20 MHz wide channels. Furthermore, the
device needs to be capable of deriving timing information from GNSS signals, e.g. a GPS signal. We
have tested with a Ettus Research B210 with GPSDO module.
96
srsRAN 4G Documentation, Release 23.11
Two identical subframes are transmitted one after each other with a gap of three empty subframes. The
second transmission is a actually a retransmission of the first subframe. Retransmissions occur with a
fixed time offset but may occupy different frequency resources. Note that there are no acknowledgments
to provide the sender feedback as to whether the transmission has been received or not.
It’s also noteworthy to say that no dedicated synchronization signals are transmitted as timing is solely
derived from the GNSS signal.
For more information about the Sidelink signal structure have a look at this excellent (albeit not focusing
on C-V2X) white paper from Rohde+Schwarz.
$ ./lib/examples/pssch_ue -a clock=gpsdo
open file to write
Opening RF device...
[INFO] [UHD] linux; GNU C++ version 7.4.0; Boost_106501; UHD_3.14.1.1-release
[INFO] [LOGGING] Fastpath logging disabled at runtime.
Using GPSDO clock
Opening USRP channels=1, args: type=b200,master_clock_rate=23.04e6
[INFO] [B200] Detected Device: B210
[INFO] [B200] Operating over USB 3.
[INFO] [B200] Detecting internal GPSDO....
[INFO] [GPS] Found an internal GPSDO: GPSTCXO , Firmware Rev 0.929a
[INFO] [B200] Initialize CODEC control...
[INFO] [B200] Initialize Radio control...
[INFO] [B200] Performing register loopback test...
[INFO] [B200] Register loopback test passed
(continues on next page)
If you’ve compiled srsRAN 4G with GUI support you should see something like this on your screen.
In this particular examples we can see the QPSK constellation of the control channel (PSCCH) and the
16-QAM constellation of the data channel (PSSCH).
You can stop the decoder with Ctrl+C. Upon exit, the application writes a PCAP file of the decoded signal
to /tmp/pssch.pcap. This file can be inspected with Wireshark. The screenshot below shows Wireshark
decoding the received signal. In this examples just random data is being transmitted but if you’re device
transmits actual ITS traffic, you should be able to see that there too.
Opening RF device...
[INFO] [UHD] linux; GNU C++ version 7.4.0; Boost_106501; UHD_3.14.1.1-release
[INFO] [LOGGING] Fastpath logging disabled at runtime.
Using GPSDO clock
Opening USRP channels=1, args: type=b200,master_clock_rate=23.04e6
[INFO] [B200] Detected Device: B210
[INFO] [B200] Operating over USB 3.
[INFO] [B200] Detecting internal GPSDO....
[INFO] [GPS] Found an internal GPSDO: GPSTCXO , Firmware Rev 0.929a
[INFO] [B200] Initialize CODEC control...
[INFO] [B200] Initialize Radio control...
[INFO] [B200] Performing register loopback test...
(continues on next page)
Similar to the above shown example, those subframes can now be decoded with pssch_ue by specifying
the input file name with parameter -i.
$ ./lib/examples/pssch_ue -i /tmp/usrp.dat
...
We can also use the example to decode one of the test vectors:
$./lib/examples/pssch_ue -i ../lib/src/phy/phch/test/signal_sidelink_cmw500_
˓→f5.92e9_s11.52e6_50prb_0offset_1ms.dat
In this example, we can see that both PSCCH and PSSCH use QPSK as modulation scheme.
EIGHTEEN
EMBMS END-TO-END
18.1 Introduction
enhanced Multimedia Broadcast Multicast Services (eMBMS) is the broadcast mode of LTE. Using
eMBMS, an eNodeB can efficiently broadcast the same data to all users attached to the cell. srsRAN
4G supports eMBMS in the end-to-end system including srsUE, srsENB and srsEPC. In addition to
these, a new application is introduced - srsMBMS. srsMBMS is the SRS MBMS gateway, an additional
network component which receives multicast data on a TUN virtual network interface and provides it to
the eMBMS bearer in the eNodeB.
18.2 Setup
To run an end-to-end srsRAN 4G system with eMBMS, some additional configuration of the srsENB
and srsUE applications are required. In the sample configurations provided, it is assumed that srsmbms,
srsepc and srsenb run on the same physical machine.
[enb_files]
sib_config = sib.conf.mbsfn
[embms]
(continues on next page)
101
srsRAN 4G Documentation, Release 23.11
[scheduler]
min_nof_ctrl_symbols = 2
max_nof_ctrl_symbols = 2
[expert]
nof_phy_threads = 2
Set m1u_if_addr to either a localhost address like 127.0.1.201 or to your local IP of the network in
which the srsMBMS binary is available. Once these setting adjustments have been made, the eNodeB
should be ready to run in eMBMS mode.
[mbms_gw]
m1u_multi_if = 127.0.1.200
Set m1u_if_addr to either a localhost address like 127.0.1.200 or to your local IP of the network in
which the eNodeB is available.
[rrc]
mbms_service_id = 0
Note this service id must match the service id in use by the network.
In addition, we recommend the following settings for best performance with eMBMS:
[phy]
interpolate_subframe_enabled = true
snr_estim_alg = empty
nof_phy_threads = 2
Once these configurations have been made, your UE should be ready to run eMBMS.
18.3 Usage
First, run srsMBMS (the MBMS gateway), srsEPC and srsENB on the same machine:
sudo ./srsmbms ~/.config/srsran_4g/mbms.conf
sudo ./srsepc ~/.config/srsran_4g/epc.conf
sudo ./srsenb ~/.config/srsran_4g/enb.conf
The MBMS gateway will create a TUN interface to which all traffic intended for multicast should be
written. It will then forward this traffic to the eNodeB via a seperate GTPU tunnel that is dedicated to
eMBMS traffic.
To test eMBMS with srsMBMS, srsEPC and srsENB, we can use Iperf. At the MBMS gateway, create a
route and start downlink traffic:
sudo route add -net 239.255.1.0 netmask 255.255.255.0 dev sgi_mb
iperf -u -c 239.255.1.1 -b 10M -T 64 -t 60
Next, we can run srsUE on a separate machine to receive the eMBMS data:
sudo ./srsue ~/.config/srsran_4g/ue.conf
Upon running srsUE with an eMBMS enabled eNodeB you should see the following output
at the terminal of the UE:
the MBMS service started. Service id:0, port: 4321 indicates the eMBMS service has successfully
started.
To receive the multicast iperf data, add a route to the UE and start an iperf server:
sudo route add -net 239.255.1.0 netmask 255.255.255.0 dev tun_srsue
iperf -s -u -B 239.255.1.1 -i 1
NINETEEN
NB-IOT SIGNALLING
19.1 Introduction
Narrowband Internet of Things (NB-IoT) is the 3GPP alternative to other Low Power Wide Area Network
(LPWAN) technologies, such as SigFox and LoRa. Technically it uses similar ideas and reuses some of
the components of LTE. But the bandwidth is significantly reduced to a single PRB (180 kHz) in order to
achieve the low-complexity, low-cost, long battery life requirements. It was first standardized in Release
13.
This application note shows how to spot and decode commercial NB-IoT transmissions in the first part.
The second part shows how to transmit and receive your own NB-IoT downlink signal.
19.2 Requirements
The NB-IoT examples require a radio that can sample at 1.92 Msps. Since the bandwidth of an NB-IoT
carrier is very small, even very cheaply available devices are sufficient to receive and decode the signal.
For example, popular RTL-SDR USB dongles available for around 15-20 Euro are fine for decoding the
signal.
The eNB transmitter example requires a radio with transmitting capabilities. For example, an Ettus
B200mini can be used as the eNB transmitter and an RTL-SDR as UE receiver. In principle, any device
supported by either UHD or SoapySDR should work.
The following application also supports srsGUI for real time visualization of data.
All of the examples used here can be found in the following directory: `./srsRAN/build/lib/
examples`
$ ./lib/examples/cell_search_nbiot -b 20
Opening RF device...
[INFO] [UHD] linux; GNU C++ version 8.3.0; Boost_106700; UHD_3.13.1.0-3build1
[INFO] [LOGGING] Fastpath logging disabled at runtime.
Opening USRP channels=1, args: type=b200,master_clock_rate=23.04e6
[INFO] [B200] Detected Device: B200mini
[INFO] [B200] Operating over USB 3.
[INFO] [B200] Initialize CODEC control...
(continues on next page)
104
srsRAN 4G Documentation, Release 23.11
Fig. 1: Basic system architecture required to perform a cell search and decode transmissions.
Found 1 cells
Found CELL 801.3 MHz, EARFCN=6253, PHYID=257, NPSS power=31.0 dBm
Bye
In this example, we’ve found a NB-IoT carrier at 801.3 MHz. We can now use the npdsch_ue example
(see next section) to decode the transmission.
It’s also possible to just have a look at the spectrum and check for an NB-IoT carrier there. Most of the
time the carrier is clearly visible, it’s close to a LTE carrier in most cases and usually even a bit stronger
than the LTE signal itself.
The example below, shows a 10 MHz Downlink LTE signal at 806 MHz. One can spot the NB-IoT carrier
on the left hand side (the guardband) of the LTE spectrum.
The table below shows some examples of known NB-IoT deployments in Europe.
$ ./lib/examples/npdsch_ue -f 801.3e6
Opening RF device...
Soapy has found device #0: driver=rtlsdr, label=Generic RTL2832U OEM ::␣
˓→00000001, manufacturer=Realtek, product=RTL2838UHIDIR, serial=00000001,␣
If you’ve compiled srsRAN with GUI support you should see something like this on your screen.
You can stop the UE decoder with Ctrl+C. Upon exit, the application writes a PCAP file of the decoded
signal to /tmp/npdsch.pcap. This file can be inspected with Wireshark. The screenshot below shows
Wireshark decoding the received signal.
Fig. 2: Basic system architecture required to transmit and recieve downlink signal.
Please check that the RF-frontend hardware you are using meets the requirements previously outlined.
To start the eNB example, simply execute the command shown below. This will launch the eNB which
by default picks the first available RF device and transmits the signal. With the -o option the signal can
also be written to file for offline processing.
$ ./lib/examples/npdsch_enodeb -f 868e6
Opening RF device...
[INFO] [UHD] linux; GNU C++ version 8.3.0; Boost_106700; UHD_3.13.1.0-3build1
[INFO] [LOGGING] Fastpath logging disabled at runtime.
[INFO] [B200] Loading firmware image: /usr/share/uhd/images/usrp_b200_fw.hex..
˓→.
The eNB example will transmit a standard-compliant downlink signal with MIB-NB and SIB1-NB. It
does not transmit SIB2 though. In all empty downlink subframes not used for MIB or SIB transmissions
it does transmit a NPDSCH signal for test purposes to RNTI 0x1234. One can modify the transport block
size of the test transmission by typing the MCS value (e.g. 20) on the eNB console and hitting Enter.
This test transmission can be decoded with the UE example. For this, we need to run the UE example by
telling it to decode RNTI 0x1234 and skip SIB2 decoding (because it’s not transmitted by eNB):
The outlook should look similar except that no SIB2 is decoded. If you’ve compiled with GUI support
you should again see a similar application like above. Please note the constellation diagram is updated a
lot more frequently because now all NPDSCH transmissions to the test user are also received.
TWENTY
SRSRAN 4G ON RASPBERRY PI 4
20.1 Introduction
srsRAN 4G is a 4G and 5G software radio suite. The 4G LTE systems includes a core network and an
eNodeB. Most people in the srsRAN 4G community run the software on high performance computers,
however the eNodeB can also be run on the low power Raspberry Pi 4 with a variety of SDRs.
The concept of an ultra low cost, low power and open source SDR LTE femtocell has a lot of people
excited!
ò Note
While not impossible, running srsUE on a small embedded device is more difficult due to increased
processing requirements for synchronisation and blind signal decoding.
111
srsRAN 4G Documentation, Release 23.11
ò Note
When using the USRP B210, you can create a 2x2 MIMO cell with srsenb. It is also possible to run
the srsEPC core network on the Pi too.
When using either of the LimeSDRs, you can only create a 1x1 SISO cell with srsenb. The core
network must be run on a separate device.
Due to the power requirements of the SDRs, you must use an external power source. This can be achieved
with a ‘Y’ cable, such as this:
And finally, modify the Pi CPU scaling_governor to ensure it is running in performance mode:
## reboot
[enb]
mcc = <yourMCC>
mnc = <yourMNC>
mme_addr = 127.0.1.100 ## or IP for external MME, eg. 192.168.1.10
gtp_bind_addr = 127.0.1.1 ## or local interface IP for external S1-U, eg.␣
˓→192.168.1.3
n_prb = 15
tm = 2
nof_ports = 2
[rf]
dl_earfcn = 1934
tx_gain = 80 ## this power seems to work best
rx_gain = 40
device_name = UHD
device_args = auto ## does not work with anything other than 'auto'
[enb]
mcc = <yourMCC>
mnc = <yourMNC>
mme_addr = <ipaddr> ## IP for external MME, eg. 192.168.1.10
gtp_bind_addr = <ipaddr> ## local interface IP for external S1-U, eg. 192.
˓→168.1.3
n_prb = 15
tm = 1
nof_ports = 1
[rf]
dl_earfcn = 1934
tx_gain = 60 ## this power seems to work best
rx_gain = 40
device_name = soapy
device_args = auto ## does not work with anything other than 'auto'
[mme]
mcc = <yourMCC>
mnc = <yourMNC>
mme_bind_addr = 127.0.1.100 ## or local interface IP for external S1-MME, eg.
˓→ 192.168.1.10
ò Note
When running srsEPC on an external device (eg. another Pi), you must open incoming firewall ports
to allow the S1-MME and S1-U connections from srsENB.
S1-MME = sctp, port 36412 || S1-U = udp, port 2152
If using iptables,
sudo iptables -A INPUT -p sctp -m sctp --dport 36412 -j ACCEPT
sudo iptables -A INPUT -p udp -m udp --dport 2152 -j ACCEPT
ò Note
Between runs when using the LimeSDR-USB, you sometimes need to physically unplug and recon-
nect the SDR to power cycle it.
Launch core network (on separate device, or on the Pi4 eNodeB when using USRP B210):
The following htop screenshot shows the resource utilisation when running the software on the Pi 4B
/4GB RAM with x2 UEs attached to the USRP B210 cell. The srsRAN 4G software has been running
here for more than 18 hours without any problems. Only half of the RAM is used, and the CPU cores
are sitting at around 25%. There is a chance, therefore, that this software configuration will work with
the Pi 4B /2GB RAM version, and maybe also on other recent Arm based dev boards. If you can get a
working cell going with alternative hardware, let the srsran-users mailing list know!
The second required change to pass all tests successfully is to increase the RLIMIT_MEMLOCK setting
in /etc/security/limits.conf. A detailed description of the underlying change is provided here
and information about RLIMIT_MEMLOCK can be found here. To lift the limit, add the following line to
/etc/security/limits.conf.
* - memlock unlimited
With those changes srsRAN 4G should compile and shoud pass all tests on a Ubuntu 22.04 LTS aarch64
system.
TWENTYONE
HARDWARE OPTIONS
ò Note
This information is correct as of May 11th 2022
21.1 Introduction
This document aims to provide users with an overview of the suggested PC and SDR hardware combi-
nations that can be used to best explore the functionality of srsRAN. There are 100’s of possible com-
binations of PC, notebook, single board computer and SDR hardware that can demonstrate the uses of
srsRAN. This list aims to provide three possible hardware packages that can help to guide users when
choosing what to buy. These packages are grouped by price, with full set-ups costing ~$400, ~$3,300 and
finally ~$19,200. The three packages proposed here should provide any user with enough information to
create their ideal set-up, which easily meets their needs.
118
srsRAN 4G Documentation, Release 23.11
• Processor Cinebench score - This gives a good indication of a processor’s ability to deal with
high computational load. Find out more here.
• Cooling ability - More cooling ability will ensure CPU performance does not drop off significantly
under heavy load
• Portability - Some use-cases may benefit from a PC that is portable
21.3 Packages
Each package will contain a recommended SDR and compute hardware bundle. With some appropriate
use-cases for each. A full end-to-end system will require at least two SDRs and two Compute platforms.
As previously mentioned, these packages represent possible combinations, and are by no means a gold
standard of the types of hardware needed for SDR experimentation.
21.3.1 Package 1
SDR PC
Lime SDR mini 2.0 Raspberry Pi 4
Price: TBC Price: $34.87 - $75.90
Driver: SoapySDR # Cores: 4
Frequency Range: 10 Mhz – 3.5 GHz Frequency: 1.5 Ghz
RF Bandwidth: 40 Mhz Cache SIze: 1 MiB
Clock: 30.72 MHz onboard VCTCXO # Threads: 4
# Channels: 1x1
FPGA: Lattice ECP5
The original LimeSDR mini has been discontinued due to supply chain issues. The LimeSDR mini 2.0
has been announced as it’s replacement. It is not yet available, but will be soon.
This package is inspired by our R. pi4 app note.
Such a set-up would allow users to create a cheap end-to-end network, for under $400 without the need
for a main PC. To run a full end-to-end system using the above equipment a user would need 3 Raspberry
Pi4 units and 2 LimeSDR mini 2.0. A Pi4 is needed for the EPC, eNB and UE, and a front-end is needed
for both the eNB and UE. Due to the small size and portability of the system this setup is ideal for on-the-
fly demos and testing of networks and applications that don’t require high-powered compute hardware or
frontends.
Advantages
• Low cost
• Highly portable
Limitations
• Limited cell bandwidth (currently 5 MHz)
• Limited max bitrate in the UL
21.3.2 Package 2
SDR PC
BladeRF micro 2.0 xA4 HP Omen 16 Intel i5-12500H
Price: $540 Price: $1099.99
Driver: SoapySDR # Cores: 12
Frequency Range: 47 Mhz – 6 Ghz Frequency: 1.8 – 4.5 GHz
RF Bandwidth: 56 Mhz L3 Cache SIze: 18 MB
Clock: 38.4 MHz onboard VCTCXO # Threads: 16
# Channels: 2x2
FPGA: Altera Cyclone V (49 kLE)
This offers a step up from the previous package; in price and performance. The BladeRF micro 2.0 xA4
offers users a 2X2 MIMO configuration, higher max bandwidth, a larger frequency range, and a larger
FPGA. The HP Omen 16 is a gaming notebook, meaning it is built for high performance and high CPU
load for a sustained period of time. The intel i5 12500H is the main draw here, having scored highly in the
Cinebench r23 benchmarking test. This set-up is considerably more expensive and would cost roughly
$3300 for a full set up of 2 PCs and 2 frontends.
Advantages
• Easily portable, with improved performance
• Suits nearly any use-case
Limitations
• Single cell configuration but up to 20 MHz 2x2 MIMO
• Non-expandable Bandwidth and operating frequencies
21.3.3 Package 3
SDR PC
Ettus x310 Dell Precision 3460 Workstation Intel i7-12700
Price: $8065 Price: $1509.00
Driver: UHD # Cores: 12
Frequency Range: DC - 6GHz (w/ Daughter Frequency: 2.1 - 4.9 GHz
Cards)
RF Bandwidth: 160 MHz (w/ Daughter Cards) Cache SIze: 35 MB
Clock: Configurable # Threads: 20
# Channels: 2x2
FPGA: KINTEX7-410T
This system offers users the most potential in terms of RF-frontend capabilities on PC performance. The
Ettus x310 offers users the largest frequency range, from DC to 6 GHz with the use of the appropriate
daughter cards, a potential bandwidth of 160 MHz (requires the correct daughter cards), a multi-cell con-
figuration and a powerful Kintex7 FPGA. The 3460 workstation offers an intel i7-12700 which is capable
of high intensity computations without a significant drop off in performance over sustained periods of
time. The workstation offers 10 Gbps ethernet connection, which allows users full utilization of the 10
Gbps connection available on the x310. A full E2E system would cost a total of roughly $19200.
Advantages
• Carrier Aggregation
• Multi-cell configuration
Limitations
• Not all PCs will be able to interface via 10Gb ethernet. May have to use adapters.
21.4 ZMQ
srsRAN has been designed with support for Zero-MQ. This is a “fake RF” driver, which allows users to
set-up a virtual end-to-end network without the use of physical RF-hardware. This is a powerful tool for
experimentations and development for users that do not have access to hardware, or for those who cannot
purchase it.
ZMQ does not require large amounts of computational resources to run, meaning most PCs and notebooks
(including the R. Pi4) can run it without sacrificing performance. ZMQ replaces the radio link between
the eNB and UE, by creating a transmit and receive pipe for exchanging IQ samples TCP or IPC.
Our ZMQ app note clearly demonstrates how srsRAN can be used with ZMQ.
Some USRPs will require the addition of an RF-daughterboard, specifically the N and X-series USRPs.
The KB also contains an application note which goes through all of the options and their ideal use-case(s).
You can take a look at this guide for more information.
TWENTYTWO
5G SA SRSUE
22.1 Introduction
The 22.04 release of srsRAN 4G brought 5G SA (Standalone) support to srsUE. This application note
shows how srsUE can be used with a third-party 5G SA network. In this example, we use the Amari
Callbox Classic from Amarisoft to provide the network.
22.4 Limitations
The current 5G SA UE application has a few feature limitations that require certain configuration settings
at both the gNB and the core network. The key feature limitations are as follows:
• Limited to 15 kHz Sub-Carrier Spacing (SCS), which means only FDD bands can be used.
• Limited to 5, 10, 15 or 20 MHz Bandwidth (BW)
123
srsRAN 4G Documentation, Release 23.11
22.5 Configuration
To set-up and run the 5G SA network and UE, the configuration files for both the Callbox and srsUE must
be changed.
All of the modified configuration files have been included as attachments to this App Note. It is recom-
mended you use these files to avoid errors while changing configs manually. Any configuration files not
included here do not require modification from the default settings.
UE files:
• UE config example
Callbox files:
• gNB SA config
22.5.1 srsUE
The following changes need to be made to the UE configuration file to allow it to connect to the Callbox
in SA mode.
Firstly the following parameters need to be changed under the [rf] options so that the X310 is configured
optimally:
[rf]
tx_gain = 3
freq_offset = 0
nof_antennas = 1
srate = 11.52e6
device_name = uhd
device_args = type=x300,serial=30B8658,clock=external,sampling_rate=23.04e6,
˓→lo_freq_offset_hz=23.04e6,None
The next set of changes need to be made to the [rat.eutra] options. The LTE carrier is disabled, to force
the UE to use a 5G NR carrier:
[rat.eutra]
dl_earfcn = 2850
nof_carriers = 0
[rat.nr]
nof_carriers = 1
bands = 3
22.5.2 Callbox
The amarisoft_enb.cfg file is responsible for the configuration of the gNB needed for a 5G SA network.
The main changes to the default config are as follows:
• Enable NR support
• Enable NR cell and configure NR cell
• Modify the PRACH configuration
• Modify the PUCCH configuration
Enable NR Support
This is done on line 47. by setting the corresponding flag to true:
nr_support: true,
NR Cell
Firstly the Band and ARFCN must be set. This is done on lines 61 and 62:
nr_cell_list: [
{
rf_port: 0,
cell_id: 1,
band: 3,
dl_nr_arfcn: 368500,
},
],
The band and dl_nr_afcn are chosen based on the known limitations of srsRAN 4G.
Next, the SCS, BW and other configuration parameters can be changed from line 68:
nr_cell_default: {
subcarrier_spacing: 15, /* kHz */
ssb_subcarrier_spacing: 15, // only supported in FDD bands
bandwidth: 10, /* MHz */
n_antenna_dl: 1,
n_antenna_ul: 1,
ssb_pos_bitmap: "1000",
ssb_period: 10, /* in ms */
n_id_cell: 500,
Here the subcarrier_spacing is set to 15 KHz and the bandwidth to 10 MHz, the n_antenna_dl is
set to 1 and the ssb_period is set to 10.
PRACH
For the PRACH config options (line 105) the following is used:
prach: {
prach_config_index: 0,
(continues on next page)
The changes made to the above include the setting of prach_config_index to 0, setting
msg1_frequency_start to 1 and setting ra_response_window to 10.
PUCCH
Lastly, the PUCCH config must be changed. This is done from line 353:
pucch: {
pucch_group_hopping: "neither",
hopping_id: -1, /* -1 = n_cell_id */
p0_nominal: -90,
pucch1: {
n_cs: 3,
n_occ: 3,
freq_hopping: false,
},
pucch2: {
n_symb: 2,
n_prb: 1,
freq_hopping: false,
simultaneous_harq_ack_csi: false,
max_code_rate: 0.25,
},
},
The only change here is that freq_hopping is set to false in both pucch1 and pucch2.
The gNB is now configured correctly. All other config files associated with the gNB and 5GC can be left
in their default states.
22.6.1 5GC
To run the 5GC the following command is used:
22.6.2 gNB
Next the eNB/ gNB should be instantiated, using the following command:
22.6.3 UE
To run the UE, use the following command:
Once the UE has been initialized you should see the following:
This will be followed by some information regarding the USRP. Once the cell has been found successfully
you should see the following:
To confirm the UE successfully connected, you should see the following on the console output of the
gNB:
---------Signal-----------|-----------------DL-----------------|-----------UL-
˓→----------
rat pci rsrp pl cfo | mcs snr iter brate bler ta_us | mcs buff ␣
˓→brate bler
nr 500 -3 0 2.0 | 27 28 2.0 23M 0% 0.0 | 27 59 ␣
˓→ 16M 0%
nr 500 -3 0 1.6 | 27 28 2.1 23M 0% 0.0 | 27 30k ␣
˓→ 16M 0%
nr 500 -3 0 2.0 | 27 28 2.1 23M 0% 0.0 | 27 44k ␣
˓→ 16M 0%
nr 500 -3 0 824m | 27 28 2.1 23M 0% 0.0 | 27 26k ␣
˓→ 16M 0%
nr 500 -3 0 1.1 | 27 28 2.1 23M 0% 0.0 | 27 10k ␣
˓→ 17M 0%
nr 500 -3 0 1.3 | 27 28 2.0 23M 0% 0.0 | 27 0.0 ␣
˓→ 16M 0%
nr 500 -3 0 106m | 27 28 2.0 23M 0% 0.0 | 27 118k ␣
˓→ 16M 0%
nr 500 -4 0 1.0 | 27 28 2.1 22M 0% 0.0 | 27 52k ␣
˓→ 21M 0%
nr 500 -4 0 1.9 | 27 28 2.0 22M 0% 0.0 | 27 57k ␣
˓→ 21M 0%
nr 500 -3 0 840m | 27 28 2.0 23M 0% 0.0 | 27 54k ␣
˓→ 19M 0%
nr 500 -3 0 160m | 27 28 2.0 23M 0% 0.0 | 27 20k ␣
˓→ 18M 0%
To read more about the UE console trace metrics, see the UE User Manual.
----DL----------------------- --UL-----------------------------
˓→ -------------------
UE_ID CL RNTI C cqi ri mcs retx txok brate snr puc1 mcs rxko rxok brate ␣
˓→ #its phr pl ta
1 001 4601 1 15 1 27.9 0 1472 22.6M 39.5 - 27.9 0 1022 18.7M ␣
˓→1/1.9/3 - - 0.3
1 001 4601 1 15 1 27.9 0 1476 22.7M 39.3 - 27.9 0 987 17.8M ␣
˓→1/1.9/3 - - 0.3
1 001 4601 1 15 1 27.9 0 1512 23.1M 36.3 - 27.9 0 908 15.7M ␣
˓→1/1.9/3 - - 0.3
1 001 4601 1 15 1 27.9 0 1474 22.6M 38.0 - 27.9 0 977 17.1M ␣
˓→1/1.9/3 - - 0.3
1 001 4601 1 15 1 27.9 0 1488 22.8M 46.6 - 27.9 0 929 16.3M ␣
(continues on next page)
TWENTYTHREE
5G NSA SRSUE
23.1 Introduction
The 21.04 release of srsRAN 4G brought 5G NSA (Non-Standalone) support to srsUE. This application
note shows how the UE can be used with a third-party 5G NSA network. In this example, we use the
Amari Callbox Classic from Amarisoft to provide the network.
5G Non-Standalone mode provides 5G support by building upon and using pre-existing 4G infrastructure.
A secondary 5G carrier is provided in addition to the primary 4G carrier. A 5G NSA UE connects first
130
srsRAN 4G Documentation, Release 23.11
to the 4G carrier before also connecting to the secondary 5G carrier. The 4G anchor carrier is used for
control plane signaling while the 5G carrier is used for high-speed data plane traffic.
This approach has been used for the majority of commercial 5G network deployments to date. It provides
improved data rates while leveraging existing 4G infrastructure. UEs must support 5G NSA to take
advantage of 5G NSA services, but existing 4G devices are not disrupted.
23.3 Limitations
The current 5G NSA UE application has a few feature limitations that require certain configuration set-
tings at both the gNB and the core network. The key feature limitations are as follows:
• 4G and NR carrier need to use the same subcarrier-spacing (i.e. 15 kHz) and bandwidth (we’ve
tested 10 and 20 MHz)
• Only DCI format 0_0 (for Uplink) and 1_0 (for Downlink) supported
• NR carrier needs to use RLC UM (NR RLC AM not yet supported)
• Support for sub-6Ghz (FR1) spectrum
Tests may be carried out over-the-air or using a cabled setup. For this example, we use a cabled setup
between the UE and the eNB/gNB (i.e from the X310 to the PCIe SDR cards on the Callbox). These
connections run through 30dB attenuators as shown in the figure above. The PPS inputs for the accurate
clocking of both the UE and Callbox are also shown. Both UE and Callbox require accurate clocks - in
our testing we provide PPS inputs to both.
23.6 Configuration
To set-up and run the 5G NSA network and UE, the configuration files for both the Callbox and srsUE
must be changed.
All of the modified configuration files have been included as attachments to this App Note. It is recom-
mended you use these files to avoid errors while changing configs manually. Any configuration files not
included here do not require modification from the default settings.
UE files:
• UE config example
Callbox files:
• MME config
• gNB NSA config
23.6.1 srsUE
The following changes need to be made to the UE configuration file to allow it to connect to the Callbox
in NSA mode.
Firstly the following parameters need to be changed under the [rf] options so that the X310 is configured
optimally:
[rf]
tx_gain = 10
nof_antennas = 1
device_name = uhd
device_args = type=x300,clock=external,sampling_rate=11.52e6,lo_freq_offset_
˓→hz=11.52e6
srate = 11.52e6
The next set of changes need to be made to the [rat.eutra] options. This make sure the anchor cell is
found by the UE:
[rat.eutra]
dl_earfcn = 300
Finally the [rat.nr] options need to be configured for 5G NSA mode operation:
[rat.nr]
#enable 5G data link
nof_carriers = 1
23.6.2 Callbox
To correctly configure the Callbox changes must be made to the following files: mme.cfg and gnb_nsa.cfg.
MME Configuration
The mme.cfg file must be changed to reflect the QoS Class Identifier (QCI) which will be used across the
network. We use QCI 7 as NR RLC UM is supported by the UE. The following change must be made to
the erabs: configurations:
qci: 7,
The TX gain, sampling rates for each cell and the UL & DL frequencies for the NR cell must be set. The
tx_gain is set for the rf_driver::
The sample rate is set for the LTE cell in the rf_ports: configuration:
The sample rate and DL/UL frequencies are set for the NR cell in the rf_ports: configuration:
The NR absolute radio-frequency channel number (ARFCN) for the DL needs to be changed to match
the new DL frequency that has been set:
Next, the default settings of the NR cell must be adjusted. The subcarrier spacing(s) should be changed
in the nr_cell_default: configuration:
n_timing_advance_offset: 0,
period: 10,
dl_slots: 6,
dl_symbols: 0,
ul_slots: 3,
ul_symbols: 0,
#if NR_TDD == 1
prach_config_index: 0,
msg1_frequency_start: 1,
zero_correlation_zone_config: 0,
For the PDCCH configuration (starting at line 411), the following changes must be made:
pdcch: {
common_coreset: {
rb_start: -1, /* -1 to have the maximum bandwidth */
l_crb: -1, /* -1 means all the bandwidth */
duration: 1,
precoder_granularity: "sameAsREG_bundle",
//dmrs_scid: 0,
},
dedicated_coreset: {
rb_start: -1, /* -1 to have the maximum bandwidth */
l_crb: -1, /* -1 means all the bandwidth */
duration: 1,
precoder_granularity: "sameAsREG_bundle",
//dmrs_scid: 0,
},
css: {
n_candidates: [ 1, 1, 1, 0, 0 ],
},
rar_al_index: 2,
uss: {
n_candidates: [ 0, 2, 1, 0, 0 ],
dci_0_1_and_1_1: false,
force_dci_0_0: true, // Forces DCI format 0_0 for Uplink
force_dci_1_0: true, // Forces DCI format 1_0 for Downlink
},
al_index: 1,
},
k1: [ 8, 7, 6, 6, 5, 4],
QAM 64 must be selected for the Modulation Coding Scheme (MCS) table:
mcs_table: “qam64”,
freq_hopping: false,
For the pucch2 entry, the following settings can be selected, while the entries for pucch3 and pucch4 can
be removed fully:
pucch2: {
n_symb: 2,
n_prb: 1,
freq_hopping: false,
simultaneous_harq_ack_csi: false,
max_code_rate: 0.25,
},
The final changes to the configuration file are made to pusch settings:
pusch: {
mapping_type: "typeA",
n_symb: 14,
dmrs_add_pos: 1,
dmrs_type: 1,
dmrs_max_len: 1,
tf_precoding: false,
mcs_table: "qam64", /* without transform precoding */
mcs_table_tp: "qam64", /* with transform precoding */
ldpc_max_its: 5,
k2: 4, /* delay in slots from DCI to PUSCH */
p0_nominal_with_grant: -90,
msg3_k2: 5,
msg3_mcs: 4,
msg3_delta_power: 0, /* in dB */
beta_offset_ack_index: 9,
The Callbox should now be correctly configured for 5G NSA testing with srsUE.
23.7 Usage
Following configuration, we can run the UE and Callbox. The following order should be used when
running the network:
1. MME
2. eNB/ gNB
3. UE
23.7.1 MME
To run the MME the following command is used:
23.7.3 UE
To run the UE, use the following command:
Once the UE has been initialised you should see the following:
This will be followed by some information regarding the USRP. Once the cell has been found successfully
you should see the following:
rat pci rsrp pl cfo | mcs snr iter brate bler ta_us | mcs buff ␣
˓→brate bler
lte 1 -52 13 12 | 19 40 0.5 15k 0% 7.3 | 16 0.0 ␣
˓→10k 4%
nr 500 4 0 881m | 2 31 1.0 0.0 0% 0.0 | 17 0.0 ␣
˓→6.0k 0%
lte 1 -49 7 -4.8 | 28 40 0.5 1.4k 0% 7.3 | 0 0.0 ␣
˓→0.0 0%
nr 500 3 0 -5.9 | 27 35 1.0 1.3k 0% 0.0 | 28 0.0 ␣
˓→148k 0%
lte 1 -58 16 -3.7 | 28 40 0.5 1.4k 0% 7.3 | 0 0.0 ␣
˓→0.0 0%
nr 500 3 0 -7.7 | 27 35 1.0 1.3k 0% 0.0 | 28 0.0 ␣
˓→148k 0%
lte 1 -61 19 428m | 28 40 0.5 1.4k 0% 7.3 | 0 0.0 ␣
˓→0.0 0%
nr 500 4 0 2.2 | 27 30 1.4 67k 0% 0.0 | 28 28 ␣
˓→143k 0%
lte 1 -61 19 -507m | 28 40 0.5 1.4k 0% 7.3 | 0 0.0 ␣
˓→0.0 0%
nr 500 4 0 924m | 27 24 1.9 18M 0% 0.0 | 28 0.0 ␣
˓→3.7k 0%
lte 1 -61 19 3.8 | 28 40 0.5 1.4k 0% 7.3 | 0 0.0 ␣
˓→0.0 0%
nr 500 4 0 3.5 | 27 24 1.9 18M 0% 0.0 | 0 0.0 ␣
˓→0.0 0%
lte 1 -61 19 3.8 | 28 40 0.5 1.4k 0% 7.3 | 0 0.0 ␣
˓→0.0 0%
nr 500 4 0 3.1 | 27 24 1.9 18M 0% 0.0 | 0 0.0 ␣
˓→0.0 0%
To confirm the UE successfully connected, you should see the following on the console output of the
eNB:
UE_ID CL RNTI C cqi ri mcs retx txok brate snr puc1 mcs rxko rxok brate ␣
˓→ #its phr pl ta
1 000 003d 1 15 1 15.0 0 16 5.58k 15.4 34.7 18.8 3 13 5.27k ␣
˓→1/3.7/6 31 38 0.0
3 002 4601 1 15 1 27.0 0 1 320 36.2 - 27.7 0 87 64.0k ␣
(continues on next page)
srsGUI is also supported for use with the UE in NSA mode. An example of the plots produced can be
seen above.
To enable srsGUI, see here.
ò Note
If you have already built srsRAN 4G without srsGUI support, you must re-do so after srsGUI has
been built.
---------Signal----------|-----------------DL-----------------|-----------UL--
˓→---------
rat pci rsrp pl cfo | mcs snr iter brate bler ta_us | mcs buff ␣
˓→brate bler
23.8 Troubleshooting
The UE currently doesn’t support NR cell search and cell measurements. It therefore uses a pre-
configured physical cell id (PCI) to send artificial NR cell measurements to the eNB. The reported PCI
in those measurements is 500 by default (default value in Amarisoft configurations). If the selected PCI
for the cell of interest is different, the value can we overwritten with:
$ ./srsue/src/srsue --rrc.nr_measurement_pci=140
[rrc]
nr_measurement_pci = 140