Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # --- USER CONFIGURATION ---
- MYCALL="KM4ACK"
- WINLINK_PASS="password"
- # --------------------------
- # Get actual user if running as sudo
- CURRENT_USER=${SUDO_USER:-$USER}
- USER_HOME=$(getent passwd $CURRENT_USER | cut -d: -f6)
- if [[ $EUID -ne 0 ]]; then
- echo "This script must be run as root (sudo)."
- exit 1
- fi
- function pause(){
- read -p "Press [Enter] key to continue..."
- }
- function install_prereqs() {
- echo "--- Updating Sources and Installing Basics ---"
- apt update
- # Install standard tools + ax25 + yad for menus + git for downloading scripts
- apt install -y wget curl git yad ax25-tools ax25-apps libasound2-plugins
- echo "Prerequisites Installed."
- pause
- }
- function install_direwolf() {
- echo "--- Installing Direwolf via Repository (No Compiling) ---"
- # Replaces git clone/make/cmake
- apt install -y direwolf
- # Setup Config file in Home Directory
- CONF_FILE="$USER_HOME/direwolf.conf"
- if [ ! -f "$CONF_FILE" ]; then
- echo "Creating default config file..."
- # Create a basic config since we didn't compile the sample
- cat <<EOT > $CONF_FILE
- ADEVICE plughw:1,0
- MYCALL $MYCALL
- CHANNEL 0
- MODEM 1200
- PTT RIG 2 localhost:4532
- AGWPORT 8000
- KISSPORT 8001
- EOT
- chown $CURRENT_USER:$CURRENT_USER $CONF_FILE
- echo "Basic direwolf.conf created at $CONF_FILE"
- echo "PLEASE EDIT THIS FILE to match your specific Sound Card ID."
- else
- echo "direwolf.conf already exists. Skipping creation."
- fi
- pause
- }
- function config_ax25() {
- echo "--- Configuring AX.25 ---"
- if ! grep -q "wl2k" /etc/ax25/axports; then
- echo "wl2k $MYCALL 1200 255 7 Winlink" >> /etc/ax25/axports
- echo "Added wl2k port."
- else
- echo "Port wl2k already exists."
- fi
- pause
- }
- function install_ardop() {
- echo "--- Installing ARDOP Binary ---"
- # Download binary directly
- wget -O /usr/local/bin/ardopc64 http://www.cantab.net/users/john.wiseman/Downloads/Beta/ardopc64
- chmod +x /usr/local/bin/ardopc64
- echo "ARDOP Installed."
- pause
- }
- function install_vara() {
- echo "--- Installing VARA (Requires Wine & Manual Clicking) ---"
- # Downloads helper script to handle Wine setup
- wget -O /tmp/vara-on-debian https://raw.githubusercontent.com/km4ack/pi-scripts/master/vara-on-debian
- # Run as the user (not root) for Wine compatibility
- sudo -u $CURRENT_USER bash /tmp/vara-on-debian
- pause
- }
- function install_pat() {
- echo "--- Installing Pat Client (.deb) ---"
- # Download .deb file (no compile)
- wget -O /tmp/pat.deb https://github.com/la5nta/pat/releases/download/v0.13.1/pat_0.13.1_linux_amd64.deb
- dpkg -i /tmp/pat.deb
- echo "--- Configuring Pat ---"
- sudo -u $CURRENT_USER pat configure
- CONFIG_JSON="$USER_HOME/.config/pat/config.json"
- # Basic sed replacement for callsign/pass
- sed -i "s/\"mycall\": \"\"/\"mycall\": \"$MYCALL\"/" $CONFIG_JSON
- sed -i "s/\"secure_login_password\": \"\"/\"secure_login_password\": \"$WINLINK_PASS\"/" $CONFIG_JSON
- # Enable Service
- systemctl enable pat@$CURRENT_USER
- systemctl start pat@$CURRENT_USER
- pause
- }
- function install_patmenu() {
- echo "--- Installing Pat Menu 2 (Scripts) ---"
- TARGET_DIR="$USER_HOME/patmenu2"
- if [ -d "$TARGET_DIR" ]; then
- echo "Removing old install..."
- rm -rf $TARGET_DIR
- fi
- # Clone as user
- sudo -u $CURRENT_USER git clone https://github.com/km4ack/patmenu2.git $TARGET_DIR
- cd $TARGET_DIR
- sudo -u $CURRENT_USER git checkout x86-dev
- # Fix Shortcut Path
- sed -i "s|/home/pi|$USER_HOME|g" patmenu2.desktop
- # Install Shortcut
- cp patmenu2.desktop /usr/local/share/applications/
- echo "Pat Menu Installed."
- pause
- }
- # --- MAIN MENU LOOP ---
- while true
- do
- clear
- echo "================================="
- echo " Ham Radio Station Setup"
- echo " (No-Compile Version)"
- echo "================================="
- echo "1. Install Prerequisites"
- echo "2. Install Direwolf (from Repo)"
- echo "3. Configure AX.25 Ports"
- echo "4. Install ARDOP (Binary)"
- echo "5. Install VARA HF/FM (Wine)"
- echo "6. Install Pat Client (.deb)"
- echo "7. Install Pat Menu 2"
- echo "8. Run ALL Steps (1-7)"
- echo "q. Quit"
- echo "================================="
- read -p "Enter selection: " choice
- case $choice in
- 1) install_prereqs ;;
- 2) install_direwolf ;;
- 3) config_ax25 ;;
- 4) install_ardop ;;
- 5) install_vara ;;
- 6) install_pat ;;
- 7) install_patmenu ;;
- 8)
- install_prereqs
- install_direwolf
- config_ax25
- install_ardop
- install_vara
- install_pat
- install_patmenu
- ;;
- q) exit 0 ;;
- *) echo "Invalid option" ; pause ;;
- esac
- done
Advertisement
Add Comment
Please, Sign In to add comment