#!/bin/bash cd / if systemctl status direwolf.service |grep active >/dev/null 2>&1 then systemctl stop direwolf.service fi if systemctl status gpsd.socket |grep active >/dev/null 2>&1 then systemctl stop gpsd.socket gpsd.service fi if [ -d "/opt/direwolf" ] then rm -r /opt/direwolf #echo "found file" fi if [ -d "/opt/direwolf_webstat" ] then rm -r /opt/direwolf_webstat #echo "found file" fi if [ -f "/usr/local/bin/direwolf" ] then rm /usr/local/bin/direwolf #echo "found file" fi ######################################################################################################################### # requeriments ######################################################################################################################### #!/bin/bash # Aplicaciones a verificar e instalar #apps=("git" "gcc" "g++" "make" "cmake" "libasound2-dev" "libudev-dev" "gpsd" "libgps-dev" "gpsd-clients" "gpsd-tools" "chrony") ######################################################################################################################### # audio raspberry ######################################################################################################################### if [ "$(cat /proc/cpuinfo | grep 'Raspberry')" != "" ]; then sudo cat > /etc/asound.conf <<- "EOFA" pcm.!default { type hw card 1 } ctl.!default { type hw card 1 } EOFA fi ######################################################################################################################### # GPSD ######################################################################################################################### sudo cat > /etc/udev/rules.d/49-usb-gps.rules <<- "EOF" KERNEL=="ttyACM[0-9]*", SUBSYSTEM=="tty", ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a7", SYMLINK="ttyACM0" EOF sudo udevadm control --reload-rules sudo cat > /etc/default/gpsd <<- "EOF" START_DAEMON="true" GPSD_OPTIONS="-r -n" DEVICES="/dev/ttyACM0" USBAUTO="true" EOF # archivo="/etc/chrony/chrony.conf" palabra=("refclock SHM 0 offset 0.5 delay 0.2 refid NMEA") for palabra in "${palabra[@]}" do if grep -i -E "$palabra" "$archivo" >/dev/null 2>&1; then echo "line found" else echo "$palabra">> "$archivo" fi done systemctl stop gpsd.socket gpsd.service sudo cat > /lib/systemd/system/gpsd.service <<- "EOFT" [Unit] Description=GPS (Global Positioning System) Daemon Requires=gpsd.socket # Needed with chrony SOCK refclock After=chronyd.service [Service] Type=forking EnvironmentFile=-/etc/default/gpsd ExecStart=/usr/sbin/gpsd $GPSD_OPTIONS $DEVICES ExecStartPost=bash -c 'sleep 3 && gpsctl --nmea' [Install] WantedBy=multi-user.target Also=gpsd.socket EOFT sed -i "s/ListenStream=127.0.0.1:2947/#ListenStream=127.0.0.1:2947/g" /lib/systemd/system/gpsd.socket sed -i "s/#ListenStream=0.0.0.0:2947/ListenStream=0.0.0.0:2947/g" /lib/systemd/system/gpsd.socket systemctl daemon-reload sudo ln -sf /lib/systemd/system/gpsd.service /etc/systemd/system/multi-user.target.wants/ systemctl enable chrony systemctl restart gpsd.socket gpsd.service systemctl enable gpsd.socket gpsd.service systemctl is-active gpsd systemctl is-active chrony ######################################################################################################################### # direwolf ######################################################################################################################### cd /opt/ git clone https://github.com/wb2osz/direwolf.git && cd direwolf git checkout dev mkdir build cd build cmake .. && make -j4 && sudo make install make install-conf cp /usr/local/bin/direwolf /opt/direwolf/direwolf0 #Direwolf1 wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=1iVLnl4KTbWg28xeGJBv_bq5LqweDCPZA' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=1iVLnl4KTbWg28xeGJBv_bq5LqweDCPZA" -O /opt/direwolf/direwolf1 && rm -rf /tmp/cookies.txt && #Direwolf2 wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=1l3wLd4L0JVdVReqG5E58briA3_4KtUYK' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=1l3wLd4L0JVdVReqG5E58briA3_4KtUYK" -O /opt/direwolf/direwolf2 && rm -rf /tmp/cookies.txt && ################### sudo cat > /lib/systemd/system/direwolf.service <<- "EOF" [Unit] Description=Direwolf Service After=multi-user.target [Service] ExecStart=sudo direwolf -t 0 -c /opt/direwolf/dw.conf Restart=always RestartSec=5s [Install] WantedBy=multi-user.target EOF ######## sudo cat > /opt/direwolf/rtl.sh <<- "EOF" #!/bin/sh ########################################################### # # # configuration file device RTL-SDR # # # # Linux version setting by hp3icc # # # ########################################################### rtl_fm -M fm -f 144.39M -p 0 -s 22050 -g 12 - | /usr/local/bin/direwolf -l /var/log/direwolf -t 0 -c /opt/direwolf/sdr.conf -r 22050 -D 1 -B 1200 - #-l /var/log/direwolf EOF # sudo chmod +x /opt/direwolf/rtl.sh # sudo cat > /opt/direwolf/sdr.conf <<- "EOF" ############################################################# # # # Configuration file for DireWolf # # # # Linux version setting by hp3icc # # # # emq-TE1+ # # # # configuration for SDR RX-only IGate. # ############################################################# ADEVICE null null CHANNEL 0 MYCALL HP3ICC-10 PBEACON sendto=IG delay=0:40 every=30 symbol="/r" lat=08^31.27N long=080^21.59W comment="SDR APRS RX-IGATE / Raspbian Proyect by hp3icc" # First you need to specify the name of a Tier 2 server. # The current preferred way is to use one of these regional rotate addresses: # noam.aprs2.net - for North America # soam.aprs2.net - for South America # euro.aprs2.net - for Europe and Africa # asia.aprs2.net - for Asia # aunz.aprs2.net - for Oceania IGSERVER igates.aprs.fi:14580 #noam.aprs2.net # You also need to specify your login name and passcode. # Contact the author if you can't figure out how to generate the passcode. IGLOGIN HP3ICC-10 12345 # That's all you need for a receive only IGate which relays # messages from the local radio channel to the global servers. # #AGWPORT 8000 #KISSPORT 8001 EOF ### sudo cat > /opt/direwolf/gpsd.conf <<- "EOF" ############################################################# # # # Configuration file for DireWolf # # # # Linux version setting by hp3icc # # # # emq-TE1+ # # # # configuration for GPSD TX-only TRACKER. # ############################################################# ADEVICE plughw:1,0 ACHANNELS 1 CHANNEL 0 MYCALL HP0XXX-9 MODEM 1200 TXDELAY 75 #PTT CM108 #PTT COM1 RTS #PTT COM1 RTS -DTR #PTT /dev/ttyUSB0 RTS #PTT /dev/ttyUSB0 DTR #PTT GPIO 25 #PTT GPIO 26 # Enable GPS beaconing GPSD TBEACON symbol="/>" comment="Raspberry APRS TRACKER / Raspbian Proyect by hp3icc" VIA=WIDE1-1,WIDE2-1 SMARTBEACONING 25 0:30 5 2:00 0:10 30 255 EOF ##### sudo cat > /opt/direwolf/dw.conf <<- "EOF" ############################################################# # # # Configuration file for DireWolf # # # # Linux version setting by hp3icc # # # # emq-TE1ws # # # ############################################################# ############################################################# # # # FIRST AUDIO DEVICE PROPERTIES # # (Channel 0 + 1 if in stereo) # # # ############################################################# ADEVICE plughw:1,0 #ADEVICE null null # ADEVICE - plughw:1,0 # ADEVICE UDP:7355 default # Number of audio channels for this souncard: 1 or 2. # ACHANNELS 1 ############################################################# # # # CHANNEL 0 PROPERTIES # # # ############################################################# CHANNEL 0 MYCALL HP3ICC-10 MODEM 1200 #MODEM 1200 1200:2200 #MODEM 300 1600:1800 #MODEM 9600 0:0 # #MODEM 1200 E+ /3 # # # If not using a VOX circuit, the transmitter Push to Talk (PTT) # DON'T connect it directly! # # For the PTT command, specify the device and either RTS or DTR. # RTS or DTR may be preceded by "-" to invert the signal. # Both can be used for interfaces that want them driven with opposite polarity. # # COM1 can be used instead of /dev/ttyS0, COM2 for /dev/ttyS1, and so on. # TXDELAY 75 #PTT CM108 #PTT COM1 RTS #PTT COM1 RTS -DTR #PTT /dev/ttyUSB0 RTS #PTT /dev/ttyUSB0 DTR #PTT GPIO 25 #PTT GPIO 26 # The Data Carrier Detect (DCD) signal can be sent to the same places # as the PTT signal. This could be used to light up an LED like a normal TNC. #DCD COM1 -DTR #DCD GPIO 24 #pin18 (GPIO 24) - (cathode) LED (anode) - 270ohm resistor - 3.3v #DCD GPIO 13 ############################################################# # # # VIRTUAL TNC SERVER PROPERTIES # # # ############################################################# # # Dire Wolf acts as a virtual TNC and can communicate with # client applications by different protocols: # # - the "AGW TCPIP Socket Interface" - default port 8000 # - KISS protocol over TCP socket - default port 8001 # - KISS TNC via pseudo terminal (-p command line option) # #Setting to 0 disables UI-proto only AGW and TCP-KISS ports AGWPORT 8000 KISSPORT 8001 #KISSPORT 0 # # It is sometimes possible to recover frames with a bad FCS. # This applies to all channels. # 0 [NONE] - Don't try to repair. # 1 [SINGLE] - Attempt to fix single bit error. (default) # 2 [DOUBLE] - Also attempt to fix two adjacent bits. # ... see User Guide for more values and in-depth discussion. # #FIX_BITS 0 #Enable fixing of 1 bits and use generic AX25 heuristics data (not APRS heuristi$ #FIX_BITS 1 AX25 # ############################################################# # # # BEACONING PROPERTIES # # # ############################################################# # #GPSD #TBEACON delay=0:05 every=20 symbol="/d" comment="APRS DIGI / Raspbian Proyect by hp3icc" via=WIDE2-2 #PBEACON delay=0:05 every=20 symbol="/r" lat=08^31.27N long=080^21.59W comment="APRS DIGI-IGATE / Raspbian Proyect by hp3icc" via=WIDE2-2 #PBEACON sendto=IG delay=0:60 every=30 symbol="/r" lat=08^31.27N long=080^21.59W comment="APRS DIGI-IGATE / Raspbian Proyect by hp3icc" ############################################################# # # # DIGIPEATER PROPERTIES # # # ############################################################# DIGIPEAT 0 0 ^WIDE[3-7]-[1-7]$|^TEST$ ^WIDE[12]-[12]$ TRACE FILTER 0 0 t/poimqstunw ############################################################# # # # INTERNET GATEWAY # # # ############################################################# # First you need to specify the name of a Tier 2 server. # The current preferred way is to use one of these regional rotate addresses: # noam.aprs2.net - for North America # soam.aprs2.net - for South America # euro.aprs2.net - for Europe and Africa # brazil.d2g.com # #IGSERVER igates.aprs.fi:14580 #IGSERVER noam.aprs2.net:14580 #IGSERVER cx2sa.net:14580 #IGLOGIN HP3ICC-10 12345 IGTXVIA 0 WIDE2-2 #WIDE1-1,WIDE2-1 #WIDE2-2 # # #IGFILTER b/HP3ICC-5 #IGFILTER p/HP #m/600 # FILTER IG 0 t/p #poimqstunw IGTXLIMIT 6 10 # EOF ######################################################################################################################### # direwolf - dashboard ######################################################################################################################### cd /opt git clone https://github.com/IZ7BOJ/direwolf_webstat.git #cd /opt/direwolf_webstat sudo sed -i "s/144.800 VHF Port/144.390MHz VHF APRS/g" /opt/direwolf_webstat/config.php sudo sed -i "s/0,1/0/g" /opt/direwolf_webstat/config.php sudo sed -i 's/href="https:\/\/github.com\/IZ7BOJ\/direwolf_webstat" target/href="https:\/\/gitlab.com\/hp3icc\/emq-TE1\/" target="_blank">emq-TE1+ Raspbian Proyect<\/a> by HP3ICC, /etc/modprobe.d/raspi-blacklist.conf <<- "EOF" blacklist snd_bcm2835 # blacklist spi and i2c by default (many users don't need them) #blacklist spi-bcm2708 #blacklist i2c-bcm2708 blacklist snd-soc-pcm512x blacklist snd-soc-wm8804 # dont load default drivers for the RTL dongle blacklist dvb_usb_rtl28xxu blacklist rtl_2832 blacklist rtl_2830 EOF ################################ cd /opt if [[ -d "/opt/rtl-sdr" ]] then rm -r /opt/rtl-sdr fi if [[ -f "/etc/udev/rules.d/rtl-sdr.rules" ]] then sudo rm /etc/udev/rules.d/rtl-sdr.rules fi if [[ -f "/etc/udev/rules.d/rtl-sdr.rules" ]] then sudo rm /etc/udev/rules.d/rtl-sdr.rules fi apps=("cmake" "build-essential" "libusb-1.0-0-dev" "unzip") # Función para verificar e instalar una aplicación check_and_install() { app=$1 if ! dpkg -s $app 2>/dev/null | grep -q "Status: install ok installed"; then echo "$app no está instalado. Instalando..." sudo apt-get install -y $app echo "$app instalado correctamente." else echo "$app ya está instalado." fi } # Verificar e instalar cada aplicación for app in "${apps[@]}"; do check_and_install $app done wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=14owBT_XWwA4uK5a4I8wepvd4YrC2JErh' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=14owBT_XWwA4uK5a4I8wepvd4YrC2JErh" -O /opt/rtl-sdr-te1ws.zip && rm -rf /tmp/cookies.txt && sudo unzip rtl-sdr-te1ws.zip sudo rm rtl-sdr-te1ws.zip #git clone git://git.osmocom.org/rtl-sdr.git cd rtl-sdr mkdir build cd build cmake ../ -DINSTALL_UDEV_RULES=ON make clean make make install sudo ldconfig sudo cp /opt/rtl-sdr/rtl-sdr.rules /etc/udev/rules.d ########## systemctl daemon-reload sudo systemctl disable gpsd.socket gpsd.service