KC9UZR

WinLink and Vara Comms Setup

Dec 9th, 2025
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 4.95 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # --- USER CONFIGURATION ---
  4. MYCALL="KM4ACK"
  5. WINLINK_PASS="password"
  6. # --------------------------
  7.  
  8. # Get actual user if running as sudo
  9. CURRENT_USER=${SUDO_USER:-$USER}
  10. USER_HOME=$(getent passwd $CURRENT_USER | cut -d: -f6)
  11.  
  12. if [[ $EUID -ne 0 ]]; then
  13.    echo "This script must be run as root (sudo)."
  14.    exit 1
  15. fi
  16.  
  17. function pause(){
  18.    read -p "Press [Enter] key to continue..."
  19. }
  20.  
  21. function install_prereqs() {
  22.     echo "--- Updating Sources and Installing Basics ---"
  23.     apt update
  24.     # Install standard tools + ax25 + yad for menus + git for downloading scripts
  25.     apt install -y wget curl git yad ax25-tools ax25-apps libasound2-plugins
  26.     echo "Prerequisites Installed."
  27.     pause
  28. }
  29.  
  30. function install_direwolf() {
  31.     echo "--- Installing Direwolf via Repository (No Compiling) ---"
  32.     # Replaces git clone/make/cmake
  33.     apt install -y direwolf
  34.  
  35.     # Setup Config file in Home Directory
  36.     CONF_FILE="$USER_HOME/direwolf.conf"
  37.     if [ ! -f "$CONF_FILE" ]; then
  38.         echo "Creating default config file..."
  39.         # Create a basic config since we didn't compile the sample
  40.         cat <<EOT > $CONF_FILE
  41. ADEVICE plughw:1,0
  42. MYCALL $MYCALL
  43. CHANNEL 0
  44. MODEM 1200
  45. PTT RIG 2 localhost:4532
  46. AGWPORT 8000
  47. KISSPORT 8001
  48. EOT
  49.         chown $CURRENT_USER:$CURRENT_USER $CONF_FILE
  50.         echo "Basic direwolf.conf created at $CONF_FILE"
  51.         echo "PLEASE EDIT THIS FILE to match your specific Sound Card ID."
  52.     else
  53.         echo "direwolf.conf already exists. Skipping creation."
  54.     fi
  55.     pause
  56. }
  57.  
  58. function config_ax25() {
  59.     echo "--- Configuring AX.25 ---"
  60.     if ! grep -q "wl2k" /etc/ax25/axports; then
  61.         echo "wl2k $MYCALL 1200 255 7 Winlink" >> /etc/ax25/axports
  62.         echo "Added wl2k port."
  63.     else
  64.         echo "Port wl2k already exists."
  65.     fi
  66.     pause
  67. }
  68.  
  69. function install_ardop() {
  70.     echo "--- Installing ARDOP Binary ---"
  71.     # Download binary directly
  72.     wget -O /usr/local/bin/ardopc64 http://www.cantab.net/users/john.wiseman/Downloads/Beta/ardopc64
  73.     chmod +x /usr/local/bin/ardopc64
  74.     echo "ARDOP Installed."
  75.     pause
  76. }
  77.  
  78. function install_vara() {
  79.     echo "--- Installing VARA (Requires Wine & Manual Clicking) ---"
  80.     # Downloads helper script to handle Wine setup
  81.     wget -O /tmp/vara-on-debian https://raw.githubusercontent.com/km4ack/pi-scripts/master/vara-on-debian
  82.    
  83.     # Run as the user (not root) for Wine compatibility
  84.     sudo -u $CURRENT_USER bash /tmp/vara-on-debian
  85.     pause
  86. }
  87.  
  88. function install_pat() {
  89.     echo "--- Installing Pat Client (.deb) ---"
  90.     # Download .deb file (no compile)
  91.     wget -O /tmp/pat.deb https://github.com/la5nta/pat/releases/download/v0.13.1/pat_0.13.1_linux_amd64.deb
  92.     dpkg -i /tmp/pat.deb
  93.    
  94.     echo "--- Configuring Pat ---"
  95.     sudo -u $CURRENT_USER pat configure
  96.    
  97.     CONFIG_JSON="$USER_HOME/.config/pat/config.json"
  98.     # Basic sed replacement for callsign/pass
  99.     sed -i "s/\"mycall\": \"\"/\"mycall\": \"$MYCALL\"/" $CONFIG_JSON
  100.     sed -i "s/\"secure_login_password\": \"\"/\"secure_login_password\": \"$WINLINK_PASS\"/" $CONFIG_JSON
  101.    
  102.     # Enable Service
  103.     systemctl enable pat@$CURRENT_USER
  104.     systemctl start pat@$CURRENT_USER
  105.     pause
  106. }
  107.  
  108. function install_patmenu() {
  109.     echo "--- Installing Pat Menu 2 (Scripts) ---"
  110.     TARGET_DIR="$USER_HOME/patmenu2"
  111.    
  112.     if [ -d "$TARGET_DIR" ]; then
  113.         echo "Removing old install..."
  114.         rm -rf $TARGET_DIR
  115.     fi
  116.  
  117.     # Clone as user
  118.     sudo -u $CURRENT_USER git clone https://github.com/km4ack/patmenu2.git $TARGET_DIR
  119.     cd $TARGET_DIR
  120.     sudo -u $CURRENT_USER git checkout x86-dev
  121.  
  122.     # Fix Shortcut Path
  123.     sed -i "s|/home/pi|$USER_HOME|g" patmenu2.desktop
  124.    
  125.     # Install Shortcut
  126.     cp patmenu2.desktop /usr/local/share/applications/
  127.     echo "Pat Menu Installed."
  128.     pause
  129. }
  130.  
  131. # --- MAIN MENU LOOP ---
  132. while true
  133. do
  134.     clear
  135.     echo "================================="
  136.     echo "   Ham Radio Station Setup"
  137.     echo "   (No-Compile Version)"
  138.     echo "================================="
  139.     echo "1. Install Prerequisites"
  140.     echo "2. Install Direwolf (from Repo)"
  141.     echo "3. Configure AX.25 Ports"
  142.     echo "4. Install ARDOP (Binary)"
  143.     echo "5. Install VARA HF/FM (Wine)"
  144.     echo "6. Install Pat Client (.deb)"
  145.     echo "7. Install Pat Menu 2"
  146.     echo "8. Run ALL Steps (1-7)"
  147.     echo "q. Quit"
  148.     echo "================================="
  149.     read -p "Enter selection: " choice
  150.  
  151.     case $choice in
  152.         1) install_prereqs ;;
  153.         2) install_direwolf ;;
  154.         3) config_ax25 ;;
  155.         4) install_ardop ;;
  156.         5) install_vara ;;
  157.         6) install_pat ;;
  158.         7) install_patmenu ;;
  159.         8)
  160.            install_prereqs
  161.            install_direwolf
  162.            config_ax25
  163.            install_ardop
  164.            install_vara
  165.            install_pat
  166.            install_patmenu
  167.            ;;
  168.         q) exit 0 ;;
  169.         *) echo "Invalid option" ; pause ;;
  170.     esac
  171. done
Advertisement
Add Comment
Please, Sign In to add comment