| 
									
										
										
										
											2016-04-01 16:55:46 +00:00
										 |  |  | #!/bin/bash
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ##################################################################################### | 
					
						
							|  |  |  | #                                  ADS-B RECEIVER                                   # | 
					
						
							|  |  |  | ##################################################################################### | 
					
						
							|  |  |  | #                                                                                   # | 
					
						
							|  |  |  | # This script is not meant to be executed directly.                                 # | 
					
						
							|  |  |  | # Instead execute install.sh to begin the installation process.                     # | 
					
						
							|  |  |  | #                                                                                   # | 
					
						
							|  |  |  | # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # | 
					
						
							|  |  |  | #                                                                                   # | 
					
						
							| 
									
										
										
										
											2016-12-28 21:39:55 +00:00
										 |  |  | # Copyright (c) 2016, Joseph A. Prochazka & Romeo Golf                              # | 
					
						
							| 
									
										
										
										
											2016-04-01 16:55:46 +00:00
										 |  |  | #                                                                                   # | 
					
						
							|  |  |  | # Permission is hereby granted, free of charge, to any person obtaining a copy      # | 
					
						
							|  |  |  | # of this software and associated documentation files (the "Software"), to deal     # | 
					
						
							|  |  |  | # in the Software without restriction, including without limitation the rights      # | 
					
						
							|  |  |  | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell         # | 
					
						
							|  |  |  | # copies of the Software, and to permit persons to whom the Software is             # | 
					
						
							|  |  |  | # furnished to do so, subject to the following conditions:                          # | 
					
						
							|  |  |  | #                                                                                   # | 
					
						
							|  |  |  | # The above copyright notice and this permission notice shall be included in all    # | 
					
						
							|  |  |  | # copies or substantial portions of the Software.                                   # | 
					
						
							|  |  |  | #                                                                                   # | 
					
						
							|  |  |  | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR        # | 
					
						
							|  |  |  | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,          # | 
					
						
							|  |  |  | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE       # | 
					
						
							|  |  |  | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER            # | 
					
						
							|  |  |  | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,     # | 
					
						
							|  |  |  | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE     # | 
					
						
							|  |  |  | # SOFTWARE.                                                                         # | 
					
						
							|  |  |  | #                                                                                   # | 
					
						
							|  |  |  | # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | ### VARIABLES | 
					
						
							| 
									
										
										
										
											2016-04-01 16:55:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-22 17:14:28 +00:00
										 |  |  | PROJECT_ROOT_DIRECTORY="$PWD" | 
					
						
							| 
									
										
										
										
											2016-12-28 21:39:55 +00:00
										 |  |  | RECEIVER_BASH_DIRECTORY="${PROJECT_ROOT_DIRECTORY}/bash" | 
					
						
							| 
									
										
										
										
											2016-12-29 18:27:03 +00:00
										 |  |  | RECEIVER_BUILD_DIRECTORY="${PROJECT_ROOT_DIRECTORY}/build" | 
					
						
							| 
									
										
										
										
											2016-12-30 21:31:34 +00:00
										 |  |  | DECODER_BUILD_DIRECTORY="${RECEIVER_BUILD_DIRECTORY}/ogn" | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | DECODER_NAME="RTLSDR-OGN" | 
					
						
							| 
									
										
										
										
											2016-12-22 11:18:37 +00:00
										 |  |  | DECODER_DESC="is the Open Glider Network decoder which focuses on tracking aircraft equipped with FLARM, FLARM-compatible devices or OGN tracker" | 
					
						
							| 
									
										
										
										
											2016-12-29 17:36:39 +00:00
										 |  |  | DECODER_GITHUB="https://github.com/glidernet/ogn-rf" | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | DECODER_WEBSITE="http://wiki.glidernet.org" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  | DECODER_SERVICE_SCRIPT_NAME="rtlsdr-ogn" | 
					
						
							|  |  |  | DECODER_SERVICE_SCRIPT_PATH="/etc/init.d/${DECODER_SERVICE_SCRIPT_NAME}" | 
					
						
							|  |  |  | DECODER_SERVICE_SCRIPT_CONFIG="/etc/${DECODER_SERVICE_SCRIPT_NAME}.conf" | 
					
						
							|  |  |  | DECODER_SERVICE_SCRIPT_URL="http://download.glidernet.org/common/service/rtlsdr-ogn" | 
					
						
							| 
									
										
										
										
											2016-12-28 21:39:55 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-30 21:10:27 +00:00
										 |  |  | ## INCLUDE EXTERNAL SCRIPTS | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-28 21:39:55 +00:00
										 |  |  | source ${RECEIVER_BASH_DIRECTORY}/variables.sh | 
					
						
							|  |  |  | source ${RECEIVER_BASH_DIRECTORY}/functions.sh | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-30 21:27:32 +00:00
										 |  |  | # Should be moved to functions.sh. | 
					
						
							| 
									
										
										
										
											2016-12-28 21:39:55 +00:00
										 |  |  | function CheckReturnCode { | 
					
						
							| 
									
										
										
										
											2016-12-30 21:27:32 +00:00
										 |  |  |     if [[ $? -eq 0 ]] ; then | 
					
						
							|  |  |  |         echo -e "\t\e[97m [\e[32mDone\e[97m]\e[39m\n" | 
					
						
							|  |  |  |     else | 
					
						
							|  |  |  |         echo -e "\t\e[97m [\e[31mError\e[97m]\e[31m\n" | 
					
						
							|  |  |  |     fi | 
					
						
							| 
									
										
										
										
											2016-12-28 21:39:55 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-30 21:27:32 +00:00
										 |  |  | # Source the automated install configuration file if this is an automated installation. | 
					
						
							|  |  |  | if [[ ${RECEIVER_AUTOMATED_INSTALL} -eq "true" ]] ; then | 
					
						
							|  |  |  |     source ${RECEIVER_CONFIGURATION_FILE} | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-30 21:10:27 +00:00
										 |  |  | ## BEGIN SETUP | 
					
						
							| 
									
										
										
										
											2016-04-01 16:55:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-30 21:27:32 +00:00
										 |  |  | if [[ ${RECEIVER_AUTOMATED_INSTALL} -eq "false" ]] ; then | 
					
						
							|  |  |  |     clear | 
					
						
							|  |  |  |     echo -e "\e[91m  ${RECEIVER_PROJECT_TITLE}" | 
					
						
							|  |  |  | fi | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | echo -e "" | 
					
						
							|  |  |  | echo -e "\e[92m  Setting up ${DECODER_NAME} ...." | 
					
						
							|  |  |  | echo -e "\e[93m----------------------------------------------------------------------------------------------------\e[96m" | 
					
						
							|  |  |  | echo -e "" | 
					
						
							| 
									
										
										
										
											2016-12-28 21:39:55 +00:00
										 |  |  | whiptail --backtitle "${RECEIVER_PROJECT_TITLE}" --title "${DECODER_NAME} Setup" --yesno "${DECODER_NAME} ${DECODER_DESC}. \n\nPlease note that ${DECODER_NAME} requests a dedicated SDR tuner. \n\n${DECODER_WEBSITE} \n\nContinue setup by installing ${DECODER_NAME} ?" 14 78 | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | CONTINUESETUP=$? | 
					
						
							| 
									
										
										
										
											2016-04-01 16:55:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | if [[ $CONTINUESETUP = 1 ]] ; then | 
					
						
							|  |  |  |     # Setup has been halted by the user. | 
					
						
							|  |  |  |     echo -e "\e[91m  \e[5mINSTALLATION HALTED!\e[25m" | 
					
						
							|  |  |  |     echo -e "  Setup has been halted at the request of the user." | 
					
						
							|  |  |  |     echo -e "" | 
					
						
							|  |  |  |     echo -e "\e[93m----------------------------------------------------------------------------------------------------" | 
					
						
							|  |  |  |     echo -e "\e[92m  ${DECODER_NAME} setup halted.\e[39m" | 
					
						
							|  |  |  |     echo -e "" | 
					
						
							|  |  |  |     if [[ ! -z ${VERBOSE} ]] ; then | 
					
						
							|  |  |  |         read -p "Press enter to continue..." CONTINUE | 
					
						
							|  |  |  |     fi | 
					
						
							|  |  |  |     exit 1 | 
					
						
							| 
									
										
										
										
											2016-12-14 01:42:31 +00:00
										 |  |  | fi | 
					
						
							| 
									
										
										
										
											2016-04-01 16:55:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-30 21:27:32 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-30 21:10:27 +00:00
										 |  |  | ## ASK FOR DEVICE ASSIGNMENTS | 
					
						
							| 
									
										
										
										
											2016-12-28 21:39:55 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-30 21:10:27 +00:00
										 |  |  | ## CHECK FOR PREREQUISITE PACKAGES | 
					
						
							| 
									
										
										
										
											2016-04-01 16:55:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-29 18:35:42 +00:00
										 |  |  | echo -e "\e[95m  Installing packages needed to fulfill dependencies for ${DECODER_NAME}...\e[97m" | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | echo -e "" | 
					
						
							| 
									
										
										
										
											2016-04-01 16:55:46 +00:00
										 |  |  | CheckPackage git | 
					
						
							|  |  |  | CheckPackage rtl-sdr | 
					
						
							|  |  |  | CheckPackage librtlsdr-dev | 
					
						
							|  |  |  | CheckPackage libusb-1.0-0-dev | 
					
						
							|  |  |  | CheckPackage libconfig-dev | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | CheckPackage libfftw3-dev | 
					
						
							|  |  |  | CheckPackage libjpeg8 | 
					
						
							| 
									
										
										
										
											2016-04-01 16:55:46 +00:00
										 |  |  | CheckPackage libjpeg-dev | 
					
						
							|  |  |  | CheckPackage libconfig9 | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | CheckPackage procserv | 
					
						
							|  |  |  | CheckPackage telnet | 
					
						
							| 
									
										
										
										
											2016-12-29 17:49:18 +00:00
										 |  |  | CheckPackage curl | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | CheckPackage lynx | 
					
						
							| 
									
										
										
										
											2016-12-28 21:39:55 +00:00
										 |  |  | echo -e "" | 
					
						
							| 
									
										
										
										
											2016-04-01 16:55:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-30 21:10:27 +00:00
										 |  |  | ## BLACKLIST UNWANTED RTL-SDR MODULES FROM BEING LOADED | 
					
						
							| 
									
										
										
										
											2016-04-01 16:55:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-29 17:36:39 +00:00
										 |  |  | if [[ ! -f /etc/modprobe.d/rtlsdr-blacklist.conf ]] ; then | 
					
						
							|  |  |  |     echo -e "\e[33m Stopping unwanted kernel modules from being loaded..." | 
					
						
							|  |  |  |     echo -e "\e[37m" | 
					
						
							| 
									
										
										
										
											2016-12-28 21:39:55 +00:00
										 |  |  |     sudo tee /etc/modprobe.d/rtlsdr-blacklist.conf  > /dev/null <<EOF | 
					
						
							| 
									
										
										
										
											2016-04-01 16:55:46 +00:00
										 |  |  | blacklist dvb_usb_rtl28xxu | 
					
						
							|  |  |  | blacklist dvb_usb_v2 | 
					
						
							|  |  |  | blacklist rtl_2830 | 
					
						
							|  |  |  | blacklist rtl_2832 | 
					
						
							|  |  |  | blacklist r820t | 
					
						
							|  |  |  | blacklist rtl2830 | 
					
						
							|  |  |  | blacklist rtl2832 | 
					
						
							|  |  |  | EOF | 
					
						
							| 
									
										
										
										
											2016-12-28 21:39:55 +00:00
										 |  |  | fi | 
					
						
							| 
									
										
										
										
											2016-04-01 16:55:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-30 21:10:27 +00:00
										 |  |  | ## CHECK FOR EXISTING INSTALL AND IF SO STOP IT | 
					
						
							| 
									
										
										
										
											2016-12-19 20:27:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  | if [[ -f ${DECODER_SERVICE_SCRIPT_PATH} ]] ; then | 
					
						
							| 
									
										
										
										
											2016-12-30 21:38:06 +00:00
										 |  |  |     echo -en "\e[33m  Stopping the ${DECODER_NAME} service...\t\t\t\t\t" | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  |     sudo service ${DECODER_SERVICE_SCRIPT_NAME} stop > /dev/null 2>&1 | 
					
						
							| 
									
										
										
										
											2016-12-28 21:39:55 +00:00
										 |  |  |     CheckReturnCode | 
					
						
							| 
									
										
										
										
											2016-12-19 20:27:34 +00:00
										 |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | ### DOWNLOAD AND SET UP THE BINARIES | 
					
						
							| 
									
										
										
										
											2016-04-01 16:55:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-19 20:27:34 +00:00
										 |  |  | # Create build directory if not already present. | 
					
						
							| 
									
										
										
										
											2016-12-29 18:27:03 +00:00
										 |  |  | if [[ ! -d ${DECODER_BUILD_DIRECTORY} ]] ; then | 
					
						
							|  |  |  |     echo -en "\e[33m  Creating build directory \"\e[37m${DECODER_BUILD_DIRECTORY}\e[33m\"...\t" | 
					
						
							|  |  |  |     mkdir ${DECODER_BUILD_DIRECTORY} | 
					
						
							| 
									
										
										
										
											2016-12-28 21:39:55 +00:00
										 |  |  |     CheckReturnCode | 
					
						
							| 
									
										
										
										
											2016-12-19 20:27:34 +00:00
										 |  |  | fi | 
					
						
							| 
									
										
										
										
											2016-12-28 21:39:55 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Enter the build directory. | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  | if [[ ! ${PWD} == ${DECODER_BUILD_DIRECTORY} ]] ; then | 
					
						
							|  |  |  |     echo -en "\e[33m  Entering build directory \"\e[37m${DECODER_BUILD_DIRECTORY}\e[33m\"...\t" | 
					
						
							|  |  |  |     cd ${DECODER_BUILD_DIRECTORY} | 
					
						
							|  |  |  |     CheckReturnCode | 
					
						
							|  |  |  | fi | 
					
						
							| 
									
										
										
										
											2016-12-19 20:27:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  | # Detect CPU Architecture. | 
					
						
							| 
									
										
										
										
											2016-12-29 18:12:00 +00:00
										 |  |  | if [[ -z ${CPU_ARCHITECTURE} ]] ; then | 
					
						
							| 
									
										
										
										
											2016-12-30 21:38:06 +00:00
										 |  |  |     echo -en "\e[33m  Detecting CPU architecture...\t\t\t\t\t\t" | 
					
						
							| 
									
										
										
										
											2016-12-30 20:23:45 +00:00
										 |  |  |     CPU_ARCHITECTURE=`uname -m | tr -d "\n\r" ` | 
					
						
							| 
									
										
										
										
											2016-12-29 18:12:00 +00:00
										 |  |  |     CheckReturnCode | 
					
						
							|  |  |  | fi | 
					
						
							| 
									
										
										
										
											2016-12-29 17:36:39 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  | # Identify the correct binaries to download. | 
					
						
							| 
									
										
										
										
											2016-12-29 17:36:39 +00:00
										 |  |  | case ${CPU_ARCHITECTURE} in | 
					
						
							| 
									
										
										
										
											2016-04-01 16:55:46 +00:00
										 |  |  |     "armv6l") | 
					
						
							|  |  |  |         # Raspberry Pi 1 | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  |         DECODER_BINARY_URL="http://download.glidernet.org/rpi-gpu/rtlsdr-ogn-bin-RPI-GPU-latest.tgz" | 
					
						
							| 
									
										
										
										
											2016-04-01 16:55:46 +00:00
										 |  |  |         ;; | 
					
						
							|  |  |  |     "armv7l") | 
					
						
							| 
									
										
										
										
											2016-12-22 20:43:51 +00:00
										 |  |  |         # Raspberry Pi 2 onwards | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  |         DECODER_BINARY_URL="http://download.glidernet.org/arm/rtlsdr-ogn-bin-ARM-latest.tgz" | 
					
						
							| 
									
										
										
										
											2016-04-01 16:55:46 +00:00
										 |  |  |         ;; | 
					
						
							|  |  |  |     "x86_64") | 
					
						
							|  |  |  |         # 64 Bit | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  |         DECODER_BINARY_URL="http://download.glidernet.org/x64/rtlsdr-ogn-bin-x64-latest.tgz" | 
					
						
							| 
									
										
										
										
											2016-04-01 16:55:46 +00:00
										 |  |  |         ;; | 
					
						
							|  |  |  |     *) | 
					
						
							|  |  |  |         # 32 Bit (default install if no others matched) | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  |         DECODER_BINARY_URL="http://download.glidernet.org/x86/rtlsdr-ogn-bin-x86-latest.tgz" | 
					
						
							| 
									
										
										
										
											2016-04-01 16:55:46 +00:00
										 |  |  |         ;; | 
					
						
							|  |  |  | esac | 
					
						
							| 
									
										
										
										
											2016-12-30 17:26:05 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Attempt to download and extract binaries. | 
					
						
							| 
									
										
										
										
											2016-12-30 20:19:38 +00:00
										 |  |  | if [[ `echo "${DECODER_BINARY_URL}" | grep -c "^http"` -gt 0 ]] ; then | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  |     # Download binaries. | 
					
						
							| 
									
										
										
										
											2016-12-30 21:38:06 +00:00
										 |  |  |     echo -en "\e[33m  Downloading ${DECODER_NAME} binaries for ${CPU_ARCHITECTURE} architecture...\t\t" | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  |     DECODER_BINARY_FILE=`echo ${DECODER_BINARY_URL} | awk -F "/" '{print $NF}' ` | 
					
						
							| 
									
										
										
										
											2016-12-30 20:28:45 +00:00
										 |  |  |     curl -s ${DECODER_BINARY_URL} -o ${DECODER_BUILD_DIRECTORY}/${DECODER_BINARY_FILE} > /dev/null 2>&1 | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  |     CheckReturnCode | 
					
						
							|  |  |  |     # Extract binaries. | 
					
						
							| 
									
										
										
										
											2016-12-30 21:38:06 +00:00
										 |  |  |     echo -en "\e[33m  Extracting ${DECODER_NAME} package \"\e[37m${DECODER_BINARY_FILE}\e[33m\"...\t" | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  |     tar xzf ${DECODER_BINARY_FILE} -C ${DECODER_BUILD_DIRECTORY} > /dev/null 2>&1 | 
					
						
							|  |  |  |     CheckReturnCode | 
					
						
							|  |  |  | else | 
					
						
							| 
									
										
										
										
											2016-12-30 17:26:05 +00:00
										 |  |  |     # Unable to download bimary due to invalid URL. | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  |     echo -e "\e[33m  Error invalid DECODER_BINARY_URL \"${DECODER_BINARY_URL}\"..." | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  | fi | 
					
						
							| 
									
										
										
										
											2016-04-01 16:55:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  | # Change to DECODER work directory for post-build actions. | 
					
						
							| 
									
										
										
										
											2016-12-29 18:27:03 +00:00
										 |  |  | cd ${DECODER_BUILD_DIRECTORY}/rtlsdr-ogn | 
					
						
							| 
									
										
										
										
											2016-12-21 14:28:25 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  | # Create named pipe if required. | 
					
						
							| 
									
										
										
										
											2016-12-21 14:28:25 +00:00
										 |  |  | if [[ ! -p ogn-rf.fifo ]] ; then | 
					
						
							| 
									
										
										
										
											2016-12-30 21:38:06 +00:00
										 |  |  |     echo -en "\e[33m  Creating named pipe...\t\t\t\t\t" | 
					
						
							| 
									
										
										
										
											2016-12-21 14:28:25 +00:00
										 |  |  |     sudo mkfifo ogn-rf.fifo | 
					
						
							| 
									
										
										
										
											2016-12-28 21:39:55 +00:00
										 |  |  |     CheckReturnCode | 
					
						
							| 
									
										
										
										
											2016-12-21 14:28:25 +00:00
										 |  |  | fi | 
					
						
							| 
									
										
										
										
											2016-04-01 16:55:46 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Set file permissions. | 
					
						
							| 
									
										
										
										
											2016-12-30 21:38:06 +00:00
										 |  |  | echo -en "\e[33m  Setting proper file permissions...\t\t\t\t\t" | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  | DECODER_SETUID_BINARIES="gsm_scan ogn-rf rtlsdr-ogn" | 
					
						
							|  |  |  | DECODER_SETUID_COUNT="0" | 
					
						
							|  |  |  | for DECODER_SETUID_BINARY in ${DECODER_SETUID_BINARIES} ; do | 
					
						
							|  |  |  |     DECODER_SETUID_COUNT=$((DECODER_SETUID_COUNT+1)) | 
					
						
							|  |  |  |     sudo chown root ${DECODER_SETUID_BINARY} | 
					
						
							|  |  |  |     sudo chmod a+s  ${DECODER_SETUID_BINARY} | 
					
						
							| 
									
										
										
										
											2016-12-28 21:39:55 +00:00
										 |  |  | done | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  | # And check that the file permissions have been applied. | 
					
						
							|  |  |  | if [[ `ls -l ${DECODER_SETUID_BINARIES} | grep -c "\-rwsr-sr-x"` -eq ${DECODER_SETUID_COUNT} ]] ; then | 
					
						
							|  |  |  |     true | 
					
						
							|  |  |  | else | 
					
						
							| 
									
										
										
										
											2016-12-30 17:26:05 +00:00
										 |  |  |     false | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  | fi | 
					
						
							| 
									
										
										
										
											2016-12-28 21:39:55 +00:00
										 |  |  | CheckReturnCode | 
					
						
							| 
									
										
										
										
											2016-04-01 16:55:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  | # Creat GPU device if required. | 
					
						
							| 
									
										
										
										
											2016-12-21 14:28:25 +00:00
										 |  |  | if [[ ! -c gpu_dev ]] ; then | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  |     # Check if kernel v4.1 or higher is being used. | 
					
						
							| 
									
										
										
										
											2016-12-30 21:38:06 +00:00
										 |  |  |     echo -en "\e[33m  Getting the version of the kernel currently running...\t\t\t" | 
					
						
							| 
									
										
										
										
											2016-12-21 14:28:25 +00:00
										 |  |  |     KERNEL=`uname -r` | 
					
						
							| 
									
										
										
										
											2016-12-28 21:39:55 +00:00
										 |  |  |     KERNEL_VERSION="`echo ${KERNEL} | cut -d \. -f 1`.`echo ${KERNEL} | cut -d \. -f 2`" | 
					
						
							|  |  |  |     CheckReturnCode | 
					
						
							|  |  |  |     if [[ ${KERNEL_VERSION} < 4.1 ]] ; then | 
					
						
							| 
									
										
										
										
											2016-12-21 14:28:25 +00:00
										 |  |  |         # Kernel is older than version 4.1. | 
					
						
							| 
									
										
										
										
											2016-12-30 21:38:06 +00:00
										 |  |  |         echo -en "\e[33m  Executing mknod for older kernels...\e[97m\t\t\t\t\t" | 
					
						
							| 
									
										
										
										
											2016-12-21 14:28:25 +00:00
										 |  |  |         sudo mknod gpu_dev c 100 0 | 
					
						
							|  |  |  |     else | 
					
						
							|  |  |  |         # Kernel is version 4.1 or newer. | 
					
						
							| 
									
										
										
										
											2016-12-30 21:38:06 +00:00
										 |  |  |         echo -en "\e[33m  Executing mknod for newer kernels...\e[97m\t\t\t\t\t" | 
					
						
							| 
									
										
										
										
											2016-12-21 14:28:25 +00:00
										 |  |  |         sudo mknod gpu_dev c 249 0 | 
					
						
							|  |  |  |     fi | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  |     CheckReturnCode | 
					
						
							| 
									
										
										
										
											2016-04-01 16:55:46 +00:00
										 |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-30 21:10:27 +00:00
										 |  |  | ### ASSIGN RTL-SDR DONGLE FOR RTL-SDR OGN... | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  | # Potentially obselse tuner detection code. | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | # Check for multiple tuners... | 
					
						
							| 
									
										
										
										
											2016-12-22 20:21:37 +00:00
										 |  |  | TUNER_COUNT=`rtl_eeprom 2>&1 | grep -c "^\s*[0-9]*:\s"` | 
					
						
							| 
									
										
										
										
											2016-12-21 14:50:13 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-22 13:31:42 +00:00
										 |  |  | # Multiple RTL_SDR tuners found, check if device specified for this decoder is present. | 
					
						
							| 
									
										
										
										
											2016-12-21 14:50:13 +00:00
										 |  |  | if [[ ${TUNER_COUNT} -gt 1 ]] ; then | 
					
						
							| 
									
										
										
										
											2016-12-22 13:31:42 +00:00
										 |  |  |     # If a device has been specified by serial number then try to match that with the currently detected tuners. | 
					
						
							|  |  |  |     if [[ -n ${OGN_DEVICE_SERIAL} ]] ; then | 
					
						
							| 
									
										
										
										
											2016-12-29 17:49:18 +00:00
										 |  |  |         for DEVICE_ID in `seq 0 ${TUNER_COUNT}` ; do | 
					
						
							| 
									
										
										
										
											2016-12-22 20:21:37 +00:00
										 |  |  |             if [[ `rtl_eeprom -d ${DEVICE_ID} 2>&1 | grep -c "Serial number:\s*${OGN_DEVICE_SERIAL}$" ` -eq 1 ]] ; then | 
					
						
							| 
									
										
										
										
											2016-12-30 20:33:11 +00:00
										 |  |  |                 echo -en "\e[33m  RTL-SDR with Serial \"${OGN_DEVICE_SERIAL}\" found at device \"${OGN_DEVICE_ID}\" and will be assigned to ${DECODER_NAME}...\e [97m" | 
					
						
							| 
									
										
										
										
											2016-12-22 20:21:37 +00:00
										 |  |  |                 OGN_DEVICE_ID=${DEVICE_ID} | 
					
						
							|  |  |  |             fi | 
					
						
							|  |  |  |         done | 
					
						
							|  |  |  |         # If no match for this serial then assume the highest numbered tuner will be used. | 
					
						
							|  |  |  |         if [[ -z ${OGN_DEVICE_ID} ]] ; then | 
					
						
							| 
									
										
										
										
											2016-12-30 20:33:11 +00:00
										 |  |  |             echo -en "\e[33m  RTL-SDR with Serial \"${OGN_DEVICE_SERIAL}\" not found, assigning device \"${TUNER_COUNT}\" to ${DECODER_NAME}...\e [97m" | 
					
						
							| 
									
										
										
										
											2016-12-22 20:21:37 +00:00
										 |  |  |             OGN_DEVICE_ID=${TUNER_COUNT} | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  |         fi | 
					
						
							| 
									
										
										
										
											2016-12-22 13:31:42 +00:00
										 |  |  |     # Or if a device has been specified by device ID then confirm this is currently detected. | 
					
						
							|  |  |  |     elif [[ -n ${OGN_DEVICE_ID} ]] ; then | 
					
						
							| 
									
										
										
										
											2016-12-22 20:21:37 +00:00
										 |  |  |         if [[ `rtl_eeprom -d ${OGN_DEVICE_ID} 2>&1 | grep -c "^\s*${OGN_DEVICE_ID}:\s"` -eq 1 ]] ; then | 
					
						
							| 
									
										
										
										
											2016-12-30 20:33:11 +00:00
										 |  |  |             echo -en "\e[33m  RTL-SDR device \"${OGN_DEVICE_ID}\" found and will be assigned to ${DECODER_NAME}...\e [97m" | 
					
						
							| 
									
										
										
										
											2016-12-22 20:21:37 +00:00
										 |  |  |         # If no match for this serial then assume the highest numbered tuner will be used. | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  |         else | 
					
						
							| 
									
										
										
										
											2016-12-30 20:33:11 +00:00
										 |  |  |             echo -en "\e[33m  RTL-SDR device \"${OGN_DEVICE_ID}\" not found, assigning device \"${TUNER_COUNT}\" to ${DECODER_NAME}...\e [97m" | 
					
						
							| 
									
										
										
										
											2016-12-22 20:21:37 +00:00
										 |  |  |             OGN_DEVICE_ID=${TUNER_COUNT} | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  |         fi | 
					
						
							| 
									
										
										
										
											2016-12-22 13:31:42 +00:00
										 |  |  |     # Failing that configure it with device ID 0. | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  |     else | 
					
						
							| 
									
										
										
										
											2016-12-30 20:33:11 +00:00
										 |  |  |         echo -en "\e[33m  No RTL-SDR device specified, assigning device \"0\" to ${DECODER_NAME}...\e [97m" | 
					
						
							| 
									
										
										
										
											2016-12-22 20:21:37 +00:00
										 |  |  |         OGN_DEVICE_ID=${TUNER_COUNT} | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  |     fi | 
					
						
							| 
									
										
										
										
											2016-12-22 13:31:42 +00:00
										 |  |  | # Single tuner present so assign device 0 and stop any other running decoders, or at least dump1090-mutablity for a default install. | 
					
						
							| 
									
										
										
										
											2016-12-21 14:50:13 +00:00
										 |  |  | elif [[ ${TUNER_COUNT} -eq 1 ]] ; then | 
					
						
							| 
									
										
										
										
											2016-12-30 20:33:11 +00:00
										 |  |  |     echo -en "\e[33m  Single RTL-SDR device \"0\" detected and assigned to ${DECODER_NAME}...\e [97m" | 
					
						
							| 
									
										
										
										
											2016-12-19 19:17:22 +00:00
										 |  |  |     OGN_DEVICE_ID="0" | 
					
						
							| 
									
										
										
										
											2016-12-29 18:04:47 +00:00
										 |  |  |     sudo /etc/init.d/dump1090-mutability stop > /dev/null 2>&1 | 
					
						
							| 
									
										
										
										
											2016-12-22 13:31:42 +00:00
										 |  |  | # No tuners present so assign device 0 and stop any other running decoders, or at least dump1090-mutablity for a default install. | 
					
						
							| 
									
										
										
										
											2016-12-21 14:50:13 +00:00
										 |  |  | elif [[ ${TUNER_COUNT} -lt 1 ]] ; then | 
					
						
							| 
									
										
										
										
											2016-12-30 20:33:11 +00:00
										 |  |  |     echo -en "\e[33m  No RTL-SDR device detected so ${DECODER_NAME} will be assigned device \"0\"...\e [97m" | 
					
						
							| 
									
										
										
										
											2016-12-19 19:17:22 +00:00
										 |  |  |     OGN_DEVICE_ID="0" | 
					
						
							| 
									
										
										
										
											2016-12-29 18:04:47 +00:00
										 |  |  |     sudo /etc/init.d/dump1090-mutability stop > /dev/null 2>&1 | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | fi | 
					
						
							| 
									
										
										
										
											2016-12-30 20:33:11 +00:00
										 |  |  | CheckReturnCode | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-30 21:10:27 +00:00
										 |  |  | ## CREATE THE CONFIGURATION FILE | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-23 13:46:40 +00:00
										 |  |  | # Use receiver coordinates if already know, otherwise populate with dummy values to ensure valid config generation. | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-29 17:36:39 +00:00
										 |  |  | # Latitude. | 
					
						
							| 
									
										
										
										
											2016-12-27 21:03:22 +00:00
										 |  |  | if [[ -z ${OGN_LATITUDE} ]] ; then | 
					
						
							| 
									
										
										
										
											2016-12-22 10:51:55 +00:00
										 |  |  |     if [[ -n ${RECEIVER_LATITUDE} ]] ; then | 
					
						
							| 
									
										
										
										
											2016-12-27 21:03:22 +00:00
										 |  |  |         OGN_LATITUDE="${RECEIVER_LATITUDE}" | 
					
						
							| 
									
										
										
										
											2016-12-22 10:51:55 +00:00
										 |  |  |     else | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  |         OGN_LATITUDE="0.000" | 
					
						
							| 
									
										
										
										
											2016-12-22 10:51:55 +00:00
										 |  |  |     fi | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | fi | 
					
						
							| 
									
										
										
										
											2016-04-01 16:55:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-29 17:36:39 +00:00
										 |  |  | # Longitude. | 
					
						
							| 
									
										
										
										
											2016-12-27 21:03:22 +00:00
										 |  |  | if [[ -z ${OGN_LONGITUDE} ]] ; then | 
					
						
							| 
									
										
										
										
											2016-12-22 10:51:55 +00:00
										 |  |  |     if [[ -n ${RECEIVER_LONGITUDE} ]] ; then | 
					
						
							| 
									
										
										
										
											2016-12-27 21:03:22 +00:00
										 |  |  |         OGN_LONGITUDE="${RECEIVER_LONGITUDE}" | 
					
						
							| 
									
										
										
										
											2016-12-22 10:51:55 +00:00
										 |  |  |     else | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  |         OGN_LONGITUDE="0.000" | 
					
						
							| 
									
										
										
										
											2016-12-22 10:51:55 +00:00
										 |  |  |     fi | 
					
						
							| 
									
										
										
										
											2016-12-29 17:49:18 +00:00
										 |  |  | fi | 
					
						
							| 
									
										
										
										
											2016-12-22 10:51:55 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-29 17:36:39 +00:00
										 |  |  | # Altitude. | 
					
						
							| 
									
										
										
										
											2016-12-27 21:03:22 +00:00
										 |  |  | if [[ -z ${OGN_ALTITUDE} ]] ; then | 
					
						
							| 
									
										
										
										
											2016-12-22 10:51:55 +00:00
										 |  |  |     if [[ -n ${RECIEVER_ALTITUDE} ]] ; then | 
					
						
							| 
									
										
										
										
											2016-12-29 17:36:39 +00:00
										 |  |  |         OGN_ALTITUDE="${RECIEVER_ALTITUDE}" | 
					
						
							| 
									
										
										
										
											2016-12-22 10:51:55 +00:00
										 |  |  |     else | 
					
						
							| 
									
										
										
										
											2016-12-29 17:36:39 +00:00
										 |  |  |         OGN_ALTITUDE="0" | 
					
						
							| 
									
										
										
										
											2016-12-22 10:51:55 +00:00
										 |  |  |     fi | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | fi | 
					
						
							| 
									
										
										
										
											2016-04-01 16:55:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-29 17:36:39 +00:00
										 |  |  | # Geoid separation: FLARM transmits GPS altitude, APRS uses means Sea level altitude. | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | # To find value you can check: 	http://geographiclib.sourceforge.net/cgi-bin/GeoidEval | 
					
						
							| 
									
										
										
										
											2016-12-29 17:36:39 +00:00
										 |  |  | # Need to derive from co-ords but will set to altitude as a placeholders. | 
					
						
							| 
									
										
										
										
											2016-12-22 13:31:42 +00:00
										 |  |  | if [[ -z ${OGN_GEOID} ]] ; then | 
					
						
							|  |  |  |     if [[ -n ${RECIEVER_ALTITUDE} ]] ; then | 
					
						
							|  |  |  |         OGN_GEOID="${RECIEVER_ALTITUDE}" | 
					
						
							|  |  |  |     else | 
					
						
							|  |  |  |         OGN_GEOID="0" | 
					
						
							|  |  |  |     fi | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | fi | 
					
						
							| 
									
										
										
										
											2016-04-01 16:55:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-29 17:36:39 +00:00
										 |  |  | # Set receiver callsign for this decoder. | 
					
						
							|  |  |  | # This should be between 3 and 9 alphanumeric charactors, with no punctuation. | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | # Please see: 	http://wiki.glidernet.org/receiver-naming-convention | 
					
						
							| 
									
										
										
										
											2016-12-27 21:03:22 +00:00
										 |  |  | if [[ -z ${OGN_RECEIVER_NAME} ]] ; then | 
					
						
							| 
									
										
										
										
											2016-12-29 17:49:18 +00:00
										 |  |  |     if [[ -n ${RECEIVERNAME} ]] ; then | 
					
						
							| 
									
										
										
										
											2016-12-27 21:03:22 +00:00
										 |  |  |         OGN_RECEIVER_NAME=`echo ${RECEIVERNAME} | tr -cd '[:alnum:]' | cut -c -9` | 
					
						
							| 
									
										
										
										
											2016-12-22 13:31:42 +00:00
										 |  |  |     else | 
					
						
							| 
									
										
										
										
											2016-12-27 21:03:22 +00:00
										 |  |  |         OGN_RECEIVER_NAME=`hostname -s | tr -cd '[:alnum:]' | cut -c -9` | 
					
						
							| 
									
										
										
										
											2016-12-22 13:31:42 +00:00
										 |  |  |     fi | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | fi | 
					
						
							| 
									
										
										
										
											2016-04-01 16:55:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  | # Check for decoder specific variable, if not set then populate with dummy values to ensure valid config generation. | 
					
						
							|  |  |  | if [[ -z ${OGN_FREQ_CORR} ]] ; then | 
					
						
							|  |  |  |     OGN_FREQ_CORR="0" | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if [[ -z ${OGN_GSM_FREQ} ]] ; then | 
					
						
							|  |  |  |     OGN_GSM_FREQ="957.800" | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if [[ -z ${OGN_GSM_GAIN} ]] ; then | 
					
						
							|  |  |  |     OGN_GSM_GAIN="35" | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if [[ -z ${OGN_WHITELIST} ]] ; then | 
					
						
							|  |  |  |     OGN_WHITELIST="0" | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-22 10:51:55 +00:00
										 |  |  | # Test if config file exists, if not create it. | 
					
						
							| 
									
										
										
										
											2016-12-29 18:27:03 +00:00
										 |  |  | if [[ -s ${DECODER_BUILD_DIRECTORY}/rtlsdr-ogn/${OGN_RECEIVER_NAME}.conf ]] ; then | 
					
						
							| 
									
										
										
										
											2016-12-30 21:38:06 +00:00
										 |  |  |     echo -en "\e[33m  Using existing ${DECODER_NAME} config file at \"\e[37m${OGN_RECEIVER_NAME}.conf\e[33m\"...\e [97m\t\t" | 
					
						
							| 
									
										
										
										
											2016-12-29 17:49:18 +00:00
										 |  |  | else | 
					
						
							| 
									
										
										
										
											2016-12-30 21:38:06 +00:00
										 |  |  |     echo -en "\e[33m  Generating new ${DECODER_NAME} config file as \"\e[37m${OGN_RECEIVER_NAME}.conf\e[33m\"...\e [97m\t\t" | 
					
						
							| 
									
										
										
										
											2016-12-30 20:23:45 +00:00
										 |  |  |     sudo tee ${DECODER_BUILD_DIRECTORY}/rtlsdr-ogn/${OGN_RECEIVER_NAME}.conf > /dev/null 2>&1 <<EOF | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | ########################################################################################### | 
					
						
							|  |  |  | #                                                                                         # | 
					
						
							|  |  |  | #     CONFIGURATION FILE BASED ON http://wiki.glidernet.org/wiki:receiver-config-file     # | 
					
						
							|  |  |  | #                                                                                         # | 
					
						
							| 
									
										
										
										
											2016-12-27 21:03:22 +00:00
										 |  |  | ########################################################################################### | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | # | 
					
						
							|  |  |  | RF: | 
					
						
							| 
									
										
										
										
											2016-12-29 17:49:18 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2016-12-22 20:36:45 +00:00
										 |  |  |   FreqCorr	= ${OGN_FREQ_CORR};             	# [ppm]		Some R820T sticks have 40-80ppm correction factors, measure it with gsm_scan | 
					
						
							| 
									
										
										
										
											2016-12-22 20:43:51 +00:00
										 |  |  |   Device   	= ${OGN_DEVICE_ID};      	   	# 		Device index of the USB RTL-SDR device to be selected | 
					
						
							|  |  |  | #  DeviceSerial	= ${OGN_DEVICE_SERIAL};	 	  	# char[12] 	Serial number of the USB RTL-SDR device to be selected | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  |   GSM: | 
					
						
							| 
									
										
										
										
											2016-12-29 17:49:18 +00:00
										 |  |  |   { | 
					
						
							| 
									
										
										
										
											2016-12-22 17:21:34 +00:00
										 |  |  |     CenterFreq	= ${OGN_GSM_FREQ};		# [MHz]		Fnd the best GSM frequency with gsm_scan | 
					
						
							|  |  |  |     Gain	= ${OGN_GSM_GAIN};   	 	# [0.1 dB] 	RF input gain for frequency calibration (beware that GSM signals are very strong) | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  |   } ; | 
					
						
							|  |  |  | } ; | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | Position: | 
					
						
							| 
									
										
										
										
											2016-12-29 17:49:18 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2016-12-27 21:03:22 +00:00
										 |  |  |   Latitude	= ${OGN_LATITUDE};    		# [deg] 	Antenna coordinates in decimal degrees | 
					
						
							|  |  |  |   Longitude	= ${OGN_LONGITUDE};           	# [deg] 	Antenna coordinates in decimal degrees | 
					
						
							|  |  |  |   Altitude	= ${OGN_ALTITUDE};   		# [m]   	Altitude above sea leavel | 
					
						
							| 
									
										
										
										
											2016-12-22 20:43:51 +00:00
										 |  |  |   GeoidSepar	= ${OGN_GEOID};           	# [m]   	Geoid separation: FLARM transmits GPS altitude, APRS uses means Sea level altitude | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | } ; | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | APRS: | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2016-12-27 21:03:22 +00:00
										 |  |  |   Call		= "${OGN_RECEIVER_NAME}";  	# 		APRS callsign (max. 9 characters) | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | } ; | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | DDB: | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2016-12-22 20:43:51 +00:00
										 |  |  |   UseAsWhitelist = ${OGN_WHITELIST};     	     	# [0|1] 	Setting to 1 enforces strict opt in | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | } ; | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | EOF | 
					
						
							| 
									
										
										
										
											2016-12-22 10:51:55 +00:00
										 |  |  | fi | 
					
						
							| 
									
										
										
										
											2016-12-29 17:36:39 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-28 21:39:55 +00:00
										 |  |  | # Update ownership of new config file. | 
					
						
							| 
									
										
										
										
											2016-12-29 18:27:03 +00:00
										 |  |  | chown pi:pi ${DECODER_BUILD_DIRECTORY}/rtlsdr-ogn/${OGN_RECEIVER_NAME}.conf > /dev/null 2>&1 | 
					
						
							| 
									
										
										
										
											2016-12-28 21:39:55 +00:00
										 |  |  | CheckReturnCode | 
					
						
							| 
									
										
										
										
											2016-04-01 16:55:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | ### INSTALL AS A SERVICE | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-30 18:24:19 +00:00
										 |  |  | if [[ -f ${DECODER_SERVICE_SCRIPT_NAME} ]] ; then | 
					
						
							|  |  |  |     # Check for local copy of service script. | 
					
						
							| 
									
										
										
										
											2016-12-30 18:43:41 +00:00
										 |  |  |     if [[ `grep -c "conf=${DECODER_SERVICE_SCRIPT_CONFIG}" ${DECODER_SERVICE_SCRIPT_NAME}` -eq 1 ]] ; then | 
					
						
							| 
									
										
										
										
											2016-12-30 21:38:06 +00:00
										 |  |  |         echo -en "\e[33m  Installing service script at \"\e[37m${DECODER_SERVICE_SCRIPT_PATH}\e[33m\"...\t\t" | 
					
						
							| 
									
										
										
										
											2016-12-30 18:24:19 +00:00
										 |  |  |         cp ${DECODER_SERVICE_SCRIPT_NAME} ${DECODER_SERVICE_SCRIPT_PATH} | 
					
						
							|  |  |  |         sudo chmod +x ${DECODER_SERVICE_SCRIPT_PATH} > /dev/null 2>&1 | 
					
						
							|  |  |  |     else | 
					
						
							| 
									
										
										
										
											2016-12-30 21:38:06 +00:00
										 |  |  |         echo -en "\e[33m  Invalid service script \"\e[37m${DECODER_SERVICE_SCRIPT_NAME}\e[33m\"...\t\t\t" | 
					
						
							| 
									
										
										
										
											2016-12-30 18:24:19 +00:00
										 |  |  |         false | 
					
						
							|  |  |  |     fi | 
					
						
							|  |  |  | elif [[ -n ${DECODER_SERVICE_SCRIPT_URL} ]] ; then | 
					
						
							|  |  |  |     # Otherwise attempt to download service script. | 
					
						
							|  |  |  |     if [[ `echo ${DECODER_SERVICE_SCRIPT_URL} | grep -c "^http"` -gt 0 ]] ; then | 
					
						
							| 
									
										
										
										
											2016-12-30 21:38:06 +00:00
										 |  |  |         echo -en "\e[33m  Downloading service script to \"\e[37m${DECODER_SERVICE_SCRIPT_PATH}\e[33m\"...\t\t" | 
					
						
							| 
									
										
										
										
											2016-12-30 18:24:19 +00:00
										 |  |  |         sudo curl -s ${DECODER_SERVICE_SCRIPT_URL} -o ${DECODER_SERVICE_SCRIPT_PATH} | 
					
						
							|  |  |  |         sudo chmod +x ${DECODER_SERVICE_SCRIPT_PATH} > /dev/null 2>&1 | 
					
						
							|  |  |  |     else | 
					
						
							|  |  |  |         echo -en "\e[33m  Invalid service script url \"\e[37m${DECODER_SERVICE_SCRIPT_URL}\e[33m\"...\t\t" | 
					
						
							|  |  |  |         false | 
					
						
							|  |  |  |     fi | 
					
						
							| 
									
										
										
										
											2016-12-30 17:26:05 +00:00
										 |  |  | else | 
					
						
							| 
									
										
										
										
											2016-12-30 18:24:19 +00:00
										 |  |  |     # Otherwise error if unable to use local or downloaded service script | 
					
						
							| 
									
										
										
										
											2016-12-30 21:38:06 +00:00
										 |  |  |     echo -en "\e[33m  Unable to install service script at \"\e[37m${DECODER_SERVICE_SCRIPT_PATH}\e[33m\"...\t\t" | 
					
						
							| 
									
										
										
										
											2016-12-30 18:24:19 +00:00
										 |  |  |     false | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  | fi | 
					
						
							| 
									
										
										
										
											2016-12-28 21:39:55 +00:00
										 |  |  | CheckReturnCode | 
					
						
							| 
									
										
										
										
											2016-04-01 16:55:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-30 18:24:19 +00:00
										 |  |  | # Generate and install service script configuration file. | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  | if [[ -n ${DECODER_SERVICE_SCRIPT_CONFIG} ]] ; then | 
					
						
							| 
									
										
										
										
											2016-12-30 21:38:06 +00:00
										 |  |  |     echo -en "\e[33m  Creating service config file \"\e[37m${DECODER_SERVICE_SCRIPT_CONFIG}\e[33m\"...\t\t" | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  |     sudo tee ${DECODER_SERVICE_SCRIPT_CONFIG} > /dev/null 2>&1 <<EOF | 
					
						
							| 
									
										
										
										
											2016-04-01 16:55:46 +00:00
										 |  |  | #shellbox configuration file | 
					
						
							|  |  |  | #Starts commands inside a "box" with a telnet-like server. | 
					
						
							|  |  |  | #Contact the shell with: telnet <hostname> <port> | 
					
						
							|  |  |  | #Syntax: | 
					
						
							|  |  |  | #port  user     directory                 command       args | 
					
						
							| 
									
										
										
										
											2016-12-29 18:27:03 +00:00
										 |  |  | 50000  pi ${DECODER_BUILD_DIRECTORY}/rtlsdr-ogn    ./ogn-rf     ${OGN_RECEIVER_NAME}.conf | 
					
						
							|  |  |  | 50001  pi ${DECODER_BUILD_DIRECTORY}/rtlsdr-ogn    ./ogn-decode ${OGN_RECEIVER_NAME}.conf | 
					
						
							| 
									
										
										
										
											2016-04-01 16:55:46 +00:00
										 |  |  | EOF | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  |     chown pi:pi ${DECODER_SERVICE_SCRIPT_CONFIG} > /dev/null 2>&1 | 
					
						
							| 
									
										
										
										
											2016-12-30 20:03:50 +00:00
										 |  |  | else | 
					
						
							| 
									
										
										
										
											2016-12-30 17:26:05 +00:00
										 |  |  |     false | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  | fi | 
					
						
							| 
									
										
										
										
											2016-12-28 21:39:55 +00:00
										 |  |  | CheckReturnCode | 
					
						
							| 
									
										
										
										
											2016-04-01 16:55:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  | # Potentially obselse tuner detection code. | 
					
						
							| 
									
										
										
										
											2016-12-22 11:18:37 +00:00
										 |  |  | if [[ ${TUNER_COUNT} -lt 2 ]] ; then | 
					
						
							| 
									
										
										
										
											2016-12-30 20:44:53 +00:00
										 |  |  |     # Less than 2 tuners present so we must stop other services before starting this decoder. | 
					
						
							| 
									
										
										
										
											2016-12-30 21:38:06 +00:00
										 |  |  |     echo -en "\e[33m  Less than 2 tuners found so other decoders will be disabled...\t" | 
					
						
							| 
									
										
										
										
											2016-12-30 20:44:53 +00:00
										 |  |  |     SERVICES="dump1090-mutability" | 
					
						
							|  |  |  |     for SERVICE in ${SERVICES} ; do | 
					
						
							|  |  |  |         if [[ `service ${SERVICE} status | grep -c "Active: active"` -gt 0 ]] ; then | 
					
						
							|  |  |  |             sudo update-rc.d ${SERVICE} disable > /dev/null 2>&1 | 
					
						
							|  |  |  |         fi | 
					
						
							|  |  |  |     done | 
					
						
							| 
									
										
										
										
											2016-12-28 21:39:55 +00:00
										 |  |  |     CheckReturnCode | 
					
						
							| 
									
										
										
										
											2016-12-22 11:18:37 +00:00
										 |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-29 17:36:39 +00:00
										 |  |  | # Configure $DECODER as a service. | 
					
						
							| 
									
										
										
										
											2016-12-30 21:38:06 +00:00
										 |  |  | echo -en "\e[33m  Configuring ${DECODER_NAME} as a service...\t\t\t\t" | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  | sudo update-rc.d ${DECODER_SERVICE_SCRIPT_NAME} defaults > /dev/null 2>&1 | 
					
						
							| 
									
										
										
										
											2016-12-28 21:39:55 +00:00
										 |  |  | CheckReturnCode | 
					
						
							| 
									
										
										
										
											2016-04-01 16:55:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-29 17:36:39 +00:00
										 |  |  | # Start the $DECODER service. | 
					
						
							| 
									
										
										
										
											2016-12-30 21:38:06 +00:00
										 |  |  | echo -en "\e[33m  Starting the ${DECODER_NAME} service...\t\t\t\t\t" | 
					
						
							| 
									
										
										
										
											2016-12-30 17:05:52 +00:00
										 |  |  | sudo service ${DECODER_SERVICE_SCRIPT_NAME} start > /dev/null 2>&1 | 
					
						
							| 
									
										
										
										
											2016-12-28 21:39:55 +00:00
										 |  |  | CheckReturnCode | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-30 21:10:27 +00:00
										 |  |  | ## RTL-SDR OGN SETUP COMPLETE | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-22 10:51:55 +00:00
										 |  |  | # Return to the project root directory. | 
					
						
							| 
									
										
										
										
											2016-12-30 21:38:06 +00:00
										 |  |  | echo -en "\e[94m  Returning to ${RECEIVER_PROJECT_TITLE} root directory...\e[97m\t" | 
					
						
							| 
									
										
										
										
											2016-12-22 21:00:29 +00:00
										 |  |  | cd ${PROJECT_ROOT_DIRECTORY} | 
					
						
							| 
									
										
										
										
											2016-12-28 21:39:55 +00:00
										 |  |  | CheckReturnCode | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | echo -e "" | 
					
						
							| 
									
										
										
										
											2016-12-28 21:39:55 +00:00
										 |  |  | echo -e "\e[93m-------------------------------------------------------------------------------------------------------\n" | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | echo -e "\e[92m  ${DECODER_NAME} setup is complete.\e[39m" | 
					
						
							|  |  |  | echo -e "" | 
					
						
							| 
									
										
										
										
											2016-12-30 21:16:49 +00:00
										 |  |  | read -p "Press enter to continue..." CONTINUE | 
					
						
							| 
									
										
										
										
											2016-12-19 17:50:20 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | exit 0 |