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.
For the master branch of openairinterface5g (Commit d0e2938b) we recommend Ubuntu 14.04 LTS with low-latency kernel 3.19. For the develop branch, you can also use Ubuntu 16.04 with low-latency kernel 3.8.
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
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
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
you must disable p-state and c-state in linux so you 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. 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 i7zsudo 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
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:
Save and exit.
Now you need to disable ondemand daemon, otherwise after you reboot the settings will be overwriten.
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.
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.
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):
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:
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:
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-devsudo 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.xzunxz linux-4.7.1.tar.xztar -xovf linux-4.7.1.tarcd linux-4.7.1# See Documentation/Changes for list of required minimum software to compile the kernelmake 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=mmake -j`nproc`sudo make modules_installsudo make install
Kernel Requirements for using CentOS 7 <- EXPERIMENTAL DO NOT TRY AS FIRST TIME USER
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.