Sonica: Software-defined Open NB-IoT Research Platform
Introduction
Notice: This is an archive repo that a basic feature set. To access the latest release with most recent update and full functionality, please visit here.
Sonica provides an open-source NB-IoT testbed that is able to communicate with commodity off-the-shelf (COTS) devices. It implements NB-IoT version of eNodeB and an EPC with Cellular Internet-of-Things (CIoT) extensions. Thus it provides a platform for quick prototyping and/or verification on various layers of the NB-IoT network.
System Setup
Sonica runs on Linux environment. To set up a NB-IoT network that can communicate with COTS hardware, SDR RF hardware is necessary. The currently tested hardware include USRP B210 and X300.
Before building, you need to install dependencies packages. For example, on Ubuntu, the command is:
$ sudo apt-get install build-essential cmake libfftw3-dev \
libmbedtls-dev libboost-program-options-dev libconfig++-dev \
libsctp-dev
Besides, UHD (for communication with USRP) and ZeroMQ (for RF emulation) is also required.
Sonica's build system is based on Meson. To build, execute the following commands:
[sonica]$ meson builddir
[sonica]$ cd builddir
[sonica/builddir]$ meson compile
The two binary programs are located within 'builddir' directory:
- eNodeB:
sonica_enb/sonica_enb
- EPC:
third_party/srsepc_ciot/src/srsepc_ciot
For more details, see our documentation.
Join the Community
If you have any technical issue, please go to Issues. For any other question, please contact sonica.iotproject@gmail.com.
License
Sonica is licensed under AGPL 3.0. For the third party software used,
the licensing information is listed in the third_party
directory.