pi-build/functions/additional.function

1004 wiersze
31 KiB
Plaintext

#additional software to install with build-a-pi
#20200513 km4ack
TEMPCRON=${MYPATH}/cron.tmp
DIR=${MYPATH}/temp
WHO=$(whoami)
mkdir -p ${DIR}
BUILDDIR=$HOME/.bap-source-files
mkdir -p ${BUILDDIR}
source ${MYPATH}/config
##################################
# PAT WINLINK
##################################
PAT() {
echo "##################"
echo "installing pat"
echo "##################"
PORT=8080
cd ${DIR}
if [ -f ${HOME}/.wl2k/config.json ]; then
cp ${HOME}/.wl2k/config.json ${DIR}/config.json
elif [ -f ${XDG_CONFIG_HOME}/pat/config.json ]; then
cp $XDG_CONFIG_HOME/pat/config.json ${DIR}/config.json
fi
if [ `getconf LONG_BIT` = '64' ]; then
#install deb file for 64 bit systems
NEWPATV=$(curl -s https://github.com/la5nta/pat/releases | grep arm64 | head -1 | sed 's/.*pat_/pat_/' | sed 's/<\/a>.*$//')
NEWPAT=$(echo ${NEWPATV} | sed 's/pat_//' | sed 's/_linux_arm64.deb//' | sed 's/0\.//')
echo "new pat v ${NEWPATV}"
echo "new pat ${NEWPAT}"
wget --tries 2 --connect-timeout=60 https://github.com/la5nta/pat/releases/download/v0.${NEWPAT}/${NEWPATV}
sudo dpkg -i ${DIR}/${NEWPATV}
else
#install deb file for 32 bit systems
NEWPATV=$(curl -s https://github.com/la5nta/pat/releases | grep armhf | head -1 | sed 's/.*pat_/pat_/' | sed 's/<\/a>.*$//')
NEWPAT=$(echo ${NEWPATV} | sed 's/pat_//' | sed 's/_linux_armhf.deb//' | sed 's/0\.//')
echo "new pat v ${NEWPATV}"
echo "new pat ${NEWPAT}"
wget --tries 2 --connect-timeout=60 https://github.com/la5nta/pat/releases/download/v0.${NEWPAT}/${NEWPATV}
sudo dpkg -i ${DIR}/${NEWPATV}
fi
#lines below configure pat with user info
pat http &
sudo killall pat
sudo systemctl start pat@${WHO}
sudo systemctl enable pat@${WHO}
cd ${DIR}
PAT_VERSION=$(pat version | awk '{print $2}' | awk -F "." '{print $2}')
#The Pat Winlink config file will change location in version 0.12. The below if statement
#checks to see which version is installed.
#check to see if pat version is 12 or greater. Change config file location
#depending on which version.
if [ "$PAT_VERSION" -le 11 ]; then
echo "pat version 11 detected"
FIG=$HOME/.wl2k/config.json
else
echo "pat version 12 or greater detected"
FIG=$XDG_CONFIG_HOME/pat/config.json
fi
#set callsign
sed -i "s/\"mycall\": \".*\",/\"mycall\": \"${CALL}\",/" ${FIG}
#set password
WL2KPASS=$(grep "WL2KPASS" ${MYPATH}/config | sed 's/"//g' | sed 's/WL2KPASS=//')
sed -i "s/\"secure_login_password\": \".*\",/\"secure_login_password\": \""$WL2KPASS"\",/" ${FIG}
#set locator
sed -i "s/\"locator\": \".*\",/\"locator\": \"$GRID\",/" ${FIG}
#Change localhost to 0.0.0.0
#This is a secutiry risk. See https://github.com/km4ack/pi-build/issues/299
#Changed to 127.0.0.1 on 11OCT2021 KM4ACK
sed -i "s/\"http_addr\": \".*\",/\"http_addr\": \"127.0.0.1:$PORT\",/" ${FIG}
#jq '.ax25.rig = '\"my-rig\"'' ${FIG} | jq '.ardop.rig = '\"my-rig\"'' | jq '.hamlib_rigs = {'\"my-rig\"': {"address": "127.0.0.1:4532", "network": "tcp"}}' >~/Desktop/config.json
jq '.ax25.rig = '\"my-rig\"'' ${FIG} | jq '.varafm.rig = '\"my-rig\"'' | jq '.varahf.rig = '\"my-rig\"'' | jq '.ardop.rig = '\"my-rig\"'' | \
jq '.varafm.ptt_ctrl = 'true'' | jq '.varahf.ptt_ctrl = 'true'' | \
jq '.hamlib_rigs = {'\"my-rig\"': {"address": "127.0.0.1:4532", "network": "tcp"}}' >~/Desktop/config.json
mv ${HOME}/Desktop/config.json ${FIG}
sed -i 's/"enable_http": false,/"enable_http": true,/' ${FIG}
if [ -f ${DIR}/config.json ]; then
mv ${DIR}/config.json ${HOME}/.wl2k/
fi
PAT_OLD_SOURCE_INSTALL() {
#This code is left for reference. This was used ot build pat from source when 64bit Pi OS was first released. 20220922
#reference:
#https://www.jeremymorgan.com/tutorials/raspberry-pi/install-go-raspberry-pi/
#https://github.com/la5nta/pat/wiki/Building-from-source
#https://cqdeks4td.blogspot.com/2021/11/installing-pat-open-source-winlink.html
#install golang needed for pat build
cd
wget https://go.dev/dl/go1.17.7.linux-arm64.tar.gz
sudo tar -C /usr/local -xzf go1.17.7.linux-arm64.tar.gz
rm go1.17.7.linux-arm64.tar.gz
echo "PATH=$PATH:/usr/local/go/bin" >> $HOME/.profile
echo "GOPATH=$HOME/go" >> $HOME/.profile
source $HOME/.profile
#download/build latest pat
cd
git clone https://github.com/la5nta/pat
cd pat
./make.bash libax25
./make.bash
sudo cp $HOME/pat/debian/pat@.service /lib/systemd/system/
sudo cp $HOME/pat/pat /usr/bin/
rm -rf $HOME/pat
}
}
##################################
# PAT MENU
##################################
PAT-MENU() {
#backup config files (Issue #119)
if [ -f ${HOME}/patmenu2/config ]; then
mkdir -p ${DIR}/patconfig
cp ${HOME}/patmenu2/*config* ${DIR}/patconfig/
fi
#update pat menu
if [ -d ${HOME}/patmenu2 ]; then
rm -rf "${HOME}/patmenu2"
fi
cd ${HOME}
git clone https://github.com/km4ack/patmenu2.git ${HOME}/patmenu2
#Verify that pat is on master branch. Pat can remain on an old branch
#due to a workaround when moving to Pat version 12. This caused Pat Menu
#to constantly report that it needed an update with the BAP update tool.
PAT_VER=$(grep release $HOME/patmenu2/changelog | head -1 | sed 's/release=//;s/\.//g')
if [ "$PAT_VER" -lt 260 ]; then
cd $HOME/patmenu2
git checkout master
fi
bash ${HOME}/patmenu2/setup
sed -i "s/N0CALL/${CALL}/" ${HOME}/patmenu2/config
sed -i 's/1,0/3,0/g' ${HOME}/patmenu2/config
#restore config files
if [ -d ${DIR}/patconfig/ ]; then
mv ${DIR}/patconfig/* ${HOME}/patmenu2/
fi
}
##################################
# JS8Call
##################################
JS8CALL() {
#find how much memory we are working with
FREEMEM=$(free -m | grep Mem: | awk '{ print $2 }')
echo ${FREEMEM}
##################################
# INCREASE SWAP
##################################
#increase swap file if less than 3G memory
if [ ${FREEMEM} -lt 3000 ]; then
echo "Increasing Swap size for build"
#increase swap size
sudo sed -i 's/#CONF_SWAPFILE=\/var\/swap/CONF_SWAPFILE=\/var\/swap/' /etc/dphys-swapfile
sudo sed -i 's/CONF_SWAPSIZE=100/CONF_SWAPSIZE=1024/' /etc/dphys-swapfile
sudo /etc/init.d/dphys-swapfile restart
sleep 10
fi
#https://9a3gos.com/install-js8call-2-0-0-rc3-on-ubuntu-19-10-hamlib/
#Verify HAMLIB installed or JS8 Won't Build.
if ! hash rigctl 2>/dev/null; then
source ${MYPATH}/functions/base.function && HAMLIB
source ${MYPATH}/config
fi
echo "###############################"
echo "Installing JS8Call Dependancies"
echo "###############################"
sudo apt-get install -y build-essential gfortran autoconf automake libtool cmake git asciidoctor libfftw3-dev qtdeclarative5-dev texinfo libqt5multimedia5 libqt5multimedia5-plugins qtmultimedia5-dev libusb-1.0.0-dev libqt5serialport5-dev asciidoc libudev-dev
JS8PKG=$(curl -s http://files.js8call.com/latest.html | grep .tgz | sed 's/.*js8call-/js8call-/;s/<.*$//')
JS8VERSION=$(echo $JS8PKG | sed 's/js8call-//;s/.tgz.*$//')
cd ${BUILDDIR}
echo "###################"
echo "Downloading JS8Call"
echo "###################"
wget http://files.js8call.com/$JS8VERSION/$JS8PKG
tar -xvf $JS8PKG
rm $JS8PKG
cd ${BUILDDIR}/js8call
echo "#################"
echo "Compiling JS8Call"
echo "#################"
cmake -D CMAKE_INSTALL_PREFIX=$HOME/Downloads/js8call
cmake --build . -- -j4
sudo cp js8 js8call /usr/local/bin
sudo cp js8call.desktop /usr/share/applications
sudo cp ./artwork/icon_128.svg /usr/share/pixmaps/js8call_icon.svg
#reset swap size to default
if [ ${FREEMEM} -lt 3000 ]; then
echo "Resetting swap size to default"
#increase swap size
sudo sed -i 's/CONF_SWAPFILE=\/var\/swap/#CONF_SWAPFILE=\/var\/swap/' /etc/dphys-swapfile
sudo sed -i 's/CONF_SWAPSIZE=1024/CONF_SWAPSIZE=100/' /etc/dphys-swapfile
sudo /etc/init.d/dphys-swapfile restart
sleep 10
fi
#Old Way left for reference
#cd ${DIR}
#JS8LATE=$(curl -s http://files.js8call.com/latest.html | grep armhf | awk '{ print $2 }' | sed 's/href=//' | sed 's/"//g')
#JS8PKG=$(curl -s http://files.js8call.com/latest.html | grep armhf | awk '{ print $2 }' | sed 's/\///g' | sed 's/href="http:files.js8call.com[0-9].[0-9].[0-9]//' | sed 's/"//')
#wget --tries 2 --connect-timeout=60 ${JS8LATE} || echo "Can't Download JS8Call" >>${BUILDLOG}
#sudo dpkg -i ${JS8PKG}
#sudo apt-get --fix-broken -y install
#sudo dpkg -i ${JS8PKG}
}
##################################
# WSJTX
##################################
WSJTX() {
#find how much memory we are working with
FREEMEM=$(free -m | grep Mem: | awk '{ print $2 }')
echo ${FREEMEM}
##################################
# INCREASE SWAP
##################################
#increase swap file if less than 3G memory
if [ ${FREEMEM} -lt 3000 ]; then
echo "Increasing Swap size for build"
#increase swap size
sudo sed -i 's/#CONF_SWAPFILE=\/var\/swap/CONF_SWAPFILE=\/var\/swap/' /etc/dphys-swapfile
sudo sed -i 's/CONF_SWAPSIZE=100/CONF_SWAPSIZE=1024/' /etc/dphys-swapfile
sudo /etc/init.d/dphys-swapfile restart
sleep 10
fi
sudo apt install -y build-essential git cmake gfortran fftw3-dev qtbase5-dev qttools5-dev libqt5serialport5-dev qtmultimedia5-dev libqt5multimedia5-plugins libqt5sql5-sqlite autoconf automake libtool texinfo libusb-1.0-0-dev libudev-dev libboost-all-dev asciidoctor
#credit to Michael Shriver for this fix
FT8PKG=$(curl -s https://wsjt.sourceforge.io/wsjtx.html | grep .tgz | sed 's|.*">\(.*\.tgz\)</.*|\1|' | head -1)
FT8DIR=$(echo $FT8PKG | sed 's/.tgz//')
cd ${BUILDDIR}
wget --tries 2 --connect-timeout=60 https://sourceforge.net/projects/wsjt/files/$FT8PKG
tar -xvf $FT8PKG
rm $FT8PKG
cd $FT8DIR
cmake -D CMAKE_INSTALL_PREFIX=${BUILDDIR}/$FT8DIR
cmake -DWSJT_SKIP_MANPAGES=ON -DWSJT_GENERATE_DOCS=OFF
sudo cmake --build . --target install -j4
sudo mv ${BUILDDIR}/${FT8DIR}/bin/* /usr/local/bin/
sudo cp ${BUILDDIR}/${FT8DIR}/share/applications/wsjtx.desktop /usr/share/applications/
sudo cp ${BUILDDIR}/${FT8DIR}/share/pixmaps/wsjtx_icon.png /usr/share/pixmaps/
#reset swap size to default
if [ ${FREEMEM} -lt 3000 ]; then
echo "Resetting swap size to default"
#increase swap size
sudo sed -i 's/CONF_SWAPFILE=\/var\/swap/#CONF_SWAPFILE=\/var\/swap/' /etc/dphys-swapfile
sudo sed -i 's/CONF_SWAPSIZE=1024/CONF_SWAPSIZE=100/' /etc/dphys-swapfile
sudo /etc/init.d/dphys-swapfile restart
sleep 10
fi
#old way of installing. left for reference
#cd ${DIR}
#WSPKG=$(curl -s https://physics.princeton.edu/pulsar/k1jt/wsjtx.html | grep armhf.deb | sed 's/^.*wsjtx/wsjtx/' | sed 's/deb.*$/deb/' | head -1)
#wget --tries 2 --connect-timeout=60 --no-check-certificate https://physics.princeton.edu/pulsar/k1jt/$WSPKG
#WSJTXSUCCESS=$?
#sudo dpkg -i $WSPKG
#sudo apt-get --fix-broken -y install
#sudo dpkg -i $WSPKG
#added to fix WSJTX 2.3.0
#sudo sed -i "s/# en_US.UTF-8/en_US.UTF-8/g" /etc/locale.gen
#sudo locale-gen
#end edit for WSJTX 2.3.0
#try sourcegorge if princeton.edu fails
#WSJTX2() {
# if [ "$WSJTXSUCCESS" ! = 0 ]; then
# cd ${DIR}
# wget --tries 2 --connect-timeout=60 https://sourceforge.net/projects/wsjt/files/wsjtx-2.2.2/wsjtx_2.2.2_armhf.deb
# sudo dpkg -i wsjtx_2.2.2_armhf.deb
# sudo apt-get --fix-broken -y install
# sudo dpkg -i wsjtx_2.2.2_armhf.deb
# fi
#}
#WSJTX2
}
##################################
# CONKY
##################################
CONKY() {
if ! hash conky 2>/dev/null; then
sudo apt install -y conky
fi
touch ${HOME}/Documents/mylog.txt #conky will fail to load if this file doesn't exist
touch /var/lib/misc/dnsmasq.leases #conky will fail to load if this file doesn't exist
sudo apt-get install -y ruby2.7
sudo gem install gpsd_client
sudo gem install maidenhead
cp ${MYPATH}/conky/.conkyrc ${HOME}/.conkyrc
mkdir -p ${HOME}/bin/conky
cp ${MYPATH}/conky/* ${HOME}/bin/conky/
chmod +x ${HOME}/bin/conky/get-grid ${HOME}/bin/conky/temp-conv ${HOME}/bin/conky/get-freq ${HOME}/bin/conky/grid
sed -i "s/N0CALL/${CALL}/" ${HOME}/.conkyrc
#Line below is for https://github.com/km4ack/pi-build/issues/198
echo "#Update GPS maidenhead for conky" >>${TEMPCRON}
echo "*/1 * * * * /home/`whoami`/bin/conky/grid" >>${TEMPCRON}
#Create files needed for autostart at login
#Fix issue https://github.com/km4ack/pi-build/issues/83
cat <<EOF >${HOME}/.local/share/applications/conky.desktop
[Desktop Entry]
Name=Conky
Comment=Conky
GenericName=Conky Screen Background Monitor
Exec=conky --pause=5
Icon=/home/`whoami`/pi-build/conky/conky-logo.png
Type=Application
Encoding=UTF-8
Terminal=false
Categories=HamRadio
Keywords=Radio
EOF
ln -sf ${HOME}/.local/share/applications/conky.desktop ${HOME}/.config/autostart/conky.desktop
#####Add setconky to main menu
chmod +x ${HOME}/pi-build/conky/setconky
cat <<EOF >${HOME}/.local/share/applications/setconky.desktop
[Desktop Entry]
Name=Conky-Prefs
Comment=Conky-Prefs
GenericName=Change Conky Preferences
Exec=/home/`whoami`/pi-build/conky/setconky
Icon=/home/`whoami`/pi-build/conky/conky-logo.png
Type=Application
Encoding=UTF-8
Terminal=false
Categories=Settings;DesktopSettings;GTK;X-LXDE-Settings;
Keywords=Radio,Conky
EOF
}
##################################
# M0IAX Tools
##################################
M0IAX() {
cd ${DIR} || return
wget http://m0iax.com/wp-content/uploads/2020/08/JS8CallUtils_RaspberryPi.zip
unzip JS8CallUtils_RaspberryPi.zip
rm JS8CallUtils_RaspberryPi.zip
chmod +x JS8CallUtils_v2
sudo mv JS8CallUtils_v2 /usr/local/bin
cat >m0iax.desktop <<EOF
[Desktop Entry]
Name=M0IAX JS8 Utils
GenericName=M0IAX JS8 Utils
Comment=GPS & Message Tool for JS8Call
Exec=JS8CallUtils_v2
Terminal=false
Type=Application
Categories=Network;HamRadio;
EOF
sudo mv m0iax.desktop /usr/share/applications/
}
##################################
# PYQSO
##################################
PYQSO() {
sudo apt-get install -y pyqso
}
##################################
# CQRLOG
##################################
CQRLOG() {
sudo apt-get install -y lcl-2.0 lazarus-2.0 fp-compiler-3.2.0 fpc-3.2.0 libssl-dev git build-essential \
libmariadb-dev-compat lazarus-ide lcl lcl-gtk2 lcl-nogui lcl-units lcl-utils lazarus lazarus-doc lazarus-src \
fp-units-misc fp-units-rtl fp-utils fpc fpc-source libssl-dev default-mysql-client-core default-mysql-server \
default-mysql-server-core gawk libcgi-fast-perl libcgi-pm-perl libconfig-inifiles-perl libdbd-mysql-perl \
libdbi-perl libencode-locale-perl libfcgi-perl libhtml-parser-perl libhtml-tagset-perl \
libhtml-template-perl libhttp-date-perl libhttp-message-perl libio-html-perl liblwp-mediatypes-perl \
libmariadb-dev-compat libnetpbm10 libreadline5 libterm-readkey-perl libtimedate-perl liburi-perl \
cd $HOME
git clone https://github.com/ok2cqr/cqrlog.git
cd $HOME/cqrlog
make
sudo make install
}
##################################
# CHIRP
##################################
CHIRP() {
#sudo apt install -y chirp
#sample link - https://github.com/goldstar611/chirp-appimage/releases/download/20230202/Chirp-next-20230202-armhf.AppImage
cd ${DIR} || return
sudo apt install libfuse2
CHIRPDATE=$(curl -s https://github.com/goldstar611/chirp-appimage | grep "releases/tag/" | sed 's|.*releases/tag/||;s|">||')
#determine if 32/64 bit and set download link accordingly. issue #382
if [ `getconf LONG_BIT` = '32' ]; then
LINK="https://github.com/goldstar611/chirp-appimage/releases/download/$CHIRPDATE/Chirp-next-$CHIRPDATE-armhf.AppImage"
else
LINK="https://github.com/goldstar611/chirp-appimage/releases/download/$CHIRPDATE/Chirp-next-$CHIRPDATE-aarch64.AppImage"
fi
wget $LINK
CHIRP=$(ls | grep Chirp-next)
sudo mv $CHIRP /usr/local/bin/chirp
sudo chmod +x /usr/local/bin/chirp
cat >chirp.desktop <<EOF
[Desktop Entry]
Name=Chirp
Comment=Radio Programming Software
GenericName=Chirp
Exec=/usr/local/bin/chirp
Icon=qsstv.png
Type=Application
Terminal=false
Categories=HamRadio;
EOF
sudo mv chirp.desktop /usr/share/applications/
OLDCODE(){
#left for reference
cd ${DIR} || return
wget --tries 2 --connect-timeout=60 https://trac.chirp.danplanet.com/chirp_daily/LATEST/
CHIRPBUILD=$(cat index.html | grep .tar.gz | grep chirp-daily- | awk '{ print $6 }' | sed 's/.*"//' | sed 's/>//' | sed 's/[<].*$//')
sudo apt-get -y install python-gtk2 python-serial python-libxml2 python-suds
mkdir ${HOME}/chirp
cd ${HOME}/chirp || return
wget --tries 2 --connect-timeout=60 https://trac.chirp.danplanet.com/chirp_daily/LATEST/$CHIRPBUILD
tar -xzf $CHIRPBUILD
CHIRPDIR=$(echo $CHIRPBUILD | sed 's/[.].*$//')
cd $CHIRPDIR || return
sudo python setup.py install
pip install future
}
}
##################################
# GARIM
##################################
GARIM() {
GPKG=$(curl -s https://www.whitemesa.net/garim/src/ | grep tar.gz | tail -1 | sed 's/^.*garim/garim/' | sed 's/tar.gz.*$/tar.gz/')
cd ${BUILDDIR} || return
wget --tries 2 --connect-timeout=60 https://www.whitemesa.net/garim/src/$GPKG
tar -xzvf $GPKG
DIRR=$(echo $GPKG | sed 's/.tar.gz//')
cd ${DIRR} || return
./configure
make
sudo make install
sudo make clean
cd ${BUILDDIR} || return
rm *.gz
}
################################
# VARIM
##################################
VARIM() {
sudo apt-get install -y libfltk1.1-dev
sudo apt-get install -y libfltk1.3-dev
VPKG=$(curl -s https://www.whitemesa.net/varim/src/ | grep tar.gz | tail -1 | sed 's/^.*varim/varim/' | sed 's/tar.gz.*$/tar.gz/')
cd ${BUILDDIR} || return
wget --tries 2 --connect-timeout=60 https://www.whitemesa.net/varim/src/$VPKG
tar -xzvf $VPKG
DIRR=$(echo $VPKG | sed 's/.tar.gz//')
cd ${DIRR} || return
./configure
make
sudo make install
sudo make clean
cd ${BUILDDIR} || return
rm *.gz
}
##################################
# QSSTV
##################################
QSSTV() {
sudo apt-get install -y g++ libfftw3-dev qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools libpulse-dev libhamlib-dev libasound2-dev libv4l-dev libopenjp2-7 libopenjp2-7-dev
cd ${BUILDDIR} || return
git clone https://github.com/ON4QZ/QSSTV
cd QSSTV/src || return
qmake
make
sudo make install
sudo make clean
cd ${BUILDDIR} || return
sudo mkdir -p /usr/local/share/pixmaps/
sudo cp ${BUILDDIR}/QSSTV/src/icons/qsstv.png /usr/local/share/pixmaps/
cat >qsstv.desktop <<EOF
[Desktop Entry]
Name=QSSTV
Comment=Slow Scan TV
GenericName=QSSTV
Exec=/usr/local/bin/qsstv
Icon=qsstv.png
Type=Application
Terminal=false
Categories=HamRadio;
EOF
sudo mv qsstv.desktop /usr/share/applications/
}
##################################
# GRIDTRACKER
##################################
GRIDTRACKER() {
#due to constant changes to GT website, get the download link from a file on KM4ACK github.
cd /run/user/$UID/
wget https://raw.githubusercontent.com/km4ack/pi-scripts/master/gt-download-links
cd ${HOME} || return
sudo apt-get install -y libgconf-2-4
#determine if 32/64 bit and set download link accordingly. issue #382
if [ `getconf LONG_BIT` = '32' ]; then
GRIDDLL=$(cat /run/user/$UID/gt-download-links | grep arm32 | sed 's/arm32=//')
GT_TAR_NAME=$(echo $GRIDDLL | sed 's/.*GridTracker/GridTracker/')
else
GRIDDLL=$(cat /run/user/$UID/gt-download-links | grep arm64 | sed 's/arm64=//')
GT_TAR_NAME=$(echo $GRIDDLL | sed 's/.*GridTracker/GridTracker/')
fi
wget --tries 2 --connect-timeout=60 $GRIDDLL
tar -xzvf $GT_TAR_NAME
rm GridTracker*.gz
#determine if 32/64 bit and get correct directory name.
if [ `getconf LONG_BIT` = '32' ]; then
OLDFOLDER=$(ls | grep GridTracker*-linux-arm32)
else
OLDFOLDER=$(ls | grep GridTracker*-linux-arm64)
fi
mv "$OLDFOLDER" $HOME/GridTracker
cat >gridtracker.desktop <<EOF
[Desktop Entry]
Name=GridTracker
Comment=GridTracker
GenericName=GridTracker, a WSJT-X Companion
Exec=${HOME}/GridTracker/GridTracker --disable-accelerated-2d-canvas --num-raster-threads=2
Icon=${HOME}/GridTracker/gridtracker.png
Path=${HOME}/GridTracker
Type=Application
Encoding=UTF-8
Terminal=false
Categories=HamRadio;
EOF
sudo mv gridtracker.desktop /usr/share/applications/
}
##################################
# PROPAGATION
##################################
PROPAGATION() {
sudo apt-get install -y gfortran yelp python3-gi python3-gi-cairo rarian-compat gnome-doc-utils pkg-config python3-dateutil python3-mpltoolkits.basemap python3-cairocffi libgtk-3-dev
#install primary program
cd ${BUILDDIR} || return
wget --tries 2 --connect-timeout=60 https://www.qsl.net/hz1jw/voacapl/downloads/voacapl-0.7.2.tar.gz
tar -xzf voacapl-0.7.2.tar.gz
cd voacapl-0.7.2 || return
./configure
make
sudo make install
sudo make clean
#install gui app for propagation reports
cd ${BUILDDIR}
wget --tries 2 --connect-timeout=60 https://www.qsl.net/hz1jw/pythonprop/downloads/pythonprop-0.28.tar.gz
tar -xzf pythonprop-0.28.tar.gz
cd pythonprop-0.28
./configure
sudo make install
sudo make clean
${BUILDDIR}/voacapl-0.7.2/makeitshfbc
}
##################################
# YAAC
##################################
YAAC() {
cd ${DIR} || return
#wget --tries 2 --connect-timeout=60 https://sourceforge.net/projects/yetanotheraprsc/files/YAAC.zip/
wget --tries 2 --connect-timeout=60 https://www.ka2ddo.org/ka2ddo/YAAC.zip
sudo apt-get install -y librxtx-java openjdk-10-dbg
mkdir -p ${HOME}/YAAC
cd ${HOME}/YAAC || return
#Fix issue 375 to prevent YAAC from reopening
if [ -f ${HOME}/YAAC/YAAC ]; then
rm ${HOME}/YAAC/YAAC
fi
touch YAAC
echo "#!/bin/bash" >>YAAC
echo "java -jar ${HOME}/YAAC/YAAC.jar" >>YAAC
chmod +x YAAC
cat >yaac.desktop <<EOF
[Desktop Entry]
Name=YAAC
GenericName=YAAC
Comment=APRS Client
Exec=${HOME}/YAAC/YAAC
Terminal=false
Type=Application
Categories=Network;HamRadio;
EOF
sudo mv yaac.desktop /usr/share/applications/
unzip -o ${DIR}/YAAC.zip
}
##################################
# XASTIR
##################################
XASTIR() {
###OLD CODE
#sudo apt-get install -y xastir
#sudo chmod +x /usr/bin/xastir
#sudo sed -i 's/Exec=xastir/Exec=sudo xastir/' /usr/share/applications/xastir.desktop
###NEW CODE 29JAN2021 Builds from source
sudo apt-get -y install build-essential automake git xorg-dev libmotif-dev graphicsmagick \
gv libcurl4-openssl-dev shapelib libshp-dev libpcre3-dev libproj-dev libdb-dev python-dev \
libax25-dev libwebp-dev libwebp-dev libgraphicsmagick1-dev festival festival-dev
cd ${BUILDDIR} || return
git clone https://github.com/Xastir/Xastir.git
cd Xastir || return
./bootstrap.sh
mkdir build
cd build || return
../configure
make
sudo make install
sudo make clean
cat >xastir.desktop <<EOF
[Desktop Entry]
Name=Xastir
Comment=X Amateur Station Tracking and Information Reporting
Exec=xastir
Icon=/usr/local/share/xastir/symbols/icon.png
Terminal=false
Type=Application
Categories=Network;HamRadio
Keywords=APRS;AX.25;HamRadio
EOF
sudo mv xastir.desktop /usr/share/applications/
}
##################################
# KM4ACK EES
##################################
EES() {
#install PHP7.4 if not installed
#this will also install apache2
if ! hash php7.4 2>/dev/null; then
sudo apt install -y php7.4
fi
#install ghostwriter if needed
#this is used to mod the new index.html
#page. 20200229
if ! hash ghostwriter 2>/dev/null; then
sudo apt-get install -y ghostwriter
fi
#Install the KM4ACK EES
cd ${DIR} || return
git clone https://github.com/km4ack/EES-LITE.git
cd ${DIR}/EES-LITE || return
#git dev branch of code
git checkout dev
sudo cp -r ${DIR}/EES-LITE/* /var/www/html/
rm -rf "${DIR}/EES-LITE"
cd /var/www/html || return
sudo chmod +x /var/www/html/firstrun
sudo /var/www/html/./firstrun
sudo sed -i "s/N0CALL/${CALL}/" /var/www/html/config.php
sudo sed -i 's/REMINDER\ FOR\ OPERATOR\ TO\ DO\ SOMETHING/ENABLE\ AUTO\ POST\ REPLY\ IN\ CRON/' /var/www/html/config.php
cd ${DIR} || return
#Change Pat Winlink port so it won't interfer with the EES
sed -i 's/:8080/:5000/' ${XDG_CONFIG_HOME}/pat/config.json
sed -i 's/PORT=8080/PORT=5000/' ${HOME}/patmenu2/config
sudo killall pat
sudo systemctl start pat@${WHO}
#Move info.markdown from EES folder to Documents
sudo mv /var/www/html/info.markdown ${HOME}/Documents/
sudo chown ${WHO}:${WHO} ${HOME}/Documents/info.markdown
#move info.html to pi documents folder
sudo cp /var/www/html/index.html ${HOME}/Documents/info.html
sudo chown ${WHO}:${WHO} ${HOME}/Documents/info.html
#move script to be run by cron to bin dir
sudo mv /var/www/html/webcopy ${HOME}/bin/
sudo chown ${WHO}:${WHO} ${HOME}/bin/webcopy
sudo chmod +x ${HOME}/bin/webcopy
#set up cron job for EES
echo "#-----Start EES Server Options------" >>${TEMPCRON}
echo "#Move EES email to Pat Winlink Outbox" >>${TEMPCRON}
echo "*/1 * * * * /var/www/html/movetopat" >>${TEMPCRON}
echo " " >>${TEMPCRON}
echo "#Auto post replies for EES server" >>${TEMPCRON}
echo "#Default is off. Activate by removing # on line below" >>${TEMPCRON}
echo "#*/1 * * * * /var/www/html/autopostreply" >>${TEMPCRON}
echo "#Line below moves info.html to index.html when modified" >>${TEMPCRON}
echo "*/1 * * * * ${HOME}/bin/webcopy" >>${TEMPCRON}
echo "#-----End EES Server Options------" >>${TEMPCRON}
}
##################################
# Pi-APRS
##################################
PI-APRS() {
cd ${HOME} || return
git clone https://github.com/km4ack/Pi-APRS.git
cat <<EOF > /run/user/$UID/piaprs.desktop
[Desktop Entry]
Name=Pi-APRS
GenericName=Pi-ARPS by KM4ACK
Comment=Pi-APRS by KM4ACK
Exec=/home/`whoami`/Pi-APRS/pi-aprs
Icon=/home/`whoami`/Pi-APRS/ISS.png
Terminal=true
Type=Application
Categories=HamRadio;
EOF
sudo cp /run/user/$UID/piaprs.desktop /usr/share/applications/
}
##################################
# HamClock Small
##################################
SMALL() {
sudo apt-get -y install make g++ libx11-dev
cd ${DIR} || return
curl -o ESPHamClock.zip http://www.clearskyinstitute.com/ham/HamClock/ESPHamClock.zip
unzip ESPHamClock.zip
rm ESPHamClock.zip
cd ESPHamClock || return
sudo make -j 4 hamclock-800x480
sudo chmod +s hamclock-800x480
sudo mv hamclock-800x480 /usr/local/bin/hamclock
rm -rf "${DIR}/ESPHamClock"
cat >${HOME}/Downloads/hamclock.desktop <<EOF
[Desktop Entry]
Name=HamClock
GenericName=Ham Clock
Comment=Ham Clock
Exec=hamclock
Icon=/usr/share/icons/Adwaita/scalable/apps/preferences-system-time-symbolic.svg
Terminal=false
Type=Application
Categories=HamRadio;
EOF
sudo mv ${HOME}/Downloads/hamclock.desktop /usr/share/applications/
}
##################################
# HamClock Large
##################################
LARGE() {
sudo apt-get -y install make g++ libx11-dev
cd ${DIR} || return
curl -o ESPHamClock.zip http://www.clearskyinstitute.com/ham/HamClock/ESPHamClock.zip
unzip ESPHamClock.zip
rm ESPHamClock.zip
cd ESPHamClock || return
sudo make -j 4 hamclock-1600x960
sudo chmod +s hamclock-1600x960
sudo mv hamclock-1600x960 /usr/local/bin/hamclock
rm -rf "${DIR}/ESPHamClock"
cat >${HOME}/Downloads/hamclock.desktop <<EOF
[Desktop Entry]
Name=HamClock
GenericName=Ham Clock
Comment=Ham Clock
Exec=hamclock
Icon=/usr/share/icons/Adwaita/scalable/apps/preferences-system-time-symbolic.svg
Terminal=false
Type=Application
Categories=HamRadio;
EOF
sudo mv ${HOME}/Downloads/hamclock.desktop /usr/share/applications/
}
##################################
# Gpredict
##################################
GPREDICT() {
sudo apt install -y gpredict
}
##################################
# TQSL
##################################
TQSL() {
sudo apt install -y cmake g++ libexpat1-dev libssl-dev libdb++-dev libcurl4-openssl-dev libwxgtk3.0-gtk3-dev
cd ${BUILDDIR} || return
CUR=$(curl -s http://www.arrl.org/tqsl-download | grep "for Linux" | sed 's/.*TQSL //' | awk '{print $1}')
wget http://www.arrl.org/tqsl/tqsl-${CUR}.tar.gz
tar -xzvf tqsl-${CUR}.tar.gz
rm "tqsl-${CUR}.tar.gz"
cd tqsl-${CUR} || return
cmake .
make
sudo make install
sudo make clean
sudo cp ${BUILDDIR}/tqsl-${CUR}/apps/tqsl.desktop /usr/share/applications/
}
##################################
# XLOG
##################################
#xlog removed due to xlog bug. - https://github.com/km4ack/pi-build/issues/215
#This code left so BAP can support it again once the bug is resolved.
XLOG() {
#verify hamlib installed
if ! hash rigctld 2>/dev/null; then
cat <<EOF >${HOME}/Desktop/XLOG.txt
Xlog could not be installed because hamlib
wasn't found on the system. Use the build
a pi script to install hamlib and then try
installing xlog again.
EOF
else
TARXLOG=$(curl -s https://download.savannah.nongnu.org/releases/xlog/ |
grep 2.[0-9].[0-9][0-9].tar | sort | tail -1 | sed 's/.*xlog/xlog/' | sed 's/.sig.*$//')
DIRXLOG=$(echo ${TARXLOG} | sed 's/.tar.gz//')
cd ${HOME} || return
sudo apt-get install -y libgtkgl2.0-dev libusb-1.0-0-dev
wget https://download.savannah.nongnu.org/releases/xlog/${TARXLOG}
tar -xzvf ${TARXLOG}
rm ${TARXLOG}
cd ${DIR}XLOG || return
./configure
make
sudo make install
cd ${HOME} || return
rm -rf "${DIR}XLOG"
fi
}
##################################
# HAMRS
##################################
HAMRS() {
#move any existing hamrs files that might get in the way - https://github.com/km4ack/pi-build/issues/288
HAMRSCHECK=$(ls ~/Downloads/ | grep hamrs-)
if [ -n $HAMRSCHECK ]; then
echo "moving old hamrs file(s)"
mkdir -p $HOME/Downloads/old-hamrs
mv $HOME/Downloads/hamrs* $HOME/Downloads/old-hamrs
fi
cd ${HOME}/Downloads
DL=$(curl https://www.hamrs.app | grep armv7 | sed 's/.*href="//;s/".*//')
wget ${DL}
HAMRS=$(ls | grep hamrs-)
mv ${HAMRS} hamrs
chmod +x hamrs
sudo mv hamrs /usr/local/bin/
#following four lines added to resolve issue #345
sudo apt install -y fuse
sudo modprobe fuse
sudo groupadd fuse
sudo usermod -a -G fuse pi
#as of Feb 2022 there is no 64 bit version of HAMRS. The following will allow it to run
if [ `getconf LONG_BIT` = '64' ]; then
sudo dpkg --add-architecture armhf
sudo apt-get update
sudo apt install -y libasound2:armhf zlib1g-dev:armhf fuse:armhf libglib2.0-0:armhf libnss3:armhf libatk1.0-0:armhf \
libatk-bridge2.0-0:armhf libx11-xcb1:armhf libgdk-pixbuf-2.0-0:armhf libgtk-3-0:armhf libdrm2:armhf libgbm1:armhf
fi
#create menu item and download icon
cat >${HOME}/Downloads/hamrs.desktop <<EOF
[Desktop Entry]
Name=HAMRS
Comment=POTA Logging Software
Exec=/usr/local/bin/hamrs --no-sandbox
Icon=/usr/share/pixmaps/hamrs-logo.png
Terminal=false
Type=Application
Categories=HamRadio
EOF
sudo mv ${HOME}/Downloads/hamrs.desktop /usr/share/applications/
cd $HOME/Downloads
wget https://github.com/km4ack/pi-scripts/raw/master/hamrs-logo.png
sudo mv $HOME/Downloads/hamrs-logo.png /usr/share/pixmaps/hamrs-logo.png
}
##################################
# Grid-Calc
##################################
GRIDCALC(){
sudo apt install -y wwl bc
cd $HOME/bin
wget https://raw.githubusercontent.com/km4ack/pi-scripts/master/grid-calc
chmod +x $HOME/bin/grid-calc
$HOME/bin/grid-calc
}
##################################
# Repeater-Start
##################################
REPEAT(){
sudo apt install -y gir1.2-osmgpsmap-1.0 gir1.2-geoclue-2.0 libosmgpsmap-1.0-1
REPEAT_LATEST=$(curl -s https://sourceforge.net/projects/repeater-start/files/ | grep all.deb | head -1 | sed 's/.*repeater/repeater/;s/".*//')
cd ${HOME}/Downloads
wget https://sourceforge.net/projects/repeater-start/files/$REPEAT_LATEST
sudo dpkg -i $REPEAT_LATEST
}
##################################
# JTDX
##################################
#This code is left in place but no option is given during inital
#run or update because the jtdx website is down.
#see https://github.com/km4ack/pi-build/issues/153
#14OCT2020 KM4ACK
JTDX() {
cd ${HOME}
#curl won't work here. Returns "forbidden" Use wget instead
wget -qO jtdx.txt https://www.jtdx.tech/en/
VER=$(grep armhf.deb jtdx.txt | awk '{print $2}' | sed 's/"//g' | sed 's/href=\/downloads\/Linux\///')
rm jtdx.txt
wget https://www.jtdx.tech/downloads/Linux/${VER}
sudo dpkg -i ${VER}
sudo apt-get --fix-broken -y install
sudo dpkg -i ${VER}
rm ${VER}
}