#!/bin/bash # D-Star Site Install Script # For Raspberry Pi 3 running Raspberry Pi OS Lite # Usage: sudo bash install.sh set -e REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" MMDVM_SOURCE_DIR="/home/pi/MMDVM-Host" MMDVM_REPO="https://github.com/g4klx/MMDVMHost.git" ZEROTIER_NETWORK="c5029fdad4ccf9c5" echo "================================================" echo " D-Star Site Installer" echo "================================================" echo "" # Select site echo "Available sites:" echo " 1) ORNG - Orange Portable" echo " 2) ORNG2 - Orange TXRX" echo "" read -p "Select site [1-2]: " SITE_CHOICE case $SITE_CHOICE in 1) SITE="ORNG" ;; 2) SITE="ORNG2" ;; *) echo "Invalid selection"; exit 1 ;; esac echo "" echo "Installing site: $SITE" echo "" # Load site config source "$REPO_DIR/sites/$SITE/site.conf" # Install dependencies echo "Installing dependencies..." apt-get update -qq apt-get install -y git build-essential nlohmann-json3-dev libssl-dev python3 # Install ZeroTier echo "Installing ZeroTier..." curl -s https://install.zerotier.com | bash zerotier-cli join $ZEROTIER_NETWORK echo "ZeroTier installed and joined network $ZEROTIER_NETWORK" echo "NOTE: Approve this device in ZeroTier Central before continuing" echo "" read -p "Press ENTER once device is approved in ZeroTier Central..." # Enable serial port echo "Configuring serial port..." raspi-config nonint do_serial_hw 0 raspi-config nonint do_serial_cons 1 # Add pi user to dialout usermod -a -G dialout pi # Clone MMDVMHost if not present if [ ! -d "$MMDVM_SOURCE_DIR" ]; then echo "Cloning MMDVMHost..." git clone "$MMDVM_REPO" "$MMDVM_SOURCE_DIR" fi # Copy patched source files echo "Applying patches..." cp "$REPO_DIR/src/DStarNetwork.cpp" "$MMDVM_SOURCE_DIR/" cp "$REPO_DIR/src/DStarNetwork.h" "$MMDVM_SOURCE_DIR/" cp "$REPO_DIR/src/Conf.h" "$MMDVM_SOURCE_DIR/" cd "$MMDVM_SOURCE_DIR" python3 "$REPO_DIR/src/patch_conf_cpp.py" python3 "$REPO_DIR/src/patch_mmdvm_host_cpp.py" # Compile echo "Compiling MMDVMHost..." make -j$(nproc) # Install binary echo "Installing binary..." cp MMDVM-Host /usr/local/bin/MMDVM-Host chmod 755 /usr/local/bin/MMDVM-Host # Generate config from template echo "Generating config for $SITE..." sed \ -e "s/%%CALLSIGN%%/$CALLSIGN/g" \ -e "s/%%MODULE%%/$MODULE/g" \ -e "s/%%SITE_NAME%%/$SITE_NAME/g" \ -e "s/%%GATEWAY_ADDRESS%%/$GATEWAY_ADDRESS/g" \ -e "s/%%GATEWAY_PORT%%/$GATEWAY_PORT/g" \ -e "s/%%LOCAL_PORT%%/$LOCAL_PORT/g" \ -e "s/%%MODEM_PORT%%/$MODEM_PORT/g" \ -e "s/%%MODEM_SPEED%%/$MODEM_SPEED/g" \ "$REPO_DIR/sites/mmdvmhost.template" > /etc/mmdvmhost echo "Config written to /etc/mmdvmhost" # Install service echo "Installing systemd service..." cp "$REPO_DIR/services/mmdvmhost.service" /etc/systemd/system/ systemctl daemon-reload systemctl enable mmdvmhost systemctl start mmdvmhost echo "" echo "================================================" echo " Installation complete for site: $SITE" echo "================================================" echo "" echo "ZeroTier status:" zerotier-cli status echo "" echo "Service status:" systemctl status mmdvmhost --no-pager echo "" echo "Logs:" echo " journalctl -u mmdvmhost -f"