create new tag
, view all tags

Kernel Requirements for RAN

A simple OAI system doesn't require any special kernels and generally we use exclusively Ubuntu distributions with OAI (mainly because this is what we install at EURECOM). We currently support 14.04 LTS with a recent low-latency kernel (e.g. 3.17-low-latency), but some parts of OAI can be made to work with newer distributions. With ExpressMIMO2, you should consider installing Ubuntu 14.04 low-latency with a kernel version above 3.14.10 which provides preemptive scheduling. Below are precise instructions for the primary installations that we use at EURECOM.

Ubuntu 14.04 LTS/Linux Kernel version 3.17 (Recommended)

Install a standard 64-bit 14.04 system.

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.

  • check this using this command: watch grep \"cpu MHz\" /proc/cpuinfo
  • have a look at this link for further information.
  • you may need to add intel_pstate=disable to the Linux boot options, i.e GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_pstate=disable" in /etc/default/grub, then perform update-grub
Note: when using the new kernel dead line scheduler, you need to have root access. Otherwise you get the following errors:

[SCHED] eNB tx thread: sched_setattr failed: Invalid argument

Dead line scheduler has been added in Linux kernel since version 3.14.10

If you update ubuntu 14.04 with latest Ubuntu 14.04 packages update:

apt-get update; apt-get dist-upgrade

you must have a suitable Kernel.

Nevertheless, you may want a specific kernel, such as high preemption frequency. For example, to install Ubuntu 14.10 kernel 3.17 on top of Ubuntu 14.04, 64-bit architecture and lowlatency (preemption at 1ms)

wget -r -e robots=off --accept-regex "(.*lowlatency.*amd64)|(all).deb" http://kernel.ubuntu.com/~kernel-ppa/mainline/v${version}-utopic/
dpkg -i kernel.ubuntu.com/*/*/*/*deb

After a reboot, uname -a should give the following output:

Linux [NAME] 3.17-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

Disable CPU Frequency scaling

Install cpufrequtils:

sudo apt-get install cpufrequtils

Then edit the following file (if it doesn't exist, create it):

sudo nano /etc/default/cpufrequtils

And add the following line to it:


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

You can check your settings with:


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.

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 (http://lists.eurecom.fr/sympa/arc/openair4g-devel/2015-10/msg00041.html, https://gitlab.eurecom.fr/oai/openairinterface5g/issues/32)

Ubuntu 12.04 LTS (loosly supported)

For hard real-time with RTAI (ExpressMIMO2 or Ettus B210) :

For hard real-time with PREEMPT-RT (ExpressMIMO2, Ettus B210 or Ethernet) -- NavidNikaein - 03 Jul 2015

Kernel Requirements for Core Network

We currently support UBUNTU 14.04 LTS and UBUNTU 15.04 64 bits with a UBUNTU generic 3.19 kernel (more recent kernels above 3.19 may be tested too). Low latency kernels may be tested also.

If your intent is to run the OAI core network software on the OAI eNB, then you need to run a low-latency 3.19 kernel on the eNB.

Topic revision: r41 - 04 Nov 2015 - RohitGupta
Copyright 2004-2010 Institut Eurecom & all contributing authors.