Table of Contents
- Kernel Requirements for RAN
- Recommended Operating System versions
- Ubuntu 14.04.3 LTS/Linux Kernel version 3.19 <- Use Ubuntu 14.04 for master branch old tags
- Ubuntu 16.04 LTS/Linux Kernel version 4.8 or higher
- Power management
- Disable CPU Frequency scaling
- Wi-Fi/Bluetooth
- Virtual Machine (VMWare, Virtual Box, etc)
- Kernel Requirements for Cent OS 7 EXPERIMENTAL
- Kernel Requirements for Core Network <- Use Ubuntu 16.04 for a first time user
|
OpenAirInterface: Operating System and Kernel Requirements |
Kernel Requirements for RAN
We recommend that you use Ubuntu Linux for OpenAirInterface. OAI should run also on other distributions, but the build scripts might need to be adopted.
- 2019/04 Update: Part of the Continuous Integration is now also building and testing on the Red Hat entreprise 7.6 version
Recommended Operating System versions
- For "old tags" of the
masterbranch (older thanv0.6.1_tdd), we recommend Ubuntu 14.04 LTS with low-latency kernel 3.19. See this section - For "newer tags" on the
masterbranch (startingv1.0.0) and for thedevelopbranch, we recommend Ubuntu 16.04 with low-latency kernel 4.4.0 or higher. See this section - Experimental CentOS requirements: see this section
Below are precise instructions for the primary installations that we use at EURECOM.
Note: Please do not try any other Linux distributions not recommended by us as OAI needs lot of packages and is very sensitive to version numbers, linux kernel, etc without knowing what you are doing. We test only very few Linux distros and do not support anything other than what is mentioned in wiki
Ubuntu 14.04.3 LTS/Linux Kernel version 3.19 <- Use Ubuntu 14.04 for master branch old tags
Install a standard 64-bit 14.04.3 system. Note: the latest version from Feb. 2016, 14.04.04 comes with kernel 4.2 by default which will not work with OAI (master branch).
Low-latency kernel installation
To install the low-latency kernel 3.19 on top of Ubuntu 14.04, 64-bit architecture type
Example kernel tested on our side for openairinterface5g installation is linux-image-3.19.0-61-lowlatency
sudo apt-get install linux-image-3.19.0-61-lowlatency linux-headers-3.19.0-61-lowlatency
IF you wish to install from linux mainline (not recommended as some versions are unstable)
version=3.19
wget -r -e robots=off --accept-regex "(.*lowlatency.*amd64)|(all).deb" http://kernel.ubuntu.com/~kernel-ppa/mainline/v${version}-vivid/
dpkg -i kernel.ubuntu.com/*/*/*/*deb
After a reboot, uname -a should give the following output:
Linux [NAME] 3.19-lowlatency #201408132253 SMP PREEMPT Thu Aug 14 03:01:44 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
Note: To use legacy OpenAirInterface Makefiles and to compile Kernel modules, (the current procedure doesn't require this), you need to add a link in Kernel source files as per this example:
export version=<your_kernel_version>
ln -s /usr/src/linux-headers-${version}*lowlatency/include/generated/autoconf.h /lib/modules/${version}*lowlatency/build/include/linux
Ubuntu 16.04 LTS/Linux Kernel version 4.8 or higher
The support is only valid for latest master branch tags (>= v1.0.0) or latest develop branch tags (>= 2018.w02).
To install the low-latency kernel on this system,
sudo apt-get install linux-image-lowlatency linux-headers-lowlatency
Power management
Remove all power management features in the BIOS (sleep states, in particular C-states) and CPU frequency scaling (Intel SpeedStep). In some cases, you can also do this with cpufreqtool. Also, disable hyperthreading in BIOS and make sure its turned off in Linux
- check this using this command:
watch grep \"cpu MHz\" /proc/cpuinfo - have a look at this link for further information.
- you must disable p-state and c-state in linux so you need to add
intel_pstate=disableto the Linux boot options, i.eGRUB_CMDLINE_LINUX_DEFAULT="quiet intel_pstate=disable"in/etc/default/grub, then performupdate-grub. You may optionally add the following as well"processor.max_cstate=1 intel_idle.max_cstate=0 idle=poll" - Append "blacklist intel_powerclamp" to the end of /etc/modprobe.d/blacklist.conf, to blacklist the intel_powerclamp" module. If the file does not exist, create one, and add the line into it.
- You also need to disable hyperthreading, CPU frequency control, C-States, P-States and any other power management from BIOS as well.
- Install i7z utility to check the cpu
sudo apt-get install i7z
sudo i7z
Here is the sample output of i7z. The CPU should not change its frequency by more than 1-2 hertz and should not be any C-state other than C0

Note: If your CPU Frequency is changing or CPU is in C-states, then You need to fix the CPU issue above before proceeding further. You will have real-time issues with eNB/UE/RRH if you do not fix them now!!!
Disable CPU Frequency scaling
Install cpufrequtils:
sudo apt-get install cpufrequtils
Then edit the following file (if it doesn't exist, create it):
sudo vi /etc/default/cpufrequtils
And add the following line to it:
GOVERNOR="performance"
Save and exit.
Now you need to disable ondemand daemon, otherwise after you reboot the settings will be overwriten.
sudo update-rc.d ondemand disable
sudo /etc/init.d/cpufrequtils restart
You can check your settings with:
cpufreq-info
It will show a block of information for every core your processor has. Just check if all of then are in perfomance mode, and at the maximum speed of your processor.
Wi-Fi/Bluetooth
We have sometimes noticed real time issues while running lte-softmodem with USRP even after following above procedure. If you happen to face similar problems you should turn off Wi-Fi/Bluetooth (or remove respective drivers, if possible). This fixed the issue on some of our machines.
Virtual Machine (VMWare, Virtual Box, etc)
We do not recommend the usage of virtual machine usage for OAI due to the fact that some VMs do no export the CPU flags correctly, and CPU flags needs to be passed manually which might/might not work due to VM configuration. The resolution of this issue and possible solution is discussed here (https://lists.eurecom.fr/sympa/arc/openair5g-user/2015-10/msg00041.html, https://gitlab.eurecom.fr/oai/openairinterface5g/issues/32).
Kernel Requirements for Cent OS 7 EXPERIMENTAL
-
TBD: Instructions for compiling or installing rpm package for 3.10.RT kernel and associated packages for Real-time Cent OS deployments
-
Start from the DVD ISO with a minimal install, add a non-root user. As you want to run real-time later, I suppose you want to avoid to configure swap space.
-
Give your non-root user sudo access (as root):
usermod -G wheel <user> -
Optionally, make sudo access passwordless (because some of the builds+tests take so long):
sudo visudo- comment out the line: %wheel ALL=(ALL) ALL
- uncomment the line: %wheel ALL=(ALL) NOPASSWD: ALL
-
As long as we're building some drivers from source (which, by recommended practice, land in /usr/local/*), we need two extra steps (this will go away, once drivers are available as RPMs and the build-script is adapted):
-
Allow sudo to run executables in /usr/local/bin:
sudo visudo- append ":/usr/local/bin" to line: Defaults secure_path=/sbin:/bin:/usr/sbin:/usr/bin
-
Configure ldconfig to index /usr/local/lib and /usr/local/lib64:
echo -e "/usr/local/lib\n/usr/local/lib64" | sudo tee /etc/ld.so.conf.d/enable_usr_local_lib.conf > /dev/null
- For the real-time kernel bits, you'll want to enable the real-time repo:
#CentOS-rt.repo
[rt]
name=CentOS-7 - rt
baseurl=http://mirror.centos.org/centos/\$releasever/rt/\$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
EOF
- Finally,
sudo yum install -y git kernel-rt rt-tests tuned-profiles-realtime
reboot
Kernel Requirements for Core Network <- Use Ubuntu 16.04 for a first time user
We currently support UBUNTU 16.04 LTS with kernel 4.7, but kernel 4.8 should work as well. Please also see https://gitlab.eurecom.fr/oai/openair-cn/wikis/home for more up-to-date information.
Note: As a first time user, please do not run OAI eNB and OAI EPC on same machine due to different kernel/package conflicting requirements.
Example kernel for openair-cn for latest develop branch(tag v0.4.0) is 4.7.x. You will need GTP kernel module from Osmocom which is loaded as module inside kernel
Example kernel tested on our side for openair-cn older installation tags is linux-image-3.19.0-59-generic for older versions of openair-cn (NOT RECOMMENDED)
Notes for installing 4.8.x kernel from debian package (NOT TESTED)
- The instructions are taken from http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.8/
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.8/linux-headers-4.8.0-040800-generic_4.8.0-040800.201610022031_amd64.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.8/linux-image-4.8.0-040800-generic_4.8.0-040800.201610022031_amd64.deb
sudo dpkg -i linux-headers-4.8.0-040800-generic_4.8.0-040800.201610022031_amd64.deb
sudo dpkg -i linux-image-4.8.0-040800-generic_4.8.0-040800.201610022031_amd64.deb
- After reboot, you can do the following to check gtp kernel module and version name
uname -a
sudo modprobe gtp
dmesg |tail # You should see something that says about GTP kernel module
Notes for install 4.7.x kernel from pre-compiled debian package (TESTED)
git clone https://gitlab.eurecom.fr/oai/linux-4.7.x.git
cd linux-4.7.x
sudo dpkg -i linux-headers-4.7.7-oaiepc_4.7.7-oaiepc-10.00.Custom_amd64.deb linux-image-4.7.7-oaiepc_4.7.7-oaiepc-10.00.Custom_amd64.deb
Notes for installing 4.7.x kernel from source with GTP module (TESTED)
sudo apt-get install xz-utils build-essential wget libncurses5-dev libssl-dev
sudo apt-get build-dep linux-image-$(uname -r) ncurses-bin
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.7.1.tar.xz
unxz linux-4.7.1.tar.xz
tar -xovf linux-4.7.1.tar
cd linux-4.7.1
# See Documentation/Changes for list of required minimum software to compile the kernel
make menuconfig #search for GTP option and enable it as a kernel module and save the kernel config file
# look for CONFIG_GTP in .config and make sure it is enabled as a kernel module CONFIG_GTP=m
make -j`nproc`
sudo make modules_install
sudo make install
Kernel Requirements for using CentOS 7 <- EXPERIMENTAL DO NOT TRY AS FIRST TIME USER
-
If you wish to use the tag v0.3.2 of EPC (branch: feature-53-support-enterprise-linux-7-v0.3.2(https://gitlab.eurecom.fr/oai/openair-cn/tree/feature-53-support-enterprise-linux-7-v0.3.2) for EPC tag v0.3.2 has changes for Cent OS7)
-
If you wish to use the tav v0.4.0 of EPC (branch: feature-53-support-enterprise-linux-7-v0.4.0(https://gitlab.eurecom.fr/oai/openair-cn/tree/feature-53-support-enterprise-linux-7-v0.4.0) for EPC tag v0.3.2 for Cent OS7)
We have tested only CentOS 7 and the compiles and runs, but not tested extensively with Phone, traffic, etc
Kernel requirements for branch (feature-53-support-enterprise-linux-7-v0.3.2)
- Please use default 3.10 kernel that is installed in Cent OS7
- Please use this tutorial for EPC, https://gitlab.eurecom.fr/oai/openairinterface5g/wikis/HowToConnectCOTSUEwithOAIeNB
Kernel requirements for branch (feature-53-support-enterprise-linux-7-v0.4.0)
- Please use kernel >= 4.7.x that can be installed manually or compiled from source. You need this kernel for Osmocom GTP module. We do not support anymore older versions of EPC. The code for older version is only for reference. Any issues for openair-cn must be reported from head of develop branch.
- Please use this tutorial for EPC, https://gitlab.eurecom.fr/oai/openairinterface5g/wikis/HowToConnectCOTSUEwithOAIeNBNew
sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
sudo rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
sudo yum --enablerepo=elrepo-kernel install kernel-ml kernel-ml-devel