Linux stack - Docker support for rt-mbms client side
Introduction
The repository contains the implementation of rt-mbms processes (5G broadcast receiver) in docker containers. rt-mbms-modem, rt-mbms-mw, rt-wui and nginx are run in individual containers which interact each other using the native docker network.
Pre-requisites
Hardware requirements
It is hard to define system requirements because these depend e.g. on bandwidth (e.g., 5, 8, 10 MHz), modulation coding scheme and other parameters. Generally, a CPU with 4 cores and 8 threads, 16 GB RAM and - in case a SDR and not just sample files are used - an USB 3.0 port is necessary. Furthermore, HDMI, Wifi, LAN and sufficient SSD space (for sample files,…) is recommended.
Supported SDR
To use the rt-mbms processes in a live setup a SDR (software defined radio) is required. MBMS Modem supports SoapyAPI, thus any supported SDR should work with the 5G-MAG Reference Tools (please keep in mind that not every SDR hardware is sufficient for receiving an 5G Broadcast signal ( e.g. bandwidth, sample rate…)).
We recommend using a LimeSDR or USRP n210 as in the current reference.
OS
We recommend to use Ubuntu 20.04 LTS (64 bit)
Reference setups
Hardware Specs
- Intel NUC Intel Provo Canyon BKNUC8V7PNH
- RAM Crucial RAM CT16G4SFRA266 16GB DDR4 2666 MHz CL19
- SSD SanDisk Extreme PRO M.2 NVMe 3D SSD 500 GB interne SSD
- Power cord LINDY 30406 - Power cord for notebooks (Schuko) 3m
The full specification of the Intel NUC can be found here.
Tested configurations
The 5G-MAG Reference Tools system was tested live, with sample files, with bandwidths 3, 5, 6, 7, 8 and 10 MHz, SCS 1.25 and 7.5 kHz with multiple services (RTP, HLS).
Installation of rt-mbms-processes with Docker:
- Install the docker engine.
- Build the Docker Images
- Running Containers
- Execute the Containers
Step 1: Installing Docker
Dockerhub hosts the docker engine repos which can be easily installed locally to start working with docker.
Alternatively, easy to use shell script can be found here!
Build Images
The files for the docker implementation are contained in rt-mbms-modem, rt-mbms-mw, rt-wui and nginx.
The Dockerfile helps to create a docker image, which can be used to run the containers.
The command docker build
uses by default the Dockerfile to create the image. For custom docker files go with
docker build -f /path/to/Dockerfile -t target_image_name /location/of/Dockerfile
There is a build.sh script on each folder for easy access.
Note: Please edit the appropriate path to the sample files in the last line of startup script for modem process before building the container.
Running the containers
The modem, middleware, wui and nginx containers can be run using the run.sh script in their respective folders.
The run.sh script contains the docker logs
command which helps the user to have an idea on what is happening inside the containers.
Note: Please build docker images and run the containers in the order of
- rt-mbms-modem
- rt-mbms-mw
- rt-wui
- nginx respectively
The resulting IP addresses of the containers are
Modem - 172.17.0.2
mbms-mw - 172.17.0.3
wui - 172.17.0.4
nginx - 172.17.0.5
sudo docker inspect container_name | grep IPAddress
returns the IP of the container.
If you have different IPs please configure the corresponding IPs in 5gmag-rt.conf
, wui and nginx config files.
Executing the Containers
The docker exec commands helps you to get into the container. docker exec -it container_name /bin/bash
The list of the containers (running or exited) can be viewed using : docker ps -a
. The staus column shows the staus of each container.
A running container can be stopped using: docker stop container_name
An exited or obsolete container can be removed using : docker rm container_name