trunk alignment with 0.3 branch
git-svn-id: http://svn.eurecom.fr/openair4G/trunk@6875 818b1a75-f10b-46b9-bf7c-635c3b92a50f
This commit is contained in:
Executable
+468
@@ -0,0 +1,468 @@
|
||||
################################################################################
|
||||
# OpenAirInterface
|
||||
# Copyright(c) 1999 - 2014 Eurecom
|
||||
#
|
||||
# OpenAirInterface is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
#
|
||||
# OpenAirInterface is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with OpenAirInterface.The full GNU General Public License is
|
||||
# included in this distribution in the file called "COPYING". If not,
|
||||
# see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Contact Information
|
||||
# OpenAirInterface Admin: openair_admin@eurecom.fr
|
||||
# OpenAirInterface Tech : openair_tech@eurecom.fr
|
||||
# OpenAirInterface Dev : openair4g-devel@eurecom.fr
|
||||
#
|
||||
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
|
||||
#
|
||||
################################################################################
|
||||
# file build_cmake.bash
|
||||
# brief
|
||||
# author Laurent Thomas
|
||||
#
|
||||
#######################################
|
||||
SUDO=sudo
|
||||
|
||||
###############################
|
||||
## echo and family
|
||||
###############################
|
||||
black='\E[30m'
|
||||
red='\E[31m'
|
||||
green='\E[32m'
|
||||
yellow='\E[33m'
|
||||
blue='\E[34m'
|
||||
magenta='\E[35m'
|
||||
cyan='\E[36m'
|
||||
white='\E[37m'
|
||||
reset_color='\E[00m'
|
||||
COLORIZE=1
|
||||
|
||||
cecho() {
|
||||
# Color-echo
|
||||
# arg1 = message
|
||||
# arg2 = color
|
||||
local default_msg="No Message."
|
||||
message=${1:-$default_msg}
|
||||
color=${2:-$green}
|
||||
[ "$COLORIZE" = "1" ] && message="$color$message$reset_color"
|
||||
echo -e "$message"
|
||||
return
|
||||
}
|
||||
|
||||
echo_error() { cecho "$*" $red ;}
|
||||
echo_fatal() { cecho "$*" $red; exit -1 ;}
|
||||
echo_warning() { cecho "$*" $yellow ;}
|
||||
echo_success() { cecho "$*" $green ;}
|
||||
echo_info() { cecho "$*" $blue ;}
|
||||
|
||||
print_help() {
|
||||
echo_info '
|
||||
This program installs OpenAirInterface Software
|
||||
You should have ubuntu 14.xx, updated, and the Linux kernel >= 3.14
|
||||
Options
|
||||
-h
|
||||
This help
|
||||
-c | --clean
|
||||
Erase all files made by previous compilation, installation"
|
||||
--clean-kernel
|
||||
Erase previously installed features in kernel: iptables, drivers, ...
|
||||
-I | --install-external-packages
|
||||
Installs required packages such as LibXML, asn1.1 compiler, freediameter, ...
|
||||
This option will require root password
|
||||
--install-optional-packages
|
||||
Install useful but not mandatory packages such as valgrind
|
||||
-g | --run-with-gdb
|
||||
Add debugging symbols to compilation directives
|
||||
--eNB
|
||||
Makes the eNB LTE softmodem
|
||||
--UE
|
||||
Makes the UE softmodem
|
||||
--EPC
|
||||
Makes the EPC
|
||||
-r | --3gpp-release
|
||||
default is Rel10,
|
||||
Rel8 limits the implementation to 3GPP Release 8 version
|
||||
-w | --hardware
|
||||
EXMIMO (Default), USRP, None
|
||||
Adds this RF board support (in external packages installation and in compilation)
|
||||
--oaisim
|
||||
Makes the oaisim simulator
|
||||
--phy_simulators
|
||||
Makes the unitary tests Layer 1 simulators
|
||||
--core_simulators
|
||||
Makes the core security features unitary simulators
|
||||
-s | --check
|
||||
runs a set of auto-tests based on simulators and several compilation tests
|
||||
-V | --vcd
|
||||
Adds a debgging facility to the binary files: GUI with major internal synchronization events
|
||||
-x | --xforms
|
||||
Adds a software oscilloscope feature to the produced binaries
|
||||
--install-system-files
|
||||
Install OpenArInterface required files in Linux system
|
||||
(will ask root password)
|
||||
Typical Options for a quick startup with a COTS UE and Eurecom RF board: build_oai.bash -I -g -eNB -EPC -x --install-system-files'
|
||||
}
|
||||
|
||||
###########################
|
||||
# Cleaners
|
||||
###########################
|
||||
|
||||
clean_kernel() {
|
||||
$SUDO modprobe ip_tables
|
||||
$SUDO modprobe x_tables
|
||||
$SUDO iptables -P INPUT ACCEPT
|
||||
$SUDO iptables -F INPUT
|
||||
$SUDO iptables -P OUTPUT ACCEPT
|
||||
$SUDO iptables -F OUTPUT
|
||||
$SUDO iptables -P FORWARD ACCEPT
|
||||
$SUDO iptables -F FORWARD
|
||||
$SUDO iptables -t nat -F
|
||||
$SUDO iptables -t mangle -F
|
||||
$SUDO iptables -t filter -F
|
||||
$SUDO iptables -t raw -F
|
||||
echo_info "Flushed iptables"
|
||||
$SUDO rmmod nasmesh > /dev/null 2>&1
|
||||
$SUDO rmmod oai_nw_drv > /dev/null 2>&1
|
||||
$SUDO rmmod openair_rf > /dev/null 2>&1
|
||||
$SUDO rmmod ue_ip > /dev/null 2>&1
|
||||
echo_info "removed drivers from kernel"
|
||||
}
|
||||
|
||||
clean_all_files() {
|
||||
dir=$OPENAIR_DIR/cmake
|
||||
rm -rf $dir/log $OPENAIR_TARGETS/bin $dir/autotests/bin $dir/autotests/log $dir/autotests/*/buid $dir/build_*/build
|
||||
rm -rf $dir/oaisim_build_oai/CMakeLists.txt $dir/epc_build_oai/CMakeLists.txt $dir/hss_build/BUILD
|
||||
}
|
||||
|
||||
###################################
|
||||
# Compilers
|
||||
###################################
|
||||
|
||||
compilations() {
|
||||
cd $OPENAIR_DIR/cmake_targets/$1/build
|
||||
{
|
||||
rm -f $3
|
||||
make -j4 $2
|
||||
} > $dlog/$2.$REL.txt 2>&1
|
||||
if [ -s $3 ] ; then
|
||||
cp $3 $dbin
|
||||
echo_success "$2 compiled"
|
||||
else
|
||||
echo_error "$2 compilation failed"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
##########################################
|
||||
# X.509 certificates
|
||||
##########################################
|
||||
|
||||
make_one_cert() {
|
||||
fqdn=$1
|
||||
name=$2
|
||||
$SUDO openssl genrsa -out $name.key.pem 1024
|
||||
$SUDO openssl req -new -batch -out $name.csr.pem -key $name.key.pem -subj /CN=$name.$fqdn/C=FR/ST=PACA/L=Aix/O=Eurecom/OU=CM
|
||||
$SUDO openssl ca -cert cacert.pem -keyfile cakey.pem -in $name.csr.pem -out $name.cert.pem -outdir . -batch
|
||||
}
|
||||
|
||||
make_certs(){
|
||||
|
||||
fqdn=$1
|
||||
certs_dir=/usr/local/etc/freeDiameter
|
||||
# certificates are stored in diameter config directory
|
||||
if [ ! -d $certs_dir ]; then
|
||||
echo "Creating non existing directory: $certs_dir"
|
||||
$SUDO mkdir -p $certs_dir || echo_error "can't create: $certs_dir"
|
||||
fi
|
||||
|
||||
cd $certs_dir
|
||||
echo "creating the CA certificate"
|
||||
echo_warning "erase all existing certificates as long as the CA is regenerated"
|
||||
$SUDO rm -f $certs_dir/*.pem
|
||||
$SUDO mkdir -p $certs_dir/demoCA/
|
||||
$SUDO sh -c "echo 01 > $certs_dir/demoCA/index.txt"
|
||||
|
||||
# CA self certificate
|
||||
$SUDO openssl req -new -batch -x509 -days 3650 -nodes -newkey rsa:1024 -out cacert.pem -keyout cakey.pem -subj /CN=$fqdn/C=FR/ST=PACA/L=Aix/O=Eurecom/OU=CM
|
||||
|
||||
# generate hss certificate and sign it
|
||||
make_one_cert eur hss
|
||||
make_one_cert eur mme
|
||||
|
||||
# legacy config is using a certificate named 'user'
|
||||
make_one_cert eur user
|
||||
|
||||
}
|
||||
|
||||
|
||||
############################################
|
||||
# External packages installers
|
||||
############################################
|
||||
|
||||
install_nettle_from_source() {
|
||||
cd /tmp
|
||||
echo "Downloading nettle archive"
|
||||
rm -rf /tmp/nettle-2.5.tar.gz* /tmp/nettle-2.5
|
||||
wget ftp://ftp.lysator.liu.se/pub/security/lsh/nettle-2.5.tar.gz
|
||||
tar -xzf nettle-2.5.tar.gz
|
||||
cd nettle-2.5/
|
||||
./configure --disable-openssl --enable-shared --prefix=/usr
|
||||
echo "Compiling nettle"
|
||||
make -j4
|
||||
make check
|
||||
$SUDO make install
|
||||
rm -rf /tmp/nettle-2.5.tar.gz /tmp/nettle-2.5
|
||||
}
|
||||
|
||||
install_gnutls_from_source(){
|
||||
cd /tmp
|
||||
echo "Downloading gnutls archive"
|
||||
rm -rf /tmp/gnutls-3.1.23.tar.xz* /tmp/gnutls-3.1.23
|
||||
wget ftp://ftp.gnutls.org/gcrypt/gnutls/v3.1/gnutls-3.1.23.tar.xz
|
||||
tar -xzf gnutls-3.1.23.tar.xz
|
||||
cd gnutls-3.1.23/
|
||||
./configure --prefix=/usr
|
||||
echo "Compiling gnutls"
|
||||
make -j4
|
||||
$SUDO make install
|
||||
rm -rf /tmp/gnutls-3.1.23.tar.xz /tmp/gnutls-3.1.23
|
||||
}
|
||||
|
||||
install_freediameter_from_source() {
|
||||
cd /tmp
|
||||
echo "Downloading freeDiameter archive"
|
||||
rm -rf /tmp/1.1.5.tar.gz* /tmp/freeDiameter-1.1.5
|
||||
wget http://www.freediameter.net/hg/freeDiameter/archive/1.1.5.tar.gz
|
||||
tar xzf 1.1.5.tar.gz
|
||||
cd freeDiameter-1.1.5
|
||||
patch -p1 < $OPENAIRCN_DIR/S6A/freediameter/freediameter-1.1.5.patch
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr ../
|
||||
echo "Compiling freeDiameter"
|
||||
make -j4
|
||||
#make test
|
||||
$SUDO make install
|
||||
rm -rf /tmp/1.1.5.tar.gz /tmp/freeDiameter-1.1.5
|
||||
}
|
||||
|
||||
check_install_usrp_uhd_driver(){
|
||||
v=$(lsb_release -cs)
|
||||
$SUDO apt-add-repository "deb http://files.ettus.com/binaries/uhd/repo/uhd/ubuntu/$v $v main"
|
||||
$SUDO apt-get update
|
||||
$SUDO apt-get -y install python python-tk libboost-all-dev libusb-1.0-0-dev
|
||||
$SUDO apt-get -y install -t `lsb_release -cs` uhd --force-yes
|
||||
}
|
||||
|
||||
check_install_additional_tools (){
|
||||
$SUDO apt-get update
|
||||
$SUDO apt-get install -y \
|
||||
check \
|
||||
dialog \
|
||||
dkms \
|
||||
gawk \
|
||||
libboost-all-dev \
|
||||
libpthread-stubs0-dev \
|
||||
openvpn \
|
||||
phpmyadmin \
|
||||
pkg-config \
|
||||
python-dev \
|
||||
python-pexpect \
|
||||
sshfs \
|
||||
swig \
|
||||
tshark \
|
||||
uml-utilities \
|
||||
unzip \
|
||||
valgrind \
|
||||
vlan
|
||||
}
|
||||
|
||||
check_install_oai_software() {
|
||||
|
||||
$SUDO apt-get update
|
||||
$SUDO apt-get install -y \
|
||||
autoconf \
|
||||
automake \
|
||||
bison \
|
||||
build-essential \
|
||||
cmake \
|
||||
cmake-curses-gui \
|
||||
doxygen \
|
||||
ethtool \
|
||||
flex \
|
||||
gccxml \
|
||||
gdb \
|
||||
graphviz \
|
||||
gtkwave \
|
||||
guile-2.0-dev \
|
||||
iperf \
|
||||
iproute \
|
||||
iptables \
|
||||
iptables-dev \
|
||||
libatlas-base-dev \
|
||||
libatlas-dev \
|
||||
libblas3gf \
|
||||
libblas-dev \
|
||||
libconfig8-dev \
|
||||
libforms-bin \
|
||||
libforms-dev \
|
||||
libgcrypt11-dev \
|
||||
libgmp-dev \
|
||||
libgtk-3-dev \
|
||||
libidn2-0-dev \
|
||||
libidn11-dev \
|
||||
libmysqlclient-dev \
|
||||
libpgm-5.1 \
|
||||
libpgm-dev \
|
||||
libsctp1 \
|
||||
libsctp-dev \
|
||||
libssl-dev \
|
||||
libtasn1-3-dev \
|
||||
libtool \
|
||||
libusb-1.0-0-dev \
|
||||
libxml2 \
|
||||
libxml2-dev \
|
||||
linux-headers-`uname -r` \
|
||||
mysql-client \
|
||||
mysql-server \
|
||||
openssh-client \
|
||||
openssh-server \
|
||||
openssl \
|
||||
python \
|
||||
subversion
|
||||
if [ `lsb_release -rs` = '12.04' ] ; then
|
||||
install_nettle_from_source
|
||||
install_gnutls_from_source
|
||||
else
|
||||
$SUDO apt-get install -y libgnutls-dev nettle-dev nettle-bin
|
||||
fi
|
||||
install_freediameter_from_source
|
||||
install_asn1c_from_source
|
||||
}
|
||||
|
||||
install_asn1c_from_source(){
|
||||
mkdir -p /tmp/asn1c-r1516
|
||||
cd /tmp/asn1c-r1516
|
||||
rm -rf /tmp/asn1c-r1516/*
|
||||
svn co https://github.com/vlm/asn1c/trunk /tmp/asn1c-r1516 -r 1516 > /tmp/log_compile_asn1c
|
||||
patch -p0 < $OPENAIRCN_DIR/S1AP/MESSAGES/ASN1/asn1cpatch.p0 >> /tmp/log_compile_asn1c
|
||||
./configure
|
||||
make > /tmp/log_compile_asn1c 2>&1
|
||||
$SUDO make install
|
||||
}
|
||||
|
||||
#################################################
|
||||
# 2. compile
|
||||
################################################
|
||||
compile_hss() {
|
||||
cd $OPENAIR_DIR/cmake_targets/hss_build
|
||||
rm -f $OPENAIR_TARGETS/bin/openair-hss openair-hss
|
||||
if [ "$CLEAN" = "1" ]; then
|
||||
echo "Cleaning HSS"
|
||||
rm -rf BUILD
|
||||
fi
|
||||
mkdir -p BUILD
|
||||
cd ./BUILD
|
||||
cmake $SOFTMODEM_DIRECTIVES ..
|
||||
make -j $NUM_CPU openair-hss > $dlog/hss.txt 2>&1
|
||||
if [ -s openair-hss ] ; then
|
||||
cp openair-hss $OPENAIR_TARGETS/bin
|
||||
echo_success "hss compiled"
|
||||
else
|
||||
echo_error "hss compilation failed"
|
||||
fi
|
||||
return $?
|
||||
}
|
||||
|
||||
|
||||
install_nas_tools() {
|
||||
cd $1
|
||||
if [ ! -f .ue.nvram ]; then
|
||||
echo_success "generate .ue_emm.nvram .ue.nvram"
|
||||
./nvram --gen
|
||||
fi
|
||||
|
||||
if [ ! -f .usim.nvram ]; then
|
||||
echo_success "generate .usim.nvram"
|
||||
./usim --gen
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
##################################
|
||||
# create HSS DB
|
||||
################################
|
||||
|
||||
# arg 1 is mysql user (root)
|
||||
# arg 2 is mysql password (linux)
|
||||
# arg 3 is hss username (hssadmin)
|
||||
# arg 4 is hss password (admin)
|
||||
# arg 5 is database name (oai_db)
|
||||
create_hss_database(){
|
||||
EXPECTED_ARGS=5
|
||||
if [ $# -ne $EXPECTED_ARGS ]
|
||||
then
|
||||
echo_error "Usage: $0 dbuser dbpass hssuser hsspass databasename"
|
||||
return 1
|
||||
fi
|
||||
|
||||
Q1="GRANT ALL PRIVILEGES ON *.* TO '$3'@'localhost' IDENTIFIED BY '$4' WITH GRANT OPTION;"
|
||||
Q2="FLUSH PRIVILEGES;"
|
||||
mysql -u $1 --password=$2 -e "${Q1}${Q2}"
|
||||
if [ $? -ne 0 ]; then
|
||||
echo_error "$3 permissions creation failed"
|
||||
echo_error "verify root password for mysql is linux: mysql -u root --password=linux"
|
||||
echo_error "if not, reset it to "linux" with sudo dpkg-reconfigure mysql-server-5.5"
|
||||
return 1
|
||||
else
|
||||
echo_success "$3 permissions creation succeeded"
|
||||
fi
|
||||
|
||||
Q3="CREATE DATABASE IF NOT EXISTS $5;"
|
||||
mysql -u $3 --password=$4 -e "${Q3}"
|
||||
if [ $? -ne 0 ]; then
|
||||
echo_error "$5 creation failed"
|
||||
return 1
|
||||
else
|
||||
echo_success "$5 creation succeeded"
|
||||
fi
|
||||
|
||||
mysql -u $3 --password=$4 $5 < $OPENAIRCN_DIR/OPENAIRHSS/db/oai_db.sql
|
||||
if [ $? -ne 0 ]; then
|
||||
echo_error "$5 tables creation failed"
|
||||
return 1
|
||||
else
|
||||
echo_success "$5 tables creation succeeded"
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
################################
|
||||
# set_openair_env
|
||||
###############################
|
||||
set_openair_env(){
|
||||
fullpath=`readlink -f $BASH_SOURCE`
|
||||
[ -f "/.$fullpath" ] || fullpath=`readlink -f $PWD/$fullpath`
|
||||
openair_path=${fullpath%/cmake_targets/*}
|
||||
openair_path=${openair_path%/targets/*}
|
||||
openair_path=${openair_path%/openair-cn/*}
|
||||
openair_path=${openair_path%/openair[123]/*}
|
||||
export OPENAIR_DIR=$openair_path
|
||||
export OPENAIR_HOME=$openair_path
|
||||
export OPENAIR1_DIR=$openair_path/openair1
|
||||
export OPENAIR2_DIR=$openair_path/openair2
|
||||
export OPENAIR3_DIR=$openair_path/openair3
|
||||
export OPENAIRCN_DIR=$openair_path/openair-cn
|
||||
export OPENAIR_TARGETS=$openair_path/targets
|
||||
}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
# this file contains the calibration values to compute the RSSI
|
||||
# we can use three different gain stages (high, low, med) as well as a gain factor for fine tuning
|
||||
# the three lines in this file gives the total rx gain in dB for the three gain stages if the rx gain is set to 30dB
|
||||
# this is for Express MIMO2 without any additional RF frontend
|
||||
# high gain
|
||||
103 107 106 104
|
||||
# med gain
|
||||
98 101 100 98
|
||||
# low gain (byp)
|
||||
94 97 96 94
|
||||
@@ -24,7 +24,7 @@ load_module() {
|
||||
sudo insmod $1
|
||||
}
|
||||
|
||||
load_module $OPENAIR_DIR/cmake_targets/bin/openair_rf.ko
|
||||
load_module $OPENAIR_DIR/targets/bin/openair_rf.ko
|
||||
sleep 1
|
||||
|
||||
if [ ! -e /dev/openair0 ]; then
|
||||
@@ -36,7 +36,7 @@ DEVICE=`echo $PCI | awk -F\" '{print $(NF-1)}' | awk '{print $2}'`
|
||||
DEVICE_SWID=${DEVICE:2:2}
|
||||
if [ $DEVICE_SWID == '0a' ]; then
|
||||
echo "Using firware version 10"
|
||||
$OPENAIR_DIR/cmake_targets/bin/updatefw -s 0x43fffff0 -b -f $OPENAIR_TARGETS/ARCH/EXMIMO/USERSPACE/OAI_FW_INIT/sdr_expressmimo2_v10
|
||||
$OPENAIR_DIR/targets/bin/updatefw -s 0x43fffff0 -b -f $OPENAIR_TARGETS/ARCH/EXMIMO/USERSPACE/OAI_FW_INIT/sdr_expressmimo2_v10
|
||||
else
|
||||
echo 'No corresponding firmware found'
|
||||
return
|
||||
|
||||
Executable
+191
@@ -0,0 +1,191 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
# OpenAirInterface
|
||||
# Copyright(c) 1999 - 2014 Eurecom
|
||||
#
|
||||
# OpenAirInterface is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) anylater version.
|
||||
#
|
||||
#
|
||||
# OpenAirInterface is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with OpenAirInterface.The full GNU General Public License is
|
||||
# included in this distribution in the file called "COPYING". If not,
|
||||
# see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Contact Information
|
||||
# OpenAirInterface Admin: openair_admin@eurecom.fr
|
||||
# OpenAirInterface Tech : openair_tech@eurecom.fr
|
||||
# OpenAirInterface Dev : openair4g-devel@eurecom.fr
|
||||
#
|
||||
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
|
||||
#
|
||||
################################################################################
|
||||
# file run_enb_s1_exmimo
|
||||
# brief run script for eNB EXMIMO.
|
||||
# author Lionel GAUTHIER
|
||||
# company Eurecom
|
||||
# email: lionel.gauthier@eurecom.fr
|
||||
|
||||
|
||||
################################
|
||||
# include helper functions
|
||||
################################
|
||||
THIS_SCRIPT_PATH=$(dirname $(readlink -f $0))
|
||||
source $THIS_SCRIPT_PATH/build_helper
|
||||
|
||||
|
||||
function help()
|
||||
{
|
||||
echo_error " "
|
||||
echo_error "Usage: run_enb_s1_exmimo [OPTION]..."
|
||||
echo_error "Run the eNB executable, hardware target is EXMIMO."
|
||||
echo_error " "
|
||||
echo_error "Options:"
|
||||
echo_error "Mandatory arguments to long options are mandatory for short options too."
|
||||
echo_error " -c, -C, --config-file eNB config file (see $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF)"
|
||||
echo_error " -g, --gdb Run with GDB."
|
||||
echo_error " -h, --help Print this help."
|
||||
echo_error " -K, --itti-dump-file ITTI dump file containing all ITTI events occuring during EPC runtime."
|
||||
echo_error " -H, --hss HSS hostname."
|
||||
echo_error " -M, --target-dl-mcs Downlink target MCS."
|
||||
echo_error " -V, --vcd Dump timings of processing in a GTKWave compliant file format."
|
||||
echo_error " -S, --enable-missed-slot Continue execution in case of missed slot."
|
||||
echo_error " -T, --target-ul-mcs Uplink target MCS."
|
||||
echo_error " -x, --xforms Run XFORMS scope windows."
|
||||
}
|
||||
|
||||
|
||||
|
||||
function main()
|
||||
{
|
||||
local declare -i run_gdb=0
|
||||
local declare exe_arguments=""
|
||||
|
||||
until [ -z "$1" ]
|
||||
do
|
||||
case "$1" in
|
||||
-c | -C | --config-file)
|
||||
CONFIG_FILE=$2
|
||||
# may be relative path
|
||||
if [ -f $(dirname $(readlink -f $0))/$CONFIG_FILE ]; then
|
||||
CONFIG_FILE=$(dirname $(readlink -f $0))/$CONFIG_FILE
|
||||
echo "setting config file to: $CONFIG_FILE"
|
||||
CONFIG_FILE_ACCESS_OK=1
|
||||
else
|
||||
# may be absolute path
|
||||
if [ -f $CONFIG_FILE ]; then
|
||||
echo "setting config file to: $CONFIG_FILE"
|
||||
else
|
||||
echo_fatal "config file $CONFIG_FILE not found"
|
||||
fi
|
||||
fi
|
||||
exe_arguments="$exe_arguments -O $CONFIG_FILE"
|
||||
shift 2;
|
||||
;;
|
||||
-g | --gdb)
|
||||
run_gdb=1
|
||||
echo "setting GDB flag to: $GDB"
|
||||
shift;
|
||||
;;
|
||||
-h | --help)
|
||||
help
|
||||
shift;
|
||||
exit 0
|
||||
;;
|
||||
-K | --itti-dump-file)
|
||||
ITTI_DUMP_FILE=$2
|
||||
# can omit file name if last arg on the line
|
||||
if [ "x$ITTI_DUMP_FILE" = "x" ]; then
|
||||
ITTI_DUMP_FILE="/tmp/enb_s1_exmimo_itti.log"
|
||||
fi
|
||||
echo "setting ITTI dump file to: $ITTI_DUMP_FILE"
|
||||
exe_arguments="$exe_arguments -K $ITTI_DUMP_FILE"
|
||||
shift 2;
|
||||
;;
|
||||
-M | --target-dl-mcs)
|
||||
echo "setting target dl MCS to $2"
|
||||
exe_arguments="$exe_arguments -m $2"
|
||||
shift 2;
|
||||
;;
|
||||
-V | --vcd)
|
||||
"setting gtk-wave output"
|
||||
exe_arguments="$exe_arguments -V /tmp/oai_gtk_wave.vcd"
|
||||
shift ;
|
||||
;;
|
||||
-S | --enable-missed-slot)
|
||||
echo "setting continue even if missed slot"
|
||||
exe_arguments="$exe_arguments -S"
|
||||
shift ;
|
||||
;;
|
||||
-T | --target-ul-mcs)
|
||||
echo "setting target ul MCS to $2"
|
||||
exe_arguments="$exe_arguments -t $2"
|
||||
shift 2;
|
||||
;;
|
||||
-x | --xforms)
|
||||
exe_arguments="$exe_arguments -d"
|
||||
echo "setting xforms to: $XFORMS"
|
||||
shift;
|
||||
;;
|
||||
*)
|
||||
echo "Unknown option $1"
|
||||
help
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
check_for_root_rights
|
||||
|
||||
set_openair_env
|
||||
cecho "OPENAIR_HOME = $OPENAIR_HOME" $green
|
||||
cecho "OPENAIR1_DIR = $OPENAIR1_DIR" $green
|
||||
cecho "OPENAIR2_DIR = $OPENAIR2_DIR" $green
|
||||
cecho "OPENAIR3_DIR = $OPENAIR3_DIR" $green
|
||||
cecho "OPENAIRCN_DIR = $OPENAIRCN_DIR" $green
|
||||
cecho "OPENAIR_TARGETS = $OPENAIR_TARGETS" $green
|
||||
|
||||
|
||||
if [ ! -e $OPENAIR_TARGETS/bin/lte-softmodem ]; then
|
||||
echo_fatal "Cannot find $OPENAIR_TARGETS/bin/lte-softmodem executable"
|
||||
fi
|
||||
if [ ! -e $OPENAIR_TARGETS/bin/updatefw ]; then
|
||||
echo_fatal "Cannot find $OPENAIR_TARGETS/bin/updatefw executable"
|
||||
fi
|
||||
if [ ! -e $OPENAIR_TARGETS/bin/openair_rf.ko ]; then
|
||||
echo_fatal "Cannot find $OPENAIR_TARGETS/bin/openair_rf.ko kernel module"
|
||||
fi
|
||||
|
||||
for i in `seq 0 64`; do
|
||||
have_rtfX=`ls /dev/ |grep -c rtf$i`;
|
||||
if [ "$have_rtfX" -eq 0 ] ; then
|
||||
$SUDO mknod -m 666 /dev/rtf$i c 150 $i;
|
||||
fi;
|
||||
done
|
||||
|
||||
$THIS_SCRIPT_PATH/init_exmimo2.sh
|
||||
|
||||
if [ $run_gdb -eq 0 ]; then
|
||||
exec $OPENAIR_TARGETS/bin/lte-softmodem `echo $exe_arguments` 2>&1 > /tmp/gdb_lte_softmodem.stdout.txt
|
||||
else
|
||||
touch ~/.gdb_lte_softmodem
|
||||
chmod 777 ~/.gdb_lte_softmodem
|
||||
echo "file $OPENAIR_TARGETS/bin/lte-softmodem" > ~/.gdb_lte_softmodem
|
||||
echo "set args $exe_arguments" >> ~/.gdb_lte_softmodem
|
||||
echo "run" >> ~/.gdb_lte_softmodem
|
||||
cat ~/.gdb_lte_softmodem
|
||||
gdb -n -x ~/.gdb_lte_softmodem 2>&1 > /tmp/gdb_lte_softmodem.stdout.txt
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
|
||||
main "$@"
|
||||
|
||||
Executable
+150
@@ -0,0 +1,150 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
# OpenAirInterface
|
||||
# Copyright(c) 1999 - 2014 Eurecom
|
||||
#
|
||||
# OpenAirInterface is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) anylater version.
|
||||
#
|
||||
#
|
||||
# OpenAirInterface is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with OpenAirInterface.The full GNU General Public License is
|
||||
# included in this distribution in the file called "COPYING". If not,
|
||||
# see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Contact Information
|
||||
# OpenAirInterface Admin: openair_admin@eurecom.fr
|
||||
# OpenAirInterface Tech : openair_tech@eurecom.fr
|
||||
# OpenAirInterface Dev : openair4g-devel@eurecom.fr
|
||||
#
|
||||
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
|
||||
#
|
||||
################################################################################
|
||||
# file run_epc
|
||||
# brief run script for EPC (MME+SGW-LITE).
|
||||
# author Lionel GAUTHIER
|
||||
# company Eurecom
|
||||
# email: lionel.gauthier@eurecom.fr
|
||||
|
||||
|
||||
################################
|
||||
# include helper functions
|
||||
################################
|
||||
THIS_SCRIPT_PATH=$(dirname $(readlink -f $0))
|
||||
source $THIS_SCRIPT_PATH/build_helper
|
||||
|
||||
set_openair_env
|
||||
|
||||
|
||||
function help()
|
||||
{
|
||||
echo_error " "
|
||||
echo_error "Usage: run_epc [OPTION]..."
|
||||
echo_error "Run the EPC executable (MME+SGW-LITE)."
|
||||
echo_error " "
|
||||
echo_error "Options:"
|
||||
echo_error "Mandatory arguments to long options are mandatory for short options too."
|
||||
echo_error " -g, --gdb Run with GDB."
|
||||
echo_error " -h, --help Print this help."
|
||||
echo_error " -K, --itti-dump-file ITTI dump file containing all ITTI events occuring during EPC runtime."
|
||||
echo_error " -l, --local-enb EPC run on the same eNB host."
|
||||
echo_error " -v, --verbosity-level Verbosity level (0,1,2)."
|
||||
echo_error " 0 -> ASN1 XER printf off"
|
||||
echo_error " 1 -> ASN1 XER printf on and ASN1 debug off"
|
||||
echo_error " 2 -> ASN1 XER printf on and ASN1 debug on"
|
||||
}
|
||||
|
||||
|
||||
|
||||
function main()
|
||||
{
|
||||
local -i run_gdb=0
|
||||
local exe_arguments=" "
|
||||
local -i epc_local=0
|
||||
local -r epc_default_config_file="$OPENAIR_TARGETS/bin/epc.conf"
|
||||
local epc_config_file=$epc_default_config_file
|
||||
|
||||
until [ -z "$1" ]
|
||||
do
|
||||
case "$1" in
|
||||
-g | --gdb)
|
||||
run_gdb=1
|
||||
echo "setting GDB flag to: $GDB"
|
||||
shift;
|
||||
;;
|
||||
-h | --help)
|
||||
help
|
||||
exit 0
|
||||
;;
|
||||
-K | --itti-dump-file)
|
||||
local itti_dump_file=$2
|
||||
# can omit file name if last arg on the line
|
||||
if [ "x$itti_dump_file" = "x" ]; then
|
||||
itti_dump_file="/tmp/epc_itti.log"
|
||||
else
|
||||
shift 1;
|
||||
fi
|
||||
echo "setting ITTI dump file to: $itti_dump_file"
|
||||
exe_arguments="$exe_arguments -K $itti_dump_file"
|
||||
shift 1;
|
||||
;;
|
||||
-l | ----local-enb)
|
||||
epc_local=1
|
||||
shift;
|
||||
;;
|
||||
-v | --verbosity-level)
|
||||
local verbosity_level=$2
|
||||
echo "setting verbosity level to: $verbosity_level"
|
||||
exe_arguments="-v $verbosity_level $exe_arguments"
|
||||
shift 2;
|
||||
;;
|
||||
*)
|
||||
echo "Unknown option $1"
|
||||
help
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
check_for_root_rights
|
||||
set_openair_env
|
||||
cecho "OPENAIR_HOME = $OPENAIR_HOME" $green
|
||||
cecho "OPENAIR1_DIR = $OPENAIR1_DIR" $green
|
||||
cecho "OPENAIR2_DIR = $OPENAIR2_DIR" $green
|
||||
cecho "OPENAIR3_DIR = $OPENAIR3_DIR" $green
|
||||
cecho "OPENAIRCN_DIR = $OPENAIRCN_DIR" $green
|
||||
cecho "OPENAIR_TARGETS = $OPENAIR_TARGETS" $green
|
||||
|
||||
|
||||
if [ ! -e $OPENAIR_TARGETS/bin/mme_gw ]; then
|
||||
echo_fatal "Cannot find $OPENAIR_TARGETS/bin/mme_gw executable, have a look at the output of build_epc executable"
|
||||
fi
|
||||
|
||||
if [ $epc_local -eq 1 ]; then
|
||||
epc_config_file="$OPENAIR_TARGETS/bin/epc.local.enb.conf"
|
||||
fi
|
||||
|
||||
exe_arguments="-O $epc_config_file $exe_arguments"
|
||||
|
||||
if [ $run_gdb -eq 0 ]; then
|
||||
exec $OPENAIR_TARGETS/bin/mme_gw `echo $exe_arguments` 2>&1
|
||||
else
|
||||
touch ~/.gdb_mme_gw
|
||||
chmod 777 ~/.gdb_mme_gw
|
||||
echo "file $OPENAIR_TARGETS/bin/mme_gw" > ~/.gdb_mme_gw
|
||||
echo "set args $exe_arguments " >> ~/.gdb_mme_gw
|
||||
echo "run" >> ~/.gdb_mme_gw
|
||||
cat ~/.gdb_mme_gw
|
||||
gdb -n -x ~/.gdb_mme_gw
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
main "$@"
|
||||
Executable
+115
@@ -0,0 +1,115 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
# OpenAirInterface
|
||||
# Copyright(c) 1999 - 2014 Eurecom
|
||||
#
|
||||
# OpenAirInterface is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) anylater version.
|
||||
#
|
||||
#
|
||||
# OpenAirInterface is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with OpenAirInterface.The full GNU General Public License is
|
||||
# included in this distribution in the file called "COPYING". If not,
|
||||
# see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Contact Information
|
||||
# OpenAirInterface Admin: openair_admin@eurecom.fr
|
||||
# OpenAirInterface Tech : openair_tech@eurecom.fr
|
||||
# OpenAirInterface Dev : openair4g-devel@eurecom.fr
|
||||
#
|
||||
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
|
||||
#
|
||||
################################################################################
|
||||
# file run_hss
|
||||
# brief run script for HSS (!EXPERIMENTAL!).
|
||||
# author Lionel GAUTHIER
|
||||
# company Eurecom
|
||||
# email: lionel.gauthier@eurecom.fr
|
||||
|
||||
|
||||
################################
|
||||
# include helper functions
|
||||
################################
|
||||
THIS_SCRIPT_PATH=$(dirname $(readlink -f $0))
|
||||
source $THIS_SCRIPT_PATH/build_helper
|
||||
|
||||
|
||||
function help()
|
||||
{
|
||||
echo_error " "
|
||||
echo_error "Usage: run_hss [OPTION]..."
|
||||
echo_error "Run the HSS executable (experimental)."
|
||||
echo_error " "
|
||||
echo_error "Options:"
|
||||
echo_error "Mandatory arguments to long options are mandatory for short options too."
|
||||
echo_error " -g, --gdb Run with GDB."
|
||||
echo_error " -h, --help Print this help."
|
||||
}
|
||||
|
||||
|
||||
|
||||
function main()
|
||||
{
|
||||
local -i run_gdb=0
|
||||
local exe_arguments=" -c ./hss.conf"
|
||||
|
||||
until [ -z "$1" ]
|
||||
do
|
||||
case "$1" in
|
||||
-g | --gdb)
|
||||
run_gdb=1
|
||||
echo "setting GDB flag to: $GDB"
|
||||
shift;
|
||||
;;
|
||||
-h | --help)
|
||||
help
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "Unknown option $1"
|
||||
help
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
check_for_root_rights
|
||||
|
||||
set_openair_env
|
||||
cecho "OPENAIR_HOME = $OPENAIR_HOME" $green
|
||||
cecho "OPENAIR1_DIR = $OPENAIR1_DIR" $green
|
||||
cecho "OPENAIR2_DIR = $OPENAIR2_DIR" $green
|
||||
cecho "OPENAIR3_DIR = $OPENAIR3_DIR" $green
|
||||
cecho "OPENAIRCN_DIR = $OPENAIRCN_DIR" $green
|
||||
cecho "OPENAIR_TARGETS = $OPENAIR_TARGETS" $green
|
||||
|
||||
|
||||
if [ ! -e $OPENAIR_TARGETS/bin/openair-hss ]; then
|
||||
echo_fatal "Cannot find $OPENAIR_TARGETS/bin/openair-hss executable"
|
||||
fi
|
||||
|
||||
# for file config relative path
|
||||
cd $OPENAIR_TARGETS/bin
|
||||
|
||||
if [ $run_gdb -eq 0 ]; then
|
||||
exec $OPENAIR_TARGETS/bin/openair-hss `echo $exe_arguments` 2>&1
|
||||
else
|
||||
touch ~/.gdb_hss
|
||||
chmod 777 ~/.gdb_hss
|
||||
echo "file $OPENAIR_TARGETS/bin/openair-hss" > ~/.gdb_hss
|
||||
echo "set args $exe_arguments " >> ~/.gdb_hss
|
||||
echo "run" >> ~/.gdb_hss
|
||||
cat ~/.gdb_hss
|
||||
gdb -n -x ~/.gdb_hss 2>&1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
main "$@"
|
||||
Reference in New Issue
Block a user