Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Prerequisites

Hardware requirement

To use Sonica for over-the-air communication with NB-IoT devices, you need an RF front-end connected. Sonica has been tested with the following hardware:

  • USRP B200, B210
  • USRP X300, X310

Getting Sonica

To get the latest release of Sonica, please visit the download page. The archive repo contains a trial version with basic features.

Installing dependencies

The main dependencies of Sonica include:

  • meson (build system)
  • cmake
  • FFTW
  • MbedTLS
  • Boost (Program Options module)
  • libconfig (C++ API)
  • libsctp
  • RF libraries (e.g. UHD for USRP, ZeroMQ for simulation testing, etc.)

To install meson, view https://mesonbuild.com/Getting-meson.html

To install other main dependencies on ubuntu (RF libraries not included here):

$ sudo apt-get install build-essential cmake libfftw3-dev \
   libmbedtls-dev libboost-program-options-dev libconfig++-dev \
   libsctp-dev

Sonica does not require using certain specific Linux distribution. It is tested on Ubuntu 20.04 and Arch Linux.

Building

To build Sonica, execute the following commands:

[sonica]$ meson builddir
[sonica]$ cd builddir
[sonica/builddir]$ meson compile

The first line runs the meson configuration script and creates the subdirectory builddir for compilation. In most cases, this only need to be run once. Subsequent rebuilds only needs meson compile in builddir since meson can automatically detect the changes in source files or even build scripts themselves.

The two binary programs are located within ‘builddir’ directory:

  • eNodeB: sonica_enb/sonica_enb
  • EPC: third_party/srsepc_ciot/src/srsepc_ciot

Configuration

Copy all the files in the example-config directory to one of the two locations before running:

  • /etc/sonica/ (System-wide configuration)
  • ~/.config/sonica (User-specific configuration directory)

Running

Before running the eNodeB, plug in the RF device (e.g. USRP B210).

After that, first launch the EPC (need root privilege):

[sonica/builddir]$ sudo ./third_party/srsepc_ciot/src/srsepc_ciot

For IP forwarding of EPC network, use third_party/srsepc_ciot/srsepc_if_masq.sh to configure. In most cases, it only needs to be executed once per boot.

Finally, launch eNodeB with:

[sonica/builddir]$ sonica_enb/sonica_enb

If successful, EPC and eNodeB should both print information on the connection and the eNodeB will start its processing.

Tested devices

Sonica has been tested with the following devices