Running a full end-to-end LTE network on a single computer with srsRAN

Here is the installation guide for deploying complete LTE network (UE, eNodeB, EPC) in a single computer. ZeroMQ is used for the communication bettween the network elements. The whole LTE network can be simulated without using physical UE, sim card and SDR card.

Computer specification
CPU – Intel Core i5-8400
Memory – 16GB RAM
OS – Ubuntu 20.04

Step 1 – install UHD
sudo add-apt-repository ppa:ettusresearch/uhd
sudo apt-get update
sudo apt-get install libuhd-dev uhd-host

Step 2 – install PCSC
//dependencies for pcsc
sudo apt-get install -y autoconf-archive
sudo apt-get install libtool
sudo apt-get install flex
sudo apt-get install libsystemd-dev
sudo apt-get install libudev-dev

//install pcsc
git clone https://salsa.debian.org/rousseau/PCSC.git
cd PCSC
./bootstrap
./configure
make
sudo make install

Step 3 – install soapySDR
//dependencies for soapySDR
sudo apt-get install cmake g++ libpython3-dev python3-numpy swig
sudo apt-get install cmake g++ libpython2-dev python-numpy swig
sudo apt-get install python3-dbg

//install luajit
git clone https://luajit.org/git/luajit.git
make
sudo make install PREFIX=/usr
edit /home/budakgigibesi/SoapySDR/build/CMakeCache.txt, change the /usr/bin/luajit to /usr/bin/luajit-2.1.0-beta3

//install luaUnit
git clone https://github.com/bluebird75/luaunit.git
copy luaunit.lua to /usr/local/share/lua/5.1/
sudo apt-get install -y lua-ldoc
sudo apt-get install doxygen
sudo apt install graphviz

//install soapySDR
git clone https://github.com/pothosware/SoapySDR.git
cd SoapySDR
mkdir build
cd build
cmake ..
make -j4
sudo make install
sudo ldconfig #needed on debian systems
SoapySDRUtil –info

Step 4 – install srsGUI
//dependencies for srsgui
sudo apt-get install libboost-system-dev libboost-test-dev libboost-thread-dev libqwt-qt5-dev qtbase5-dev

//install srsGUI
git clone https://github.com/srsLTE/srsGUI.git
cd srsgui
mkdir build
cd build
cmake ../
make
sudo make install
make test

Step 5 – install zeroMQ
//install zeroMQ core engine
git clone https://github.com/zeromq/libzmq.git
cd libzmq
./autogen.sh
./configure
make
sudo make install
sudo ldconfig

//install High-level C binding for zeroMQ
git clone https://github.com/zeromq/czmq.git
cd czmq
./autogen.sh
./configure
make
sudo make install
sudo ldconfig

Step 5 – install srsRAN
//dependencies for srsRAN
sudo apt-get install build-essential cmake libfftw3-dev libmbedtls-dev libboost-program-options-dev libconfig++-dev libsctp-dev
sudo apt install libdw-dev
sudo apt install libdwarf-dev
sudo apt install binutils-dev #for libbfd
sudo apt install python3-jinja2 #need to install this if not nas integrity check will fail

//install srsRAN
git clone https://github.com/srsRAN/srsRAN.git
cd srsRAN
mkdir build
cd build
cmake ../
make
make test
sudo make install

//generate configuration files
srsran_install_configs.sh user

Step 6 – Run the network
//creating a new network namespace called “ue1” for the (first) UE:
sudo ip netns add ue1
sudo ip netns list

//run the epc
sudo srsepc –pcap.enable=true

//run the enb
sudo srsenb –rf.device_name=zmq –rf.device_args=”fail_on_disconnect=true,tx_port=tcp://*:2000,rx_port=tcp://localhost:2001,id=enb,base_srate=23.04e6″

//run ue
sudo srsue –rf.device_name=zmq –rf.device_args=”tx_port=tcp://*:2001,rx_port=tcp://localhost:2000,id=ue,base_srate=23.04e6″ –gw.netns=ue1

Step 7 – Ping
//ping UE from EPC
ping 172.16.0.2

//ping EPC from UE
sudo ip netns exec ue1 ping 172.16.0.1

Ping test results

References
https://docs.srsran.com/en/latest/general/source/1_installation.html
https://www.sharetechnote.com/html/SDR_srsLTE_Build.bak
https://github.com/bluebird75/luaunit/tree/LUAUNIT_V3_2_1
https://github.com/bluebird75/luaunit
https://luajit.org/install.html
https://github.com/pothosware/SoapySDR/wiki/BuildGuide
https://github.com/pothosware/SoapySDR/wiki
https://github.com/pothosware/SoapySDR/issues/334 #no module issue in soapySDR make test