pull/73/head
KM4ACK 2020-06-14 09:06:04 -05:00
rodzic df4976442a
commit 533ed06863
1 zmienionych plików z 452 dodań i 488 usunięć

Wyświetl plik

@ -1,22 +1,60 @@
#!/bin/bash
##################################################################
# #
# # # # # # # ##### # # #
# # # # # # # ## # # # # # #
# # # # # # # # # # # # # #
# ## # # ##### ####### # ## #
# # # # # # # # # # # #
# # # # # # # # # # # #
# # # # # # # # ##### # # #
# #
##################################################################
#####################################################
# DEV NOTES
#####################################################
#add log viewer
#####################################################
#MAIN SCRIPT FOR NEW PI BUILD
#20191210 KM4ACK
#Credit to TB-14 for the inspiration for this script
MYDIR=$HOME/pi-build
DIR=$HOME/temp
mkdir -p $DIR
TEMPCRON=$DIR/tempcron
touch $TEMPCRON
WHO=$(whoami)
RB=$(ls $HOME/.config/ | grep KM4ACK)
DESK=$(printenv | grep DISPLAY)
LOG=$HOME/Documents/mylog.txt
APPLIST=app-list
BUILDLOG=$HOME/Documents/build-log.txt
chmod +x $MYDIR/addon-build-a-pi
MYPATH=$HOME/pi-build
LOGO=$MYPATH/logo.png
RB=$( ls $HOME/.config | grep KM4ACK)
BASE=$MYPATH/base.txt
ADDITIONAL=$MYPATH/additional.txt
UTILITY=$MYPATH/utility.txt
FLSUITE=$MYPATH/flsuite.txt
CONFIG=$MYPATH/config
FUNCTIONS=$MYPATH/functions
TEMPCRON=$MYPATH/cron.tmp
DIR=$MYPATH/temp
WHO=$(whoami)
VERSION=$(cat $MYPATH/changelog | grep version= | sed 's/version=//')
FINISH(){
if [ -f "$BASE" ]; then
rm $BASE
fi
if [ -f "$ADDITIONAL" ]; then
rm $ADDITIONAL
fi
if [ -f "$FLSUITE" ]; then
rm $FLSUITE
fi
if [ -f "$UTILITY" ]; then
rm $UTILITY
fi
}
trap FINISH EXIT
#check for display. can't run from SSH
if [ -z "$DESK" ]
then
cat <<EOF
@ -27,71 +65,13 @@ EOF
exit 0
fi
#put info in build log
echo "###########SYSTEM INFO##############" >> $BUILDLOG
cat /etc/os-release >> $BUILDLOG
uname -a >> $BUILDLOG
free -m | grep Mem: | awk '{ print $2 }' >> $BUILDLOG
echo "###########END SYSTEM INFO##############" >> $BUILDLOG
#Backup cron just in case script is run twice
crontab -l > $TEMPCRON
#add part 2 to be called from cron at boot
echo "@reboot sleep 20 && export DISPLAY=:0 && lxterminal -e $HOME/pi-build/addon-build-a-pi" >> $TEMPCRON
#create primary log
touch $LOG
#create buld log
touch $BUILDLOG
if [ $WHO = "root" ]
then
echo "No need for sudo with this script"
exit 0
fi
if [ -z "$RB" ]
then
echo
else
cat <<EOF
It looks like you have run this script before
It is only designed to be run one time
It may cause issues if you try to run multiple times
Press CRTL+C to exit or
EOF
read -n 1 -s -r -p "Press any key to continue"
fi
#install YAD & jq as needed
clear;echo;echo
read -p "What is your call sign? " CALL
touch $MYDIR/callsign.txt
echo $CALL > $MYDIR/callsign.txt
cat <<EOF
Please stand by while we grab a few updates
This may take a while if you haven't already
updated the system. You will be presented with
a pop up window shortly to select which
applications you wish to install.
EOF
read -n 1 -s -r -p "Press any key to begin"
echo "#######################################"
echo "# Updating repository & installing #"
echo "# a few needed items before we begin #"
echo "#######################################"
sudo apt-get update
sudo apt-get -y upgrade
sudo apt -y full-upgrade
touch $HOME/.config/KM4ACK
#create bin dir and add to path
mkdir -p $HOME/bin
echo "export PATH=$PATH:$HOME/bin" >> $HOME/.bashrc
#grab add-wifi tool
cd $HOME/bin
wget https://raw.githubusercontent.com/km4ack/pi-scripts/master/add-wifi
chmod +x add-wifi
cd $HOME
if ! hash yad 2>/dev/null; then
sudo apt install -y yad
fi
@ -99,456 +79,440 @@ cd $HOME
sudo apt install -y jq
fi
clear;echo;echo
cat <<EOF
Decision time......
The FLDIGI suite can be built from source or downloaded from the
repository. Building from source will give you the very latest and
greatest FLDIGI suite. It will also add roughly an hour to the
build time of this script. If you choose to build from
source, many of FLDIGI tools will be installed. The
tools this script includes is FLRIG, FLDIGI, FLARQ, FLMSG, FLAMP.
#####################################
# Check if run before
#####################################
if [ -n "$RB" ]; then
bash $MYPATH/update &
exit
fi
#####################################
# Check user is pi
#####################################
if [ "$WHO" != 'pi' ]; then
yad --form --width=500 --text-align=center --center --title="Build-a-Pi" --text-align=center \
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
--text="<b>USER NAME IS NOT PI</b>\rThis script is designed to be run as the pi user. Please set the user name to pi \
and try again. You can change the user name after the build is complete but some configuration may not work \
as expected" \
--button=gtk-close
exit 1
fi
#####################################
# notice to user
#####################################
cat <<EOF > $MYPATH/intro.txt
This script takes approximately 4 hours to complete
if you choose to install everything. If you find it
helpful please consider a donation to encourage future
development.
https://paypal.me/km4ack
EOF
read -p "Build FL suite from source? y/n " FLS
if [ $FLS = "y" ] || [ $FLS = "Y" ]
then
APPLIST=source-app-list
INTRO=$(yad --width=550 --height=250 --text-align=center --center --title="Build-a-Pi" --show-uri \
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
--text-info<$MYPATH/intro.txt \
--button="Continue":2 > /dev/null 2>&1)
BUT=$?
if [ $BUT = 252 ]; then
rm $MYPATH/intro.txt
exit
fi
##########################################
MAIN () {
yad --height=600 --width=400 --center --list --checklist --column=Install --column=App --separator="," --text "Select the apps you wish to install." --title="Build-a-Pi by KM4ACK" --button="Exit:1" --button="Install Selected:2" < $MYDIR/$APPLIST > $MYDIR/appchoices
BUTTON=$?
if [ $BUTTON = "3" ]
then
yad --width=500 --height=500 --center --button="Close:1" --wrap --text-info < info.txt
MAIN
elif [ $BUTTON = "252" ]
then
exit 0
elif [ $BUTTON = "1" ]
then
exit 0
rm $MYPATH/intro.txt
#####################################
# Get User Call
#####################################
CALL(){
INFO=$(yad --form --width=420 --text-align=center --center --title="Build-a-Pi" \
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
--text="<b>version $VERSION</b>" \
--field="Call Sign*" \
--field="<b>* Required</b>":LBL \
--button="Continue":2)
BUT=$?
if [ $BUT = 252 ]; then
exit
fi
}
CALL
CALL=$(echo $INFO | awk -F "|" '{print $1}')
CALL=${CALL^^}
echo $BUTTON
echo "CALL=$CALL" > $CONFIG
cat $MYDIR/appchoices | sed 's/TRUE,//g' | sed 's/,//' | sed 's/$/=yes/' > $MYDIR/config
rm $MYDIR/appchoices
};export -f MAIN
MAIN
############################################################################
source $MYDIR/config
if [ $RTC = "yes" ] > /dev/null 2>&1
then
sudo sed -i 's/#dtparam=i2c_arm=on/dtparam=i2c_arm=on/' /boot/config.txt
touch $HOME/RTC
#NOTE: Reboot is required before we can install. We are simply enabling i2c interface &
#writing an emptyfile that we can check for in the second part of the install
fi
if [ $HOTSPOT = "yes" ] > /dev/null 2>&1
then
echo;echo;echo
echo "##################################################"
echo "##########INSTALLING AUTOHOTSPOT"
echo "##################################################"
sleep 2
cd $DIR
wget https://raw.githubusercontent.com/km4ack/pi-scripts/master/autohotspotN-setup || echo "Can't download autohotspot script" >> $BUILDLOG
chmod +x $DIR/autohotspotN-setup
sudo $DIR/autohotspotN-setup
echo "*/5 * * * * sudo /usr/bin/autohotspotN >/dev/null 2>&1" >> $TEMPCRON
rm $DIR/autohotspotN-setup
echo "Hot spot installed" >> $BUILDLOG
fi
if [ $HSTOOLS = "yes" ] > /dev/null 2>&1
then
echo;echo;echo
echo "##################################################"
echo "##########INSTALLING HOTSPOT TOOLS"
echo "##################################################"
sleep 2
git clone https://github.com/km4ack/hotspot-tools.git $HOME/hotspot-tools
cd $HOME/hotspot-tools
git checkout dev
bash setup
#Verify call not empty
if [ -z "$CALL" ]; then
yad --form --width=420 --text-align=center --center --title="Build-a-Pi" --text-align=center \
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
--text="<b>Call Can't be Blank</b>" \
--button=gtk-ok
CALL
fi
if [ $GPS = "yes" ] > /dev/null 2>&1
then
echo;echo;echo
echo "##################################################"
echo "##########INSTALLING GPS Tools"
echo "##################################################"
cd $DIR
wget https://raw.githubusercontent.com/km4ack/pi-scripts/master/gpsinstall || echo "Can't download GPS Tools" >> $BUILDLOG
chmod +x $DIR/gpsinstall
sudo $DIR/gpsinstall
rm $DIR/gpsinstall
echo "GPS Tools installed" >> $BUILDLOG
#####################################
# Base Apps
#####################################
yad --center --list --checklist --width=600 --height=600 --separator="" \
--image $LOGO --column=Check --column=App --column=Description \
--print-column=2 --window-icon=$LOGO --image-on-top --text-align=center \
--text="<b>Base Applications</b>" --title="Build-a-Pi" \
false "HOTSPOT" "Hot Spot Generator for Portable Ops" \
false "HSTOOLS" "Tools to Manage Hot Spot" \
false "GPS" "GPS Software" \
false "ARDOP" "Modem for HF" \
false "ARDOPGUI" "GUI for ARDOP" \
false "HAMLIB" "Needed for Rig Control" \
false "DIREWOLF" "Software TNC" \
false "AX25" "Data Link Layer Protocol" \
false "PULSE" "Sound Server" \
--button="Exit":1 \
--button="Check All and Continue":3 \
--button="Next":2 > $BASE
BUT=$?
if [ $BUT = 252 ] || [ $BUT = 1 ]; then
exit
fi
if [ $PAT = "yes" ] > /dev/null 2>&1
then
echo;echo;echo
echo "##################################################"
echo "##########INSTALLING PAT WINLINK"
echo "##################################################"
sleep 2
if ! hash pat 2>/dev/null; then
cd $DIR
wget https://github.com/la5nta/pat/releases/download/v0.9.0/pat_0.9.0_linux_armhf.deb || echo "Can't download Pat Winlink" >> $BUILDLOG
sudo dpkg -i $DIR/pat_0.9.0_linux_armhf.deb
pat http &
sudo killall pat
sudo systemctl start pat@$WHO
sudo systemctl enable pat@$WHO
#/usr/bin/pat http &
#sudo killall pat
cd $DIR
wget https://raw.githubusercontent.com/km4ack/patmenu/master/patlogin
bash patlogin
jq '.ax25.rig = '\"my-rig\"'' $HOME/.wl2k/config.json | jq '.ardop.rig = '\"my-rig\"'' | jq '.hamlib_rigs = {'\"my-rig\"': {"address": "127.0.0.1:4532", "network": "tcp"}}' > ~/Desktop/config.json
mv ~/Desktop/config.json ~/.wl2k/config.json
sed -i "s/\"http_addr\": \".*\",/\"http_addr\": \"0.0.0.0:8080\",/" $HOME/.wl2k/config.json
#enable gps in pat is gps=yes
if [ $GPS = "yes" ]
if [ $BUT = 3 ]; then
BASEAPPS=(HOTSPOT HSTOOLS GPS ARDOP ARDOPGUI HAMLIB DIREWOLF AX25 PULSE)
for i in "${BASEAPPS[@]}"
do
echo "$i" >> $BASE
done
fi
#check if hotspot is chosen for install & get info if needed
HS=$(cat $BASE | grep HOTSPOT)
if [ -n "$HS" ]; then
HSINFO(){
#unblock wifi
sudo rfkill unblock all > /dev/null 2>&1
#bring wifi up
sudo ifconfig wlan0 up
#LIST=$(sudo iw dev "wlan0" scan ap-force | egrep "^BSS|SSID:" | grep SSID: | sed 's/SSID://' | awk '{ print $1 }')
#LIST=$(echo $LIST | sed 's/ /|/g')
LIST=$(sudo iw dev "wlan0" scan ap-force | egrep "^BSS|SSID:" | grep SSID: | sed 's/SSID://')
LIST=$(echo "$LIST" | tr '\n' '|')
HSINFO=$(yad --center --form --width=400 --height=400 --separator="|" --item-separator="|" \
--image $LOGO --column=Check --column=App --column=Description \
--window-icon=$LOGO --image-on-top --text-align=center \
--text="<b>HotSpot Information\r\rPlease enter the information\rbelow \
for the Hot Spot\r</b>NOTE: The last field is the password for the hotspot. You will use this password to \
connect to your Pi when it is in hotspot mode <b>This password can only contain letters and numbers</b>" \
--title="Build-a-Pi" \
--field="Home Wifi SSID":CB "$LIST" \
--field="Home Wifi Password" \
--field="Hot Spot Password" \
--button="Exit":1 \
--button="Continue":2 \
--button="Refresh Wifi":3)
BUT=$?
if [ $BUT = 3 ];then
HSINFO #Call HSINFO function
fi
if [ $BUT = 252 ] || [ $BUT = 1 ]; then
exit
fi
#}
#HSINFO
#fi
SHACKSSID=$(echo $HSINFO | awk -F "|" '{print $1}')
SHACKPASS=$(echo $HSINFO | awk -F "|" '{print $2}')
HSPASS=$(echo $HSINFO | awk -F "|" '{print $3}')
#Check password length
if [ -n "$HS" ]; then
COUNT=${#HSPASS}
if [ $COUNT -lt 8 ]
then
sed -i 's/"enable_http": false,/"enable_http": true,/' $HOME/.wl2k/config.json
fi
echo "Pat Winlink installed" >> $BUILDLOG
yad --center --form --width=300 --height=200 --separator="|" \
--image $LOGO --window-icon=$LOGO --image-on-top --text-align=center \
--text="<b>Hotspot password has to be 8-63 characters</b>" --title="Build-a-Pi" \
--button=gtk-ok
HSINFO
fi
fi
if [ $HAMLIB = "yes" ] > /dev/null 2>&1
then
echo;echo;echo
echo "##################################################"
echo "##########INSTALLING RIG CONTROL"
echo "##################################################"
sleep 2
cd $DIR
wget https://sourceforge.net/projects/hamlib/files/hamlib/3.3/hamlib-3.3.tar.gz || echo "Can't download HAMLIB" >> $BUILDLOG
tar -xzf $DIR/hamlib-3.3.tar.gz
rm $DIR/hamlib-3.3.tar.gz
cd $DIR/hamlib-3.3
./configure
make
sudo make install
sudo ldconfig
echo "HAMLIB installed" >> $BUILDLOG
}
HSINFO
fi
if [ $CONKY = "yes" ] > /dev/null 2>&1
then
echo;echo;echo
echo "##################################################"
echo "##########INSTALLING CONKY"
echo "##################################################"
sleep 2
if ! hash conky 2>/dev/null; then
sudo apt install -y conky
fi
sudo apt-get install -y ruby2.3
sudo gem install gpsd_client
sudo gem install maidenhead
cp $MYDIR/conky/.conkyrc $HOME/.conkyrc
mkdir -p $HOME/bin/conky
cp $MYDIR/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
echo "@reboot sleep 20 && export DISPLAY=:0 && /usr/bin/conky" >> $TEMPCRON
echo "CONKY installed" >> $BUILDLOG
echo "SHACKSSID=$SHACKSSID" >> $CONFIG
echo "SHACKPASS=\"$SHACKPASS\"" >> $CONFIG
echo "HSPASS=\"$HSPASS\"" >> $CONFIG
#####################################
# FLSUITE
#####################################
yad --center --list --checklist --width=600 --height=600 --separator="" \
--image $LOGO --column=Check --column=App --column=Description \
--print-column=2 --window-icon=$LOGO --image-on-top --text-align=center \
--text="<b>FLDIGI Suite</b>" --title="Build-a-Pi" \
false "FLRIG" "Rig Contol GUI" \
false "FLDIGI" "Digital Software" \
false "FLAMP" "File Transfer Program" \
false "FLNET" "Net Control Software" \
false "FLMSG" "Forms Manager" \
false "FLWRAP" "File Encapsulation" \
--button="Exit":1 \
--button="Check All and Continue":3 \
--button="Next":2 > $FLSUITE
BUT=$?
if [ $BUT = 252 ] || [ $BUT = 1 ]; then
exit
fi
if [ $BUT = 3 ]; then
FLAPPS=(FLRIG FLDIGI FLAMP FLNET FLMSG FLWRAP)
for i in "${FLAPPS[@]}"
do
echo "$i" >> $FLSUITE
done
fi
if [ $FL_Suite = "yes" ] > /dev/null 2>&1
then
echo;echo;echo
echo "##################################################"
echo "##########INSTALLING FLDIGI SUITE"
echo "##################################################"
sleep 2
chmod +x $HOME/pi-build/flsuite
$HOME/pi-build/flsuite
echo "FLDIGI SUITE installed" >> $BUILDLOG
#####################################
# Ham Apps
#####################################
yad --center --list --checklist --width=600 --height=600 --separator="" \
--image $LOGO --column=Check --column=App --column=Description \
--print-column=2 --window-icon=$LOGO --image-on-top --text-align=center \
--text="<b>Ham Applications</b>" --title="Build-a-Pi" \
false "CONKY" "System Information Display" \
false "PI-APRS" "APRS Message Application" \
false "CHIRP" "Program Radios" \
false "GARIM" "File Transfer Program" \
false "PAT" "Radio Email Application" \
false "PAT-MENU" "Control for Pat Winlink" \
false "JS8CALL" "Weak Signal Digital Mode Software" \
false "M0IAX" "Tools for JS8Call Messages" \
false "WSJTX" "Weak Signal Digital Mode Software" \
false "PYQSO" "Logging Software" \
false "CQRLOG" "Logging Software" \
false "EES" "KM4ACK Emergency Email Server" \
false "QSSTV" "Slow Scan TV" \
false "GRIDTRACKER" "Track Grids in WSJTX" \
false "HAMCLOCK" "Clock for Ham Radio Ops" \
false "PROPAGATION" "Propagation Prediction Software" \
false "YAAC" "Yet Another APRS Client" \
false "XASTIR" "APRS Client" \
--button="Exit":1 \
--button="Check All and Continue":3 \
--button="Next":2 > $ADDITIONAL
BUT=$?
if [ $BUT = 252 ] || [ $BUT = 1 ]; then
exit
fi
if [ $FLRIG = "yes" ] > /dev/null 2>&1
then
echo;echo;echo
echo "##################################################"
echo "##########INSTALLING FLRIG"
echo "##################################################"
sleep 2
if ! hash flrig 2>/dev/null; then
sudo apt install -y flrig
echo "FLRIG installed repository" >> $BUILDLOG
fi
if [ $BUT = 3 ]; then
ADDAPPS=(CONKY PI-APRS CHIRP GARIM PAT PAT-MENU JS8CALL M0IAX WSJTX PYQSO \
CQRLOG EES QSSTV GRIDTRACKER HAMCLOCK PROPAGATION YAAC XASTIR)
for i in "${ADDAPPS[@]}"
do
echo "$i" >> $ADDITIONAL
done
fi
if [ $FLDIGI = "yes" ] > /dev/null 2>&1
then
echo;echo;echo
echo "##################################################"
echo "##########INSTALLING FLDIGI"
echo "##################################################"
sleep 2
if ! hash fldigi 2>/dev/null; then
sudo apt install -y fldigi
echo "FLDIGI installed repository" >> $BUILDLOG
fi
#check if hamclock is being installed
HCCHECK=$(cat $ADDITIONAL | grep HAMCLOCK)
if [ -n "$HCCHECK" ]; then
HC=$(yad --form --width=420 --text-align=center --center --title="Build-a-Pi" \
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
--text="<b>version $VERSION</b>" \
--field="Ham Clock Size":CB "SMALL|LARGE" \
--button="Continue":2)
HC=$(echo $HC | awk -F "|" '{print $1}')
sed -i 's/HAMCLOCK//' $ADDITIONAL
echo $HC >> $ADDITIONAL
fi
if [ $FLAMP = "yes" ] > /dev/null 2>&1
then
echo;echo;echo
echo "##################################################"
echo "##########INSTALLING FLAMP"
echo "##################################################"
sleep 2
if ! hash flamp 2>/dev/null; then
sudo apt install -y flamp
echo "FLAMP installed repository" >> $BUILDLOG
fi
PATCHECK=$(cat $ADDITIONAL | grep PAT)
if [ -n "$PATCHECK" ]; then
INFO=$(yad --form --width=420 --text-align=center --center --title="Build-a-Pi" \
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
--text="<b>version $VERSION</b>" \
--field="Six Character Grid Square" \
--field="Winlink Password" \
--field="<b>Password is case sensitive</b>":LBL \
--button="Continue":2)
GRID=$(echo $INFO | awk -F "|" '{print $1}')
GRID=${GRID^^}
WL2KPASS=$(echo $INFO | awk -F "|" '{print $2}')
echo "GRID=$GRID" >> $CONFIG
echo "WL2KPASS=\"$WL2KPASS\"" >> $CONFIG
fi
if [ $FLMSG = "yes" ] > /dev/null 2>&1
then
echo;echo;echo
echo "##################################################"
echo "##########INSTALLING FLMSG"
echo "##################################################"
sleep 2
if ! hash flmsg 2>/dev/null; then
sudo apt install -y flmsg
echo "FLMSG installed repository" >> $BUILDLOG
fi
#####################################
# Utilities
#####################################
yad --center --list --checklist --width=600 --height=600 --separator="" \
--image $LOGO --column=Check --column=App --column=Description \
--print-column=2 --window-icon=$LOGO --image-on-top --text-align=center \
--text="<b>Utilities</b>" --title="Build-a-Pi" \
false "DIPOLE" "Dipole Calculator" \
false "CALLSIGN" "Call sign lookup" \
false "TEMPCONVERT" "Temperature Converter" \
false "GPARTED" "Disk Utility Tool" \
false "SHOWLOG" "Log file viewer" \
--button="Exit":1 \
--button="Check All and Continue":3 \
--button="Install Selected":2 > $UTILITY
BUT=$?
if [ $BUT = 252 ] || [ $BUT = 1 ]; then
exit
fi
if [ $ARDOPC = "yes" ] > /dev/null 2>&1
then
echo;echo;echo
echo "##################################################"
echo "##########INSTALLING PIARDOPC"
echo "##################################################"
sleep 2
mkdir -p $HOME/ardop
cd $HOME/ardop
wget https://www.cantab.net/users/john.wiseman/Downloads/Beta/piardopc || echo "Can't download PIARDOPC" >> $BUILDLOG
sudo chmod +x $HOME/ardop/piardopc
echo "PIARDOPC installed" >> $BUILDLOG
if [ $BUT = 3 ]; then
UTILAPPS=(DIPOLE CALLSIGN TEMPCONVERT GPARTED SHOWLOG)
for i in "${UTILAPPS[@]}"
do
echo "$i" >> $UTILITY
done
fi
if [ $ARDOPGUI = "yes" ] > /dev/null 2>&1
then
echo;echo;echo
echo "##################################################"
echo "##########INSTALLING ARDOP-GUI"
echo "##################################################"
sleep 2
mkdir -p $HOME/ardop
cd $HOME/ardop
wget https://www.cantab.net/users/john.wiseman/Downloads/Beta/piARDOP_GUI || echo "Can't download piARDOP_GUI" >> $BUILDLOG
sudo chmod +x $HOME/ardop/piARDOP_GUI
cat > ardopgui.desktop <<EOF
[Desktop Entry]
Name=ARDOP GUI
GenericName=ARDOP GUI
Comment=Graphical User Interface for ARDOP modem
Exec=$HOME/ardop/piARDOP_GUI
Terminal=false
Type=Application
Categories=Network;HamRadio;
EOF
sudo mv ardopgui.desktop /usr/share/applications/
FILE=$HOME/.config/G8BPQ/ARDOP_GUI.conf
mkdir -p $HOME/.config/G8BPQ
touch $FILE
echo "[General]" >> $FILE
echo "Host=local" >> $FILE
echo "Port=8515" >> $FILE
echo "ARDOP-GUI installed" >> $BUILDLOG
fi
if [ $PATMENU = "yes" ] > /dev/null 2>&1
then
echo;echo;echo
echo "##################################################"
echo "##########INSTALLING Pat Menu"
echo "##################################################"
sleep 2
git clone https://github.com/km4ack/patmenu.git $HOME/patmenu && bash $HOME/patmenu/setup || echo "Can't download Pat Menu" >> $BUILDLOG
echo "Pat Menu installed" >> $BUILDLOG
cat > patmenu.desktop <<EOF
[Desktop Entry]
Name=Pat Menu
GenericName=Amateur Radio Digital Modem
Comment=Amateur Radio Sound Card Communications
Exec=$HOME/patmenu/patmenu-new
Icon=$HOME/patmenu/pat-logo.png
Terminal=true
Type=Application
Categories=Network;HamRadio;
EOF
sudo mv patmenu.desktop /usr/share/applications/
fi
if [ $DIREWOLF = "yes" ] > /dev/null 2>&1
then
echo;echo;echo
echo "##################################################"
echo "##########INSTALLING DIREWOLF"
echo "##################################################"
sleep 2
cd $HOME
git clone https://www.github.com/wb2osz/direwolf || echo "Can't download DIREWOLF" >> $BUILDLOG
cd $HOME/direwolf
sudo apt-get install -y libasound2-dev
make
sudo make install
make install-conf
sed -i "s/N0CALL/$CALL/" "$HOME/direwolf.conf"
sed -i 's/# ADEVICE plughw:1,0/ADEVICE plughw:1,0/' $HOME/direwolf.conf
echo "DIREWOLF installed" >> $BUILDLOG
fi
if [ $AX25 = "yes" ] > /dev/null 2>&1
then
echo;echo;echo
echo "##################################################"
echo "##########INSTALLING AX25"
echo "##################################################"
sleep 2
sudo apt-get install -y ax25-tools
echo "wl2k "$CALL" 1200 255 7 Winlink" | sudo tee -a /etc/ax25/axports
sudo apt-get install -y ax25-apps
echo "AX25 tools installed" >> $BUILDLOG
fi
if [ $JS8CALL = "yes" ] > /dev/null 2>&1
then
echo;echo;echo
echo "##################################################"
echo "##########INSTALLING JS8CALL"
echo "##################################################"
sleep 2
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 $JS8LATE || echo "Can't Download JS8Call" >> $BUILDLOG
sudo dpkg -i $JS8PKG
sudo apt-get --fix-broken -y install
sudo dpkg -i $JS8PKG
echo "JS8Call installed" >> $BUILDLOG
fi
if [ $PULSE = "yes" ] > /dev/null 2>&1
then
echo;echo;echo
echo "##################################################"
echo "##########INSTALLING PULSE AUDIO"
echo "##################################################"
sleep 2
sudo apt-get install -y pulseaudio
sudo apt-get install -y pavucontrol
echo "Pulse audio installed" >> $BUILDLOG
fi
if [ $M0IAX = "yes" ] > /dev/null 2>&1
then
echo;echo;echo
echo "##################################################"
echo "##########INSTALLING M0IAX TOOLS"
echo "##################################################"
sleep 2
pip3 install gps
pip3 install maidenhead
pip3 install psutil
pip3 install OSGridConverter
cd $HOME/bin
git clone https://github.com/m0iax/JS8CallUtilities_V2.git
chmod +x $HOME/bin/JS8CallUtilities_V2/gpsdGPSListener.py $HOME/bin/JS8CallUtilities_V2.git/JS8CallUtils_v2.py
mv $HOME/bin/JS8CallUtilities_V2/* $HOME/bin
rm -rf JS8CallUtilities_V2
cat > js8tools.desktop <<EOF
[Desktop Entry]
Name=M0IAX JS8 Tools
GenericName=M0IAX JS8 Tools
Comment=GPS & Message Tool for JS8Call
Exec=$HOME/bin/JS8CallUtils_v2.py
Terminal=false
Type=Application
Categories=Network;HamRadio;
EOF
sudo mv js8tools.desktop /usr/share/applications/
echo "MOIAX tools installed" >> $BUILDLOG
fi
if [ $WSJTX = "yes" ] > /dev/null 2>&1
then
echo;echo;echo
echo "##################################################"
echo "##########INSTALLING WSJTX"
echo "##################################################"
sleep 2
cd $DIR
wget --no-check-certificate https://physics.princeton.edu/pulsar/k1jt/wsjtx_2.1.0_armhf.deb || echo "Can't download WSJTX" >> $BUILDLOG
sudo dpkg -i wsjtx_2.1.0_armhf.deb
sudo apt-get --fix-broken -y install
sudo dpkg -i wsjtx_2.1.0_armhf.deb
echo "WSJTX installed" >> $BUILDLOG
fi
#backup crontab
crontab -l > $TEMPCRON
echo "@reboot sleep 10 && export DISPLAY=:0 && $MYPATH/.complete" >> $TEMPCRON
$MYPATH/.funfacts &
#upgrade the system
sudo apt-get upgrade
sudo apt -y full-upgrade
#add virtual sound card link for pulse audio
#20191228
cd $DIR
cat > tempsound <<EOF
pcm.pulse {
type pulse
}
ctl.pulse {
type pulse
}
EOF
sudo chown root:root tempsound
sudo mv tempsound /etc/asound.conf
#End 20191228 edits
#mod sound card for Buster May 2020
#so it will always load as card #2
cd $DIR
cat > tempsound <<EOF
#Internal sound
options snd-bcm2835 index=0
#USB soundcard
options snd-usb-audio index=2
EOF
sudo chown root:root tempsound
sudo mv tempsound /etc/modprobe.d/alsa.conf
#install ham radio menu
sudo apt-get install -y extra-xdg-menus
#setup bin dir and put in path
mkdir -p $HOME/bin
echo "export PATH=$PATH:$HOME/bin" >> $HOME/.bashrc
#set update script to exec
chmod +x $MYPATH/update $MYPATH/build-a-pi
#create build-a-pi menu item
cd $MYPATH
cat > build-a-pi.desktop <<EOF
[Desktop Entry]
Name=Build-a-Pi
GenericName=KM4ACK Build-a-Pi
Comment=Build-a-Pi App Manager
Exec=$HOME/pi-build/update
Icon=$HOME/pi-build/logo.png
Terminal=true
Type=Application
Categories=Settings;DesktopSettings;GTK;X-LXDE-Settings;
EOF
sudo mv build-a-pi.desktop /usr/share/applications/
#####################################
# Install Base Apps
#####################################
touch $HOME/.config/KM4ACK
while read i ; do
source $FUNCTIONS/base.function
$i
done < $BASE
#####################################
# Install FLSUITE
#####################################
source $FUNCTIONS/flsuite.function
#perform memory increase if needed
CHECKFL=$(cat $MYPATH/flsuite.txt)
if [ -n "$CHECKFL" ]; then
FLSTART
fi
touch $HOME/.config/KM4ACK
while read i ; do
source $FUNCTIONS/flsuite.function
$i
done < $FLSUITE
source $FUNCTIONS/flsuite.function
#Perform memory reset if needed
if [ -n "$CHECKFL" ]; then
FLSTOP
fi
#####################################
# Install ADDITIONAL Apps
#####################################
while read i ; do
source $FUNCTIONS/additional.function
$i
done < $ADDITIONAL
#####################################
# Install KM4ACK Utilites
#####################################
while read i ; do
source $FUNCTIONS/utility.function
$i
done < $UTILITY
#####################################
# END CLEANUP
#####################################
#Remove temp files
rm $BASE $ADDITIONAL $UTILITY $FLSUITE > /dev/null 2>&1
rm -rf $DIR > /dev/null 2>&1
rm -rf $HOME/Downloads/* > /dev/null 2>&1
sudo apt -y autoremove
#restore crontab
crontab $TEMPCRON
rm $TEMPCRON
#reboot when done
yad --width=400 --height=200 --title="Reboot" --image $LOGO \
--text-align=center --skip-taskbar --image-on-top \
--wrap --window-icon=$LOGO \
--undecorated --text="<big><big><big><b>Build Finished \rReboot Required</b></big></big></big>\r\r" \
--button="Reboot Now":0 \
--button="Exit":1
BUT=$(echo $?)
rm -rf $DIR
#clean up downloads dir
rm -rf $HOME/Downloads/*
echo;echo;echo "rebooting in 5 seconds"
sleep 5
if [ $BUT = 0 ]; then
echo rebooting
sudo reboot
elif [ $BUT = 1 ]; then
exit
fi