diff options
| author | colisee <64310405+colisee@users.noreply.github.com> | 2022-03-14 09:22:45 +0100 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-03-14 09:22:45 +0100 | 
| commit | 69dbc747a5dab2fc56c5f25e505bf8d4d39f002a (patch) | |
| tree | e7e85b7e0d02c1b9e0ffc26f2b6453e3e47e257f /install | |
| parent | 82b0aced9133507f588486bcef3af322672e8819 (diff) | |
| parent | 63fee7f70c8cf1fd05e3b9d2d4bed4d3dfd148bb (diff) | |
| download | dab-scripts-master.tar.gz dab-scripts-master.tar.bz2 dab-scripts-master.zip | |
v3.0.0
Diffstat (limited to 'install')
| -rw-r--r-- | install/README.md | 61 | ||||
| -rw-r--r-- | install/mmbtools-get | 266 | ||||
| -rw-r--r-- | install/mmbtools-get.conf | 11 | 
3 files changed, 338 insertions, 0 deletions
| diff --git a/install/README.md b/install/README.md new file mode 100644 index 0000000..83e74a0 --- /dev/null +++ b/install/README.md @@ -0,0 +1,61 @@ +# Table of contents +- [Introduction](#introduction) +- [Installation](#installation) +- [Removal](#removal) + +# Introduction +The goal of the mmbtools-get shell script is to install: +- the [odr-mmbtools](https://www.opendigitalradio.org/mmbtools) components developed by the [Open Digital Radio](https://www.opendigitalradio.org/) non-profit association on a clean debian environment +- Working configuration files that you can later customize as you see fit + +# Installation +## Preliminary notes +We **highly recommend** that you install odr-mmbTools on a **new debian** environment, starting from the Bullseye release. Since some software components, like the audio encoders or the modulator, are CPU-intensive, we recommend you setup a lite debian environment (ie. without a GUI framework). + +If you want to quickly setup a lite clean debian environment, we suggest you use [Vagrant](https://www.vagrantup.com) associated with a virtualization hypervisor, like [Virtualbox](https://www.virtualbox.org). A sample Vagrantfile is available in the Vagrant folder of this repository. + +## Steps +1. Sign-in with your user profile +1. Update your system: +   ``` +   sudo apt-get update +   sudo apt-get upgrade -y +   ``` +1. Find your time zone: +   ``` +   timedatectl list-timezones +   ``` +1. Set your time zone: +   ``` +   sudo timedatectl set-timezone your_timezone +   ``` +1. Install the git command: +   ``` +   sudo apt-get install -y git +   ``` +1. Clone this repository: +   ``` +   cd $HOME + +   # Clone the stable version of dab-scripts +   git clone https://github.com/opendigitalradio/dab-scripts.git + +   # Or clone the next version of dab-scripts +   git clone --branch next https://github.com/opendigitalradio/dab-scripts.git +   ``` +1. Install the ODR-mmbTools suite and the sample configuration folder +   ``` +   # Install the stable version of odr-mmbTools +   bash $HOME/dab-scripts/install/mmbtools-get --branch master install + +   # Or install the next version of odr-mmbTools +   bash $HOME/dab-scripts/install/mmbtools-get --branch next install +   ``` + +# Removal +If you wish to remove the odr-mmbTools suite and the sample configuration folder, then follow these steps: +1. Stop all odr-mmbTools related jobs in supervisor +2. Remove the ODR-mmbTools software suite and the configuration folder +   ``` +   bash $HOME/dab-scripts/install/mmbtools-get remove +   ``` diff --git a/install/mmbtools-get b/install/mmbtools-get new file mode 100644 index 0000000..2dab049 --- /dev/null +++ b/install/mmbtools-get @@ -0,0 +1,266 @@ +#!/bin/bash + +#    mmbtools-get - Build, install, uninstall, remove the software stack +#    Copyright (C) 20222 Robin ALEXANDER +# +#    This program 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. +# +#    This program 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 this program.  If not, see <https://www.gnu.org/licenses/>. +# + +## CONSTANTS +source $(realpath $(dirname $0))/mmbtools-get.conf + +print_usage () { +  cat <<- EOF +  Usage: +    mmbtools-get [option] action + +  Option: +    -h, --help           Print this help +    -b, --branch <name>  Specify the odr-mmbTools branch to use  + +  Action: +    install              Install the programs and the configuration sample +    remove               Remove the programs and the configuration sample + +EOF +} + +install_base () { +  # Install the essential tools and create the tools root directory +  sudo apt-get update +  sudo apt-get install -y build-essential automake libtool supervisor + +  if [ ! -d ${DIR_MMB} ]; then +    mkdir ${DIR_MMB} +  fi + +  if [ ! $(grep inet_http_server /etc/supervisor/supervisord.conf) ]; then +    cat << EOF | sudo tee -a /etc/supervisor/supervisord.conf > /dev/null + +[inet_http_server] +port = 8001 +username = odr ; Auth username +password = odr ; Auth password +EOF +  fi +} + +install_audioenc () { +  # Install mmb-tools: audio encoder +  sudo apt-get install -y libzmq3-dev libzmq5 libvlc-dev vlc-data vlc-plugin-base libcurl4-openssl-dev pkg-config +  if [ ! -d ${DIR_AUDIO} ]; then +    pushd ${DIR_MMB} +    git clone https://github.com/Opendigitalradio/ODR-AudioEnc.git --branch ${1} +    popd +  fi +  pushd ${DIR_AUDIO} +  ./bootstrap +  ./configure --enable-vlc +  make +  sudo make install +  make clean +  popd +} + +install_padenc () { +  # Install mmb-tools: PAD encoder +  sudo apt-get install -y libmagickwand-dev +  if [ ! -d ${DIR_PAD} ]; then +    pushd ${DIR_MMB} +    git clone https://github.com/Opendigitalradio/ODR-PadEnc.git --branch ${1} +    popd +  fi +  pushd ${DIR_PAD} +  ./bootstrap +  ./configure +  make +  sudo make install +  make clean +  popd +} + +install_dabmux () { +  # Install mmb-tools: dab multiplexer +  sudo apt-get install -y libboost-system-dev libcurl4-openssl-dev python3-zmq +  if [ ! -d ${DIR_MUX} ]; then +    pushd ${DIR_MMB} +    git clone https://github.com/Opendigitalradio/ODR-DabMux.git --branch ${1} +    popd +  fi +  pushd ${DIR_MUX} +  ./bootstrap.sh +  ## Temporary, until ODR-DabMux configure is modified +  arch=$(uname -m) +  if [ "${arch}" = "armv7l" ]; then +    ./configure --with-boost-libdir=/usr/lib/arm-linux-gnueabihf +  else +    ./configure +  fi +  make +  sudo make install +  make clean +  popd +} + +install_dabmod () { +  # Install mmb-tools: modulator +  sudo apt-get install -y libfftw3-dev libzmq3-dev libuhd-dev libsoapysdr-dev libbladerf-dev liblimesuite-dev +  if [ ! -d ${DIR_MOD} ]; then +    pushd ${DIR_MMB} +    git clone https://github.com/Opendigitalradio/ODR-DabMod.git --branch ${1} +    popd +  fi +  pushd ${DIR_MOD} +  ./bootstrap.sh +  ./configure CFLAGS="-O3 -DNDEBUG" CXXFLAGS="-O3 -DNDEBUG" --enable-fast-math --disable-zeromq --enable-limesdr --enable-bladerf +  make +  sudo make install +  make clean +  popd +} + +install_fdkaac () { +  # Install mmb-tools: fdk-aac +  if [ ! -d ${DIR_FDKAAC} ]; then +    pushd ${DIR_MMB} +    git clone https://github.com/Opendigitalradio/fdk-aac.git +    popd +  fi +  pushd ${DIR_FDKAAC} +  ./bootstrap +  ./configure +  make +  sudo make install +  make clean +  popd +} + +install_srccmp () { +  # Install mmb-tools: source companion +  if [ ! -d ${DIR_SRCCMP} ]; then +    pushd ${DIR_MMB} +    git clone https://github.com/Opendigitalradio/ODR-SourceCompanion.git --branch ${1} +    popd +  fi +  pushd ${DIR_SRCCMP} +  ./bootstrap +  ./configure +  make +  sudo make install +  make clean +  popd +} + +install_encmgr () { +  # Install mmb-tools: encoder manager +  sudo apt-get install -y python3-cherrypy3 python3-jinja2 python3-serial python3-yaml supervisor python3-pysnmp4 +  if [ ! -d ${DIR_ENCMGR} ]; then +    pushd ${DIR_MMB} +    git clone https://github.com/Opendigitalradio/ODR-EncoderManager.git --branch ${1} +    popd +  fi +  ## Add the current user to the dialout and audio groups +  sudo usermod --append --group dialout $(id --user --name) +  sudo usermod --append --group audio $(id --user --name) +} + +install_config () { +# Copy the configuration files +  if [ -d ${DIR_CONFIG} ]; then +    rm -r ${DIR_CONFIG} +  fi +  cp -r $(realpath $(dirname $0))/../${CONFIG_NAME} ${DIR_CONFIG} +  sudo ln -s ${DIR_CONFIG}/supervisor/*.conf /etc/supervisor/conf.d/ + +  ## Adapt the supervisor configuration files +  sed -e "s;user=pi;user=$(id --user --name);g" -i ${DIR_CONFIG}/supervisor/*.conf +  sed -e "s;group=pi;group=$(id --group --name);g" -i ${DIR_CONFIG}/supervisor/*.conf +  sed -e "s;/home/pi;${HOME};g" -i ${HOME}/config/supervisor/*.conf + +  ## Adapt the ODR-EncoderManager configuration file +  sed -e "s;/home/pi;${HOME};g" -i ${DIR_CONFIG}/encodermanager.json +  sed -e "s;\"user\": \"pi\";\"user\": \"$(id --user --name)\";g" -i ${DIR_CONFIG}/encodermanager.json +  sed -e "s;\"group\": \"pi\";\"group\": \"$(id --group --name)\";g" -i ${DIR_CONFIG}/encodermanager.json + +  ## Adapt the odr-misc.conf +  sed -e "s;--host=raspberrypi.local;--host=$(hostname -I | awk '{print $1}');" -i ${DIR_CONFIG}/supervisor/ODR-misc.conf + +  ## Restart supervisor +  sudo supervisorctl reread +  sudo supervisorctl reload + +  echo "Sample configuration files installed" +} + +install () { +  # Clone the sources, build and install programs, clean-up +  install_base ${1} +  install_fdkaac ${1} +  install_audioenc ${1} +  install_padenc ${1} +  install_dabmux ${1} +  install_dabmod ${1} +  install_srccmp ${1} +  install_encmgr ${1} +  install_config +  sudo ldconfig + +  sudo apt-get purge -y +  sudo rm -rf /var/lib/apt/lists/* +   +  echo "ODR-mmbTools suite and configuration files installed" +} + +remove () { +  # Uninstall programs +  for makefile in $(ls ${DIR_MMB}/**/Makefile); do +    pushd $(dirname ${makefile}) +    sudo make uninstall +    popd +  done + +  # Delete sources +  rm -rf ${DIR_MMB} + +  # Delete configuration files +  rm -rf ${DIR_CONFIG} + +  # Update supervisor +  sudo rm /etc/supervisor/conf.d/ODR-* +  sudo supervisorctl reread +  sudo supervisorctl reload + +  echo "ODR-mmbTools suite and configuration files removed" +} + +# MAIN PROGRAM +branch="master" +action="" + +while [ "$#" -gt 0 ] ; do +  case "${1}" in +    (-h|--help) print_usage; exit 0 ;; +    (-b|--branch) branch="${2}" ; shift ;; +    install) action="install" ;; +    remove) action="remove" ;; +    *) print_usage; exit 1 ;; +  esac +  shift +done + +if [ "${action}" == "install" ]; then +  install ${branch} +else  +  remove +fi
\ No newline at end of file diff --git a/install/mmbtools-get.conf b/install/mmbtools-get.conf new file mode 100644 index 0000000..e20380d --- /dev/null +++ b/install/mmbtools-get.conf @@ -0,0 +1,11 @@ +# DEFINE DIRECTORIES +CONFIG_NAME=config +DIR_CONFIG=${HOME}/${CONFIG_NAME} +DIR_MMB=${HOME}/ODR-mmbTools +DIR_AUDIO=${DIR_MMB}/ODR-AudioEnc +DIR_PAD=${DIR_MMB}/ODR-PadEnc +DIR_MUX=${DIR_MMB}/ODR-DabMux +DIR_MOD=${DIR_MMB}/ODR-DabMod +DIR_FDKAAC=${DIR_MMB}/fdk-aac +DIR_SRCCMP=${DIR_MMB}/ODR-SourceCompanion +DIR_ENCMGR=${DIR_MMB}/ODR-EncoderManager
\ No newline at end of file | 
