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 0000000..2270f44 Binary files /dev/null and b/desktop/icons/paracon.png differ diff --git a/desktop/varafm.desktop b/desktop/varafm.desktop deleted file mode 100644 index 6156dec..0000000 --- a/desktop/varafm.desktop +++ /dev/null @@ -1,10 +0,0 @@ -[Desktop Entry] -Name=VARA FM -Comment=Vara Modem for HF -Exec=wine $HOME/.wine/drive_c/'VARA FM'/VARAFM.exe -Icon=$HOME/.local/share/HamPack/desktop/icons/varafm.png -Type=Application -Categories=HamRadio;Utility; -Terminal=false -StartupNotify=true -Path=$HOME/.wine/drive_c/'VARA FM'/ diff --git a/install-binaries.sh b/install-binaries.sh new file mode 100755 index 0000000..8e6c2f5 --- /dev/null +++ b/install-binaries.sh @@ -0,0 +1,237 @@ +#!/bin/bash +# +# Purpose: Download and install pre-built binaries from binaries.conf + +CONF_FILE="$HOME/.local/share/HamPack/binaries.conf" +TMP_DIR="/tmp/hampack-build" +VERSION_FILE="$HOME/.local/state/HamPack/.installed_versions" + +# Get the installed version of an app +get_installed_version() { + local app="$1" + + if [ -f "$VERSION_FILE" ]; then + local stored + stored=$(grep "^$app=" "$VERSION_FILE" | cut -d'=' -f2) + if [ -n "$stored" ]; then + echo "$stored" + return + fi + fi + + echo "unknown" +} + +# Save installed version to version file +save_installed_version() { + local app="$1" + local version="$2" + + touch "$VERSION_FILE" + + if grep -q "^$app=" "$VERSION_FILE"; then + sed -i "s/^$app=.*/$app=$version/" "$VERSION_FILE" + else + echo "$app=$version" >> "$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" <