From eb69f1876c19852b04b1db3c10bfacb5606307c1 Mon Sep 17 00:00:00 2001 From: David Young Date: Thu, 26 Mar 2026 13:17:15 -0600 Subject: [PATCH] installing direwolf fixes --- binaries.conf | 39 ++++++ compile.conf | 8 +- conf.d/direwolf.conf | 280 ++++++++++++++++++++++++++++++++++++++ desktop/icons/paracon.png | Bin 0 -> 2846 bytes desktop/varafm.desktop | 10 -- install-binaries.sh | 237 ++++++++++++++++++++++++++++++++ install.sh | 4 + 7 files changed, 564 insertions(+), 14 deletions(-) create mode 100644 binaries.conf create mode 100644 conf.d/direwolf.conf create mode 100644 desktop/icons/paracon.png delete mode 100644 desktop/varafm.desktop create mode 100755 install-binaries.sh diff --git a/binaries.conf b/binaries.conf new file mode 100644 index 0000000..5752f47 --- /dev/null +++ b/binaries.conf @@ -0,0 +1,39 @@ +# binaries.conf - Pre-built binaries to download and install +# +# Fields: +# version= - version string for update checking +# url= - direct download URL for the binary +# install= - destination path (e.g. $HOME/.local/bin/appname) +# exec= - command for the .desktop Exec= field (defaults to install path if omitted) +# gui=true - set if a .desktop file should be generated. No .desktop file is created if false +# comment= - description for the .desktop file +# icon= - icon theme name (e.g. wsjtx) or path to icon file (e.g. $HOME/.local/share/HamPack/icons/wsjtx.png) +# categories= - desktop categories (default: HamRadio;) +# +# Example: +# [wsjtx] +# version=2.7.0 +# url=https://example.com/wsjtx-2.7.0-x86_64.AppImage +# install=$HOME/.local/bin/wsjtx +# gui=true +# comment=Weak signal digital modes for amateur radio +# exec=$HOME/.local/bin/wsjtx +# icon=wsjtx +# categories=HamRadio; + +[ardop] +version=1.0.4.1.3 +url=https://github.com/pflarue/ardop/releases/download/1.0.4.1.3/ardopcf_amd64_Linux_64 +install=$HOME/.local/bin/ardopcf_amd64_Linux_64 +gui=false + +[paracon] +version=1.30 +url=https://github.com/mfncooper/paracon/releases/download/v1.3.0/paracon_1.3.0.pyz +install=$HOME/.local/bin/paracon_1.3.0.pyz +gui=true +comment=Weak signal digital modes for amateur radio +exec=python $HOME/.local/bin/paracon_1.3.0.pyz +icon=$HOME/.local/share/HamPack/desktop/icons/paracon.png +categories=HamRadio; + diff --git a/compile.conf b/compile.conf index 553b52b..c34ff94 100644 --- a/compile.conf +++ b/compile.conf @@ -2,22 +2,22 @@ version=1.8.1 git=https://github.com/wb2osz/direwolf.git install=$HOME/.local/bin/direwolf -steps=mkdir build, cd build, mkdir -p /tmp/hampack-build/direwolf-udev, cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/.local -DUDEV_RULES_DIR=/tmp/hampack-build/direwolf-udev, make -j4, make install, sudo cp /tmp/hampack-build/direwolf-udev/99-direwolf-cmedia.rules /etc/udev/rules.d/, sudo udevadm control --reload-rules +steps=mkdir build, cd build, mkdir -p /tmp/hampack-build/direwolf-udev, cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/.local -DUDEV_RULES_DIR=/tmp/hampack-build/direwolf-udev, make -j4, make install, sudo cp /tmp/hampack-build/direwolf-udev/99-direwolf-cmedia.rules /etc/udev/rules.d/, sudo udevadm control --reload-rules, mv $HOME/.local/share/HamPack/conf.d/direwolf.conf $HOME/.local/state/HamPack/ [QtTermTCP] version=0.39 wget=http://www.cantab.net/users/john.wiseman/Downloads/QtTermSource.zip install=$HOME/.local/bin/QtTermTCP -gui=true +gui=false steps=qmake, make, mv QtTermTCP $HOME/.local/bin/ -[Kiwix-Desktop] +[kiwix-desktop] version=2.75.1 git=https://github.com/kiwix/kiwix-desktop.git install=$HOME/.local/bin/kiwix-desktop steps=/usr/lib/qt6/bin/qmake PREFIX=$HOME/.local, make, make install -[Kiwix-Tools] +[kiwix-tools] version=3.8.2 git=https://github.com/kiwix/kiwix-tools.git install=$HOME/.local/bin/kiwix-lib diff --git a/conf.d/direwolf.conf b/conf.d/direwolf.conf new file mode 100644 index 0000000..55df8aa --- /dev/null +++ b/conf.d/direwolf.conf @@ -0,0 +1,280 @@ +############################################################# +# # +# Sample configuration file for Dire Wolf # +# # +# Linux version # +# # +############################################################# +# +# Extensive documentation can be found here: +# Stable release - https://github.com/wb2osz/direwolf/tree/master/doc +# Latest development - https://github.com/wb2osz/direwolf/tree/dev/doc +# Additional topics - https://github.com/wb2osz/direwolf-doc +# +# The basic documentation set can also be found in +# /usr/local/share/doc/direwolf/ or /usr/share/doc/direwolf/ +# Concise "man" pages are also available for Linux. +# +######################################################################### +# # +# Recommended Reading for everyone: # +# "Understanding APRS Packets" in https://github.com/wb2osz/aprsspec # +# # +######################################################################### +# +# +# Questions??? Join the discussion forum: https://groups.io/g/direwolf +# +# +# This sample file does not have examples for all of the possibilities. +# Consult the User Guide for more details on configuration options +# and other documents for more details for different uses. +# +# These are the most likely settings you might change: +# +# (1) MYCALL - call sign and SSID for your station. +# +# Look for lines starting with MYCALL and +# change NOCALL to your own callsign and optional SSID. +# +# (2) PBEACON - enable position beaconing. +# +# Look for lines starting with PBEACON and +# modify for your location, symbol, comment, etc. +# +# (3) DIGIPEATER - configure digipeating rules. +# +# Look for lines starting with DIGIPEATER. +# Most people will probably use of of the two examples. +# +# (4) IGSERVER, IGLOGIN - IGate server and login +# +# Configure an IGate client to relay messages between +# radio and internet servers. +# +# +# The default location is "direwolf.conf" in the current working directory. +# On Linux, the user's home directory will also be searched. +# An alternate configuration file location can be specified with the "-c" command line option. +# +# As you probably guessed by now, # indicates a comment line. +# +# Remove the # at the beginning of a line if you want to use a sample +# configuration that is currently commented out. +# +# Commands are a keyword followed by parameters. +# +# Command key words are case insensitive. i.e. upper and lower case are equivalent. +# +# Command parameters are generally case sensitive. i.e. upper and lower case are different. +# + + +############################################################# +# # +# FIRST AUDIO DEVICE PROPERTIES # +# (Channel 0 or 0 + 1 if in stereo) # +# # +############################################################# + +# +# Many people will simply use the default sound device. +# Some might want to use an alternative device by choosing it here. +# +# +# Many examples of radio interfaces and PTT options can be found in: +# https://raw.githubusercontent.com/wb2osz/direwolf-doc/main/Radio-Interface-Guide.pdf +# +# +# Linux ALSA is complicated. See User Guide for discussion. +# To use something other than the default, generally use plughw +# and a card number reported by "arecord -l" command. Example: + +ADEVICE plughw:0,0 + +# Many more details and examples can be found in: +# https://raw.githubusercontent.com/wb2osz/direwolf-doc/main/Radio-Interface-Guide.pdf + +############################################################# +# # +# CHANNEL 0 PROPERTIES # +# # +############################################################# + +CHANNEL 0 + +# +# Station identifier for this channel. +# Multiple channels can have the same or different names. +# +# It can be up to 6 letters and digits with an optional ssid in range of 1 to 15. +# The APRS specification requires that it be upper case. +# +# Example (don't use this unless you are me): MYCALL WB2OSZ-5 +# + +MYCALL NOCALL + +# +# Pick a suitable modem speed based on your situation. +# 1200 Most common for VHF/UHF. This is the default if not specified. +# 2400 QPSK compatible with MFJ-2400, and probably PK232-2400 & KPC-2400. +# 300 Low speed for HF SSB. Default tones 1600 & 1800. +# EAS Emergency Alert System (EAS) Specific Area Message Encoding (SAME). +# 9600 G3RUH style - Can't use Microphone and Speaker connections. +# AIS International system for tracking ships on VHF. +# Also uses 9600 bps so Speaker connection won't work. +# +# In most cases you can just specify the speed. Examples: +# + +#MODEM 300 +#MODEM 9600 +MODEM 1200 + +# +# Many options are available for great flexibility. +# See User Guide for details. +# + +# Push to Talk (PTT) can be confusing because there are so many different cases. +# https://raw.githubusercontent.com/wb2osz/direwolf-doc/main/Radio-Interface-Guide.pdf +# goes into detail about the various options. + +# If using a C-Media CM108/CM119 or similar USB Audio Adapter, +# you can use a GPIO pin for PTT control. This is very convenient +# because a single USB connection is used for both audio and PTT. +# Example: + +PTT CM108 + + +# There are other possibilities such as serial port RTS, Raspberry Pi GPIO pins, +# and hamlib for CAT control. For more details see: +# https://raw.githubusercontent.com/wb2osz/direwolf-doc/main/Radio-Interface-Guide.pdf + + +############################################################# +# # +# VIRTUAL TNC SERVER PROPERTIES # +# # +############################################################# + +# +# Dire Wolf acts as a virtual TNC and can communicate with +# client applications by different protocols: +# +# - the "AGW TCPIP Socket Interface" - default port 8000 +# - KISS protocol over TCP socket - default port 8001 +# - KISS TNC via pseudo terminal (-p command line option) +# +# +############################################################# +# # +# FIXED POSIION BEACONING PROPERTIES # +# # +############################################################# + + +# +# Beaconing is configured with these two commands: +# +# PBEACON - for a position report (usually yourself) +# OBEACON - for an object report (usually some other entity) +# +# Each has a series of keywords and values for options. +# See User Guide for details. +# +# Example: Change the latitude and longitude or your location +# will show you about to go over Niagara Falls. + +# PBEACON delay=1 every=1 overlay=S symbol="digi" lat=38.857108 long=-104.811041 power=5 gain=4 comment="Packet Radio Test" via=WIDE1-1 + +# Run "direwolf -S" (upper case S) to get a list of symbols that can +# be used rather than "canoe." Specify a unique substring of description. +# +# Did you know that APRS comments and messages can contain UTF-8 characters, not only plain ASCII? +# +#PBEACON delay=1 every=30 overlay=S symbol="digi" lat=43.077104 long=-79.075674 comment=" Did you know that APRS comments and messages can contain UTF-8 characters? \xe0\xb8\xa7\xe0\xb8\xb4\xe0\xb8\x97\xe0\xb8\xa2\xe0\xb8\xb8\xe0\xb8\xaa\xe0\xb8\xa1\xe0\xb8\xb1\xe0\xb8\x84\xe0\xb8\xa3\xe0\xb9\x80\xe0\xb8\xa5\xe0\xb9\x88\xe0\xb8\x99" +#PBEACON delay=11 every=30 overlay=S symbol="digi" lat=43.077104 long=-79.075674 comment=" Did you know that APRS comments and messages can contain UTF-8 characters? \xce\xa1\xce\xb1\xce\xb4\xce\xb9\xce\xbf\xce\xb5\xcf\x81\xce\xb1\xcf\x83\xce\xb9\xcf\x84\xce\xb5\xcf\x87\xce\xbd\xce\xb9\xcf\x83\xce\xbc\xcf\x8c\xcf\x82" +#PBEACON delay=21 every=30 overlay=S symbol="digi" lat=43.077104 long=-79.075674 comment=" Did you know that APRS comments and messages can contain UTF-8 characters? \xe3\x82\xa2\xe3\x83\x9e\xe3\x83\x81\xe3\x83\xa5\xe3\x82\xa2\xe7\x84\xa1\xe7\xb7\x9a" +# + +############################################################# +# # +# APRS DIGIPEATER PROPERTIES # +# # +############################################################# + +# +# Remove the "#" from the beginning of the first digipeat below for short range fill-in digi +# or remove the "#" from the beginning of the second digipeat below for wide area digi. + +#DIGIPEAT 0 0 ^TEST$ ^WIDE1-1$ +#DIGIPEAT 0 0 ^WIDE[3-7]-[1-7]$|^TEST$ ^WIDE[12]-[12]$ + +# See https://raw.githubusercontent.com/wb2osz/direwolf-doc/main/APRS-Digipeaters.pdf +# and User Guide for more explanation of what this means and +# how it can be customized for your particular needs. + + +# Traditional connected mode packet radio uses a different +# type of digipeating. See User Guide for details. + +############################################################# +# # +# INTERNET GATEWAY # +# # +############################################################# + +# First you need to specify the name of a Tier 2 server. +# The current preferred way is to use one of these regional rotate addresses: + +# noam.aprs2.net - for North America +# soam.aprs2.net - for South America +# euro.aprs2.net - for Europe and Africa +# asia.aprs2.net - for Asia +# aunz.aprs2.net - for Oceania + +#IGSERVER noam.aprs2.net + +# You also need to specify your login name and passcode. +# Contact the author if you can't figure out how to generate the passcode. + +#IGLOGIN WB2OSZ-5 123456 + +# That's all you need for a receive only IGate which relays +# messages from the local radio channel to the global servers. + +# To relay APRS "messages" from the Internet to radio, you need to add +# one more option with the transmit channel number and a VIA path. + +#IGTXVIA 0 WIDE1-1,WIDE2-1 + +# For more information see +# https://raw.githubusercontent.com/wb2osz/direwolf-doc/main/Successful-APRS-IGate-Operation.pdf + + +############################################################# +# # +# APRStt GATEWAY # +# # +############################################################# + +# +# Dire Wolf can receive DTMF (commonly known as Touch Tone) +# messages and convert them to packet objects. Details in: +# +# https://raw.githubusercontent.com/wb2osz/direwolf/master/doc/APRStt-Implementation-Notes.pdf +# + +FX25TX 1 +PERSIST 63 +SLOTTIME 12 +RETRY 5 +FRACK 3 +MAXFRAME 4 +PACLEN 128 +DWAIT 0 +TXDELAY 30 +TXTAIL 15 diff --git a/desktop/icons/paracon.png b/desktop/icons/paracon.png new file mode 100644 index 0000000000000000000000000000000000000000..2270f447c4cde1ec9f9d40f601d5dbbaa87f62a4 GIT binary patch literal 2846 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 "$VERSION_FILE" + fi +} + +# Check if an update is needed +needs_update() { + local app="$1" + local install_path="$2" + local latest="$3" + + if [ ! -f "$install_path" ]; then + echo " $app is not installed." + return 0 + fi + + local installed + installed=$(get_installed_version "$app") + + if [ "$installed" = "unknown" ]; then + echo " Warning: could not determine installed version of $app." + echo " binaries.conf specifies version $latest." + read -rp " Download and install $app anyway? [y/N] " response + if [[ "$response" =~ ^[yY] ]]; then + return 0 + else + return 1 + fi + fi + + echo " Installed version : $installed" + echo " Latest version : $latest" + + if [ "$installed" = "$latest" ]; then + echo " $app is up to date, skipping." + return 1 + fi + + echo " Update available for $app." + return 0 +} + +# Download binary and place it at the install path +download_binary() { + local app="$1" + local url="$2" + local install_path="$3" + + local filename="${url##*/}" + local tmp_file="$TMP_DIR/$filename" + + echo " Downloading $url..." + wget -q "$url" -O "$tmp_file" + + mkdir -p "$(dirname "$install_path")" + mv "$tmp_file" "$install_path" + chmod +x "$install_path" + echo " Installed to $install_path" +} + +# Generate and install a .desktop file +install_desktop() { + local app="$1" + local install_path="$2" + local exec_cmd="$3" + local comment="$4" + local icon="$5" + local categories="$6" + + [ -z "$categories" ] && categories="HamRadio;" + [ -z "$exec_cmd" ] && exec_cmd="$install_path" + + local desktop_dir="$HOME/.local/share/applications" + mkdir -p "$desktop_dir" + + local desktop_file="$desktop_dir/$app.desktop" + + echo " Generating desktop file $desktop_file..." + cat > "$desktop_file" <