Project

General

Profile

Actions

Ettus USRP B2xx family » History » Revision 17

« Previous | Revision 17/26 (diff) | Next »
csaba, 02/19/2016 10:47 PM
Remove " --enable-sysmocom-bts", no longer needed. Thanks Pierre!


This page will describe how to install and configure OpenBSC, Osmo-BTS, Osmo-TRX, Osmo-PCU and OpenGGSN to create an opensource 2G/GSM network with your Ettus USRP B200/B210 SDR hardware.

This page in under development, please stay tuned.

'''Pre-Req:'''

The following guide is created on Ubuntu 14.14.03 LTS 64bit with kernel 3.19.0-26-lowlatency

1. Installing the UHD driver stack for Ettus USRP SDRs:

http://files.ettus.com/manual/page_install.html#install_linux_ourbins

'''2. Installing dependencies:'''

{{{
apt-get install libdbi0-dev libdbd-sqlite3 build-essential libtool autoconf automake git-core pkg-config libssl-dev libpcsclite-dev libusb-1.0 libncurses5-dev libgsm1-dev libpcap-dev libc-ares-dev libtalloc-dev libsctp-dev
}}}

Create a folder, where all the projects files will be stored:

{{{
mkdir osmocom
cd osmocom
}}}

'''Get Opencore AMR:'''

{{{
wget http://downloads.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-0.1.3.tar.gz
tar xvzf opencore-amr-0.1.3.tar.gz
cd opencore-amr-0.1.3
./configure
make
make install
ldconfig
cd ..
}}}

'''Get ORTP:''

Note: 0.24.2 is not working with OpenBSC!

{{{
wget http://download.savannah.gnu.org/releases/linphone/ortp/sources/ortp-0.22.0.tar.gz
tar xvzf ortp-0.22.0.tar.gz
cd ortp-0.22.0
./configure
make
make install
ldconfig
cd ..
}}}

'''Get libosmocore (master):''' {{{
git clone git://git.osmocom.org/libosmocore.git
cd libosmocore
autoreconf -fi
./configure
make
make install
ldconfig
cd ..
}}}
'''Get libosmo-abis (master)''' {{{
git clone git://git.osmocom.org/libosmo-abis.git
cd libosmo-abis
autoreconf -fi
./configure
make
make install
ldconfig
cd ..
}}}
'''Get libosmo-netif (master):''' {{{
git clone git://git.osmocom.org/libosmo-netif.git
cd libosmo-netif
autoreconf -fi
./configure
make
make install
ldconfig
cd ..
}}}
'''Get OpenGGSN:''' {{{
git clone git://git.osmocom.org/openggsn.git
cd openggsn
autoreconf -i
./configure --prefix=/usr/local
make
make install
ldconfig
cd ..
}}}
'''Get libosmo-sccp (master):''' {{{
git clone git://git.osmocom.org/libosmo-sccp.git
cd libosmo-sccp
autoreconf -fi
./configure
make
make install
ldconfig
cd ..
}}}
'''Get OpenBSC (master):''' {{{
git clone git://git.osmocom.org/openbsc.git
cd openbsc/openbsc
autoreconf -fi
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
./configure
make
make install
ldconfig
cd ../..
}}}
'''Get Osmo-BTS (201509-fairwaves-rebase):''' {{{
git clone git://git.osmocom.org/osmo-bts.git
cd osmo-bts
git checkout 201509-fairwaves-rebase
autoreconf -fi
./configure --enable-trx
make
make install
ldconfig
cd ..
}}}
'''Get Osmo-PCU (master):''' {{{
git clone git://git.osmocom.org/osmo-pcu.git
cd osmo-pcu
autoreconf -fi
./configure
make
make install
ldconfig
cd ..
}}}
'''Get Osmo-TRX (master):''' {{{
git clone git://git.osmocom.org/osmo-trx.git
cd osmo-trx
./autogen.sh
./configure
make
make install
ldconfig
cd ..
}}}

'''Get mISDN kernel and user space:'''

Note: if you see "configure: error: kernel build tree does not exist" then you need to install kernel headers. {{{
git clone git://git.misdn.eu/mISDN.git
cd mISDN
./configure
cp mISDN.cfg.default standalone/mISDN.cfg
make modules
make modules_install
ldconfig
cd ..

git clone git://git.misdn.eu/mISDNuser.git
cd mISDNuser
make
./configure
make
sudo make install
ldconfig
cd ..

depmod –a
modprobe mISDN_core
modprobe mISDN_dsp
modprobe mISDN_l1loop nchannel=30 interfaces=2
}}}

To auto-load the mISDN kernel modules do:

{{{
cd /etc/modules-load.d/
cat > misdn-modules.conf
mISDN_core
mISDN_dsp
mISDN_l1loop nchannel=30 interfaces=2
}}}
Hit Ctrl+C {{{
chmod 644 misdn-modules.conf
cd /
}}}

'''Install Asterisk (ver 1.8 !):'''

On Ubuntu 14.04 there is no version 1.8 Asterisk anymore, to get it, do the following: {{{
wget http://launchpadlibrarian.net/153943558/asterisk-modules_1.8.13.1~dfsg-3ubuntu3_amd64.deb
wget http://launchpadlibrarian.net/153943773/asterisk-config_1.8.13.1~dfsg-3ubuntu3_all.deb
wget http://launchpadlibrarian.net/153943772/asterisk-dev_1.8.13.1~dfsg-3ubuntu3_all.deb
wget http://launchpadlibrarian.net/153943557/asterisk_1.8.13.1~dfsg-3ubuntu3_amd64.deb
wget http://launchpadlibrarian.net/107480639/asterisk-core-sounds-en-gsm_1.4.22-1_all.deb
wget http://launchpadlibrarian.net/58272892/asterisk-moh-opsound-gsm_2.03-1_all.deb
dpkg -i *.deb
apt-get -f install
}}}

Otherwise the Asterisk channel driver (chan_lcr) will not compile.

'''Get LCR (master):''' {{{
git clone git://git.misdn.eu/lcr.git/
cd lcr
autoreconf -fi
./configure --with-gsm-bs --with-misdn --with-asterisk
make
make install
cp chan_lcr.so /usr/lib/asterisk/modules/
ldconfig
cd ..
}}}

Configure the LCR interfaces: {{{
cat > /usr/etc/lcr/interface.conf
[GSM]
gsm-bs
tones no
earlyb no
bridge ast

[ast]
remote asterisk
context from-lcr
earlyb no
tones yes
bridge GSM
}}}
Hit Ctrl+C

Add the following two lines to the bottom of options.conf: {{{
nano /usr/etc/lcr/options.conf

socketuser asterisk
socketgroup asterisk
}}}

'''Configuration of Asterisk:'''

You can find an attached configuration file called "extensions.conf". Please put that file and overwrite the original configuration at /etc/asterisk/exetensions.conf

Then restart asterisk:

{{{
sudo service asterisk restart
}}}

'''Configuring the GGSN:'''

Use the example configuration file called "ggsn.conf" and put it to /etc/ggsn.conf

The traffic from the UEs (mobiles, USB modems etc) are terminated on a TUN interface with the IP address: 10.0.0.1
The UEs are going to get an address from this range: 10.0.0.2 - 10.0.0.254
The GGSN will listen on 127.0.0.5. In this example all the services (BSC, GGSN, SGSN, PCU etc.) are running on the same computer.

'''Configuring OpenBSC, Osmo-SGSN, Osmo-PCU'''

Please use the attached examle config files at the bottom fo this page.

'''Starting the services'''

Please note that in this example we are going to need quite a few terminals to be open, because except for LCR, GGSN and Asterisk, we are going to run the services in foreground.

Start the GGSN:

{{{
ggsn
}}}

Start LCR:

{{{
lcr fork
}}}

Open a new terminal and start the SGSN (with the sample config file provided):

{{{
sudo osmo-sgsn -c sgsn.conf
}}}

Open a new terminal and start the BSC (with the sample config file provided):

{{{
sudo osmo-nitb -C -c openbsc.conf -T -P -m
}}}

Open a new terminal and start Osmo-TRX:

{{{
sudo osmo-trx
}}}

Open a new terminal and start Osmo-BTS (with the sample config file provided):

{{{
sudo osmobts-trx -c osmo-bts.cfg
}}}

Open a new terminal and start Osmo-PCU (with the sample config file provided):

{{{
sudo osmo-pcu -c osmo-pcu.cfg
}}}

'''Setting up NAT for GPRS:'''

In order for the UEs to be able to "see" the internet, we need to enable network address translation (NAT).

First determine which network interface is connected to the internet with: {{{
ifconfig
}}}

After you know the interface name (for example: eth0 or eth1 or em1 etc.), run the following commands.

Note that in the second command you need to use your interface name instead of "em1".

{{{
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
sudo iptables -A POSTROUTING -s 10.0.0.0/24 -t nat -o em1 -j MASQUERADE
}}}

Updated by csaba almost 6 years ago · 17 revisions

Add picture from clipboard (Maximum size: 48.8 MB)