diff --git a/APRS-Messaging/aprs-message.sh b/APRS-Messaging/aprs-message.sh new file mode 100644 index 0000000..cf7febe --- /dev/null +++ b/APRS-Messaging/aprs-message.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash +one=$1 +TOCALL=${one^^} +shift +INPUT=$* +if [ "$INPUT" = "" ]; then + echo "Usage: $1 " + exit 1 +fi + +USER="CALLSIGN HERE" +PASS="PASSCODE HERE" +DIREWOLFHOSTNAME=localhost + +#telnetting into aprsis server,sending login, send concatenated string, quit +{ +sleep 2 +echo "user $USER pass $PASS vers aprs-send-message 0.1" +sleep 2 +printf "$USER>APDW17,APRS,TCPIP*::%-9s:$INPUT\r\n" $TOCALL +sleep 5 +echo "^]" +echo "quit" +} | telnet rotate.aprs2.net 14580 +ERR="${PIPESTATUS[0]}" +if [ $ERR -eq 0 ]; then + echo "Message sent." +else + echo "ERROR: telnet returned $ERR." +fi + +echo "Sending packet to Radio TNC." +{ +sleep 10 # allow kissutil time to make connection +printf "$USER>APDW17,WIDE1-1,WIDE2-1,APRS,TCPIP::%-9s:$INPUT\r\n" $TOCALL +} | kissutil -h $DIREWOLFHOSTNAME + + +exit $ERR \ No newline at end of file diff --git a/direwolf-MultiBands.conf b/Cross-Band_Support/direwolf-MultiBands.conf similarity index 100% rename from direwolf-MultiBands.conf rename to Cross-Band_Support/direwolf-MultiBands.conf diff --git a/README.md b/README.md new file mode 100644 index 0000000..e248ebe --- /dev/null +++ b/README.md @@ -0,0 +1,100 @@ +# APRS + +This is an on-going repository for the Automatic Positioning Reporting System (APRS) Network +This repo includes support for Direwolf, rtl_fm & kissutil + +This repo is split into multiple directories with +"Cross-Band Digipeater Support" +"Simplex Digipeater Support" +"RTL-SDR RX Only IGate Support" + + +## Installation + +You're going to need +"rtl-sdr" https://archlinux.org/packages/extra/x86_64/rtl-sdr/ (If you plan on using an rtl-sdr) +"direwolf" https://aur.archlinux.org/packages/direwolf (IIRC "kissutil is included in this package) +"telnet" https://archlinux.org/packages/core/x86_64/inetutils/ + +## Usage + +Ensure that you clone this repo into your `/home/$USER/` directory so that everything can run seamlessly + +If you intend on using "RTL-SDR(s)" +You're going to want to move `aprs-1200b.service` and `aprs-9600b.service` +from `/systemd-services/` to `/etc/system/systemd/` + +To enable these as services so that they run on /BOOT/ run in your terminal + +``` +sudo systemctl enable --now aprs-1200b.service +sudo systemctl enable --now aprs-9600b.service +``` + +This repo also includes a method to send messages to other stations by utilizing the kissutil + +In the "APRS-Messaging" directory is a shell script that you will need to edit for your station +such as + +``` +USER="ab1cde" +PASS="12345" +``` +Ensure you have this correctly changed for your station + +Usage of running the script is very simple + +``` +bash aprs-message.sh "callsign you want to send a message to" "your message" +``` + +This will telnet into the APRS-IS system with your login details and first send the message over TCPIP +It will secondly send the message over RF over the KISS TNC via WIDE1-1,WIDE2-1,APRS,TCPIP + + +## Contributing + +Pull requests are welcome. For major changes, please open an issue first +to discuss what you would like to change. + +Please make sure to update tests as appropriate. + +## Credits + +A very special thanks goes to Emma/Everett (KX4AT) +for their amazing help putting this some of this config together +and staying up until all hours of the morning/evening answering my stupid questions +also sparking my interest again in Packet Radio! + +"Help! I'm trapped in a digipeater! :C (Direwolf 08.18.23)" -KX4AT-10 + +## Notes + +The "direwolf_UHF direwolf_VHF direwolf_10m .conf" 's include an ibeacon to "TOOT" +A Mastodon bot that posts your APRS Messages to the Fediverse Social Media platform +You can find your posts by navigating to "https://aprs.internaluse.net/@"your callsign" +This is maintained by Crossy (VK4XSS/VK3FUR) + +If you do not wish for this to occur, Please comment out the "Mastodon Beacon" + +``` +#-----------------# +# Mastodon Beacon # +#-----------------# +# https://aprs.internaluse.net/@{Your Callsign Here}/ +# Do not attach your SSID "-#" to the end of your Callsign, Simply just your call as is :-) + +IBEACON sendto=IG delay=1 every=180 via=TOOT +``` + + +## Future development + +I will try to maintain this repo as best as I can, +I'm still working on some stuff in the background so expect changes from time to time + +Until next push +Meow :3 + + + diff --git a/RTL-SDR_Support/1200b_RTL-SDR_APRS.sh b/RTL-SDR_Support/1200b_RTL-SDR_APRS.sh new file mode 100644 index 0000000..0075091 --- /dev/null +++ b/RTL-SDR_Support/1200b_RTL-SDR_APRS.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +rtl_fm -f 145.17500M - | direwolf -c /home/$USER/aprs/RTL-SDR_Support/Direwolf_1200b_RX-ONLY.conf -r 24000 -B 1200 -D 1 - \ No newline at end of file diff --git a/RTL-SDR_Support/9600b_RTD-SDR_APRS.sh b/RTL-SDR_Support/9600b_RTD-SDR_APRS.sh new file mode 100644 index 0000000..993908b --- /dev/null +++ b/RTL-SDR_Support/9600b_RTD-SDR_APRS.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +rtl_fm -f 439.10000M - | direwolf -c /home/$USER/aprs/RTL-SDR_Support/Direwolf_RX-only_RTL-SDR.conf -r 24000 -B 9600 -D 1 - \ No newline at end of file diff --git a/RTL-SDR_Support/Direwolf_RX-ONLY.conf b/RTL-SDR_Support/Direwolf_RX-ONLY.conf new file mode 100644 index 0000000..261e0be --- /dev/null +++ b/RTL-SDR_Support/Direwolf_RX-ONLY.conf @@ -0,0 +1,43 @@ + +######################### +# RX Only RTL-SDR IGate # +######################### + +################################## +# Channels, SSID, PTT, Baud Rate # +################################## + +#-------------# +# RTLSDR APRS # +#-------------# +CHANNEL 0 +MYCALL {SSID HERE} +ADEVICE null null + +#------------------# +# Internet Beacons # +#------------------# + +PBEACON sendto=IG delay=3 every=5 symbol="igate" overlay=R lat={LAT HERE} long={LONG HERE} height={HEIGHT ASL HERE} gain={ANTENNA GAIN HERE} comment="{COMMENT HERE}" + +CBEACON sendto=IG delay=1 every=30 info="> {COMMENT HERE}" + +IBEACON sendto=IG delay=1 every=15 + +############################# +# Servers and Login Details # +############################# + +IGSERVER euro.aprs2.net +#IGSERVER noam.aprs2.net +#IGSERVER aunz.aprs2.net +IGLOGIN {SSID HERE} {PASSWORD HERE} + +#-----------------# +# Mastodon Beacon # +#-----------------# +# https://aprs.internaluse.net/@{Your Callsign Here}/ +# Do not attach your SSID "-#" to the end of your Callsign, Simply just your call as is :-) + +IBEACON sendto=IG delay=1 every=180 via=TOOT + diff --git a/Simplex-Support/direwolf-10m-APRS.conf b/Simplex-Support/direwolf-10m-APRS.conf new file mode 100644 index 0000000..7224cd3 --- /dev/null +++ b/Simplex-Support/direwolf-10m-APRS.conf @@ -0,0 +1,82 @@ +################################## +# Channels, SSID, PTT, Baud Rate # +################################## + +#---------------# +# 10 Meter APRS # +#---------------# +#Frequency is 29.250 FM { DO NOT UNCOMMENT THIS OUT } +CHANNEL 3 +MYCALL {SSID HERE} +ADEVICE plughw:1,0 +MODEM 1200 +ARATE 48000 +PTT /dev/ttyUSB0 RTS + +################ +# KISS and AGW # +################ + +AGWPORT 8000 +KISSPORT 8001 + +############### +# Digipeaters # +############### + +#--------------------# +# Simplex Digipeater # +#--------------------# + +# 10 Meter FM Digipeat: +DIGIPEAT 3 3 ^WIDE[3-7]-[1-7]$|^TEST$ ^WIDE[12]-[12]$ TRACE + +########### +# BEACONS # +########### + +#------------------# +# Internet Beacons # +#------------------# + +PBEACON sendto=IG delay=3 every=5 symbol="digi" overlay=I lat={LAT HERE} long={LONG HERE} power={TX POWER HERE} height={HEIGHT ASL HERE} gain={ANTENNA GAIN HERE} comment="{COMMENT HERE}" + +CBEACON sendto=IG delay=1 every=30 info="> {COMMENT HERE}" + +IBEACON sendto=IG delay=1 every=15 + +#-----------------# +# Mastodon Beacon # +#-----------------# +# https://aprs.internaluse.net/@{Your Callsign Here}/ +# Do not attach your SSID "-#" to the end of your Callsign, Simply just your call as is :-) + +IBEACON sendto=IG delay=1 every=180 via=TOOT + +#------------# +# RF Beacons # +#------------# + +PBEACON delay=1 every=7 symbol="digi" overlay=I lat={LAT HERE} long={LONG HERE} power={POWER HERE} height={HEIGHT ASL HERE} gain={ANTENNA GAIN HERE} comment="{COMMENT HERE}" via=WIDE1-1,WIDE2-1 + +IBEACON delay=1 every=10 via=WIDE1-1,WIDE2-1 + +CBEACON delay=1 every=7 info="> {COMMENT HERE}" + +############ +# TX Paths # +############ + +# 10 Meter FM TX +IGTXVIA 3 WIDE1-1,WIDE2-1 + +#---------------------# +# Transmission Limits # +#---------------------# + +#IGTXLIMIT 1000 1000 + +################# +# END OF CONFIG # +################# + diff --git a/Simplex-Support/direwolf_UHF-APRS.conf b/Simplex-Support/direwolf_UHF-APRS.conf new file mode 100644 index 0000000..25faa71 --- /dev/null +++ b/Simplex-Support/direwolf_UHF-APRS.conf @@ -0,0 +1,85 @@ +#----------# +# UHF APRS # +#----------# +CHANNEL 2 +MYCALL {SSID HERE} +ADEVICE plughw:1,0 +MODEM 9600 +ARATE 48000 +PTT /dev/ttyUSB0 RTS + +################ +# KISS and AGW # +################ + +AGWPORT 8000 +KISSPORT 8001 + +############### +# Digipeaters # +############### + +#--------------------# +# Simplex Digipeater # +#--------------------# + +# VHF Digipeat: +DIGIPEAT 2 2 ^WIDE[3-7]-[1-7]$|^TEST$ ^WIDE[12]-[12]$ TRACE + +############################# +# Servers and Login Details # +############################# + +IGSERVER euro.aprs2.net +#IGSERVER noam.aprs2.net +#IGSERVER aunz.aprs2.net +IGLOGIN {SSID HERE} {PASSWORD HERE} + +########### +# BEACONS # +########### + +#------------------# +# Internet Beacons # +#------------------# + +PBEACON sendto=IG delay=3 every=5 symbol="digi" overlay=I lat={LAT HERE} long={LONG HERE} power={TX POWER HERE} height={HEIGHT ASL HERE} gain={ANTENNA GAIN HERE} comment="{COMMENT HERE}" + +CBEACON sendto=IG delay=1 every=30 info="> {COMMENT HERE}" + +IBEACON sendto=IG delay=1 every=15 + +#-----------------# +# Mastodon Beacon # +#-----------------# +# https://aprs.internaluse.net/@{Your Callsign Here}/ +# Do not attach your SSID "-#" to the end of your Callsign, Simply just your call as is :-) + +IBEACON sendto=IG delay=1 every=180 via=TOOT + +#------------# +# RF Beacons # +#------------# + +PBEACON delay=1 every=7 symbol="digi" overlay=I lat={LAT HERE} long={LONG HERE} power={POWER HERE} height={HEIGHT ASL HERE} gain={ANTENNA GAIN HERE} comment="{COMMENT HERE}" via=WIDE1-1,WIDE2-1 + +IBEACON delay=1 every=10 via=WIDE1-1,WIDE2-1 + +CBEACON delay=1 every=7 info="> {COMMENT HERE}" + +############ +# TX Paths # +############ + +# UHF TX +IGTXVIA 2 WIDE1-1,WIDE2-1 + +#---------------------# +# Transmission Limits # +#---------------------# + +#IGTXLIMIT 1000 1000 + +################# +# END OF CONFIG # +################# diff --git a/Simplex-Support/direwolf_VHF-Aprs.conf b/Simplex-Support/direwolf_VHF-Aprs.conf new file mode 100644 index 0000000..157c7d7 --- /dev/null +++ b/Simplex-Support/direwolf_VHF-Aprs.conf @@ -0,0 +1,85 @@ +#----------# +# VHF APRS # +#----------# +CHANNEL 1 +MYCALL {SSID HERE} +ADEVICE plughw:1,0 +MODEM 1200 +ARATE 48000 +PTT /dev/ttyUSB0 RTS + +################ +# KISS and AGW # +################ + +AGWPORT 8000 +KISSPORT 8001 + +############### +# Digipeaters # +############### + +#--------------------# +# Simplex Digipeater # +#--------------------# + +# VHF Digipeat: +DIGIPEAT 1 1 ^WIDE[3-7]-[1-7]$|^TEST$ ^WIDE[12]-[12]$ TRACE + +############################# +# Servers and Login Details # +############################# + +IGSERVER euro.aprs2.net +#IGSERVER noam.aprs2.net +#IGSERVER aunz.aprs2.net +IGLOGIN {SSID HERE} {PASSWORD HERE} + +########### +# BEACONS # +########### + +#------------------# +# Internet Beacons # +#------------------# + +PBEACON sendto=IG delay=3 every=5 symbol="digi" overlay=I lat={LAT HERE} long={LONG HERE} power={TX POWER HERE} height={HEIGHT ASL HERE} gain={ANTENNA GAIN HERE} comment="{COMMENT HERE}" + +CBEACON sendto=IG delay=1 every=30 info="> {COMMENT HERE}" + +IBEACON sendto=IG delay=1 every=15 + +#-----------------# +# Mastodon Beacon # +#-----------------# +# https://aprs.internaluse.net/@{Your Callsign Here}/ +# Do not attach your SSID "-#" to the end of your Callsign, Simply just your call as is :-) + +IBEACON sendto=IG delay=1 every=180 via=TOOT + +#------------# +# RF Beacons # +#------------# + +PBEACON delay=1 every=7 symbol="digi" overlay=I lat={LAT HERE} long={LONG HERE} power={POWER HERE} height={HEIGHT ASL HERE} gain={ANTENNA GAIN HERE} comment="{COMMENT HERE}" via=WIDE1-1,WIDE2-1 + +IBEACON delay=1 every=10 via=WIDE1-1,WIDE2-1 + +CBEACON delay=1 every=7 info="> {COMMENT HERE}" + +############ +# TX Paths # +############ + +# VHF TX +IGTXVIA 1 WIDE1-1,WIDE2-1 + +#---------------------# +# Transmission Limits # +#---------------------# + +#IGTXLIMIT 1000 1000 + +################# +# END OF CONFIG # +################# diff --git a/systemd-services/aprs-rtl-sdr_1200b.service b/systemd-services/aprs-rtl-sdr_1200b.service new file mode 100644 index 0000000..4bb6dea --- /dev/null +++ b/systemd-services/aprs-rtl-sdr_1200b.service @@ -0,0 +1,19 @@ +#-----------------------------------------# +# This is a Systemd service # +# Place this in your /etc/systemd/system/ # +# allowing direwolf and rtl_fm to run # +# along side each other as a "service" # +#-----------------------------------------# +[Unit] +Description=APRS @ 1200baud on RTL_FM and Direwolf +After=network.target + +[Service] +ExecStart=/home/$USER/aprs/RTL-SDR_Support/1200b_RTL-SDR_APRS.sh +Restart=always +User=$USER +Group=$USER +Type=simple + +[Install] +WantedBy=multi-user.target diff --git a/systemd-services/aprs-rtl-sdr_9600b.service b/systemd-services/aprs-rtl-sdr_9600b.service new file mode 100644 index 0000000..8fe65a8 --- /dev/null +++ b/systemd-services/aprs-rtl-sdr_9600b.service @@ -0,0 +1,19 @@ +#-----------------------------------------# +# This is a Systemd service # +# Place this in your /etc/systemd/system/ # +# allowing direwolf and rtl_fm to run # +# along side each other as a "service" # +#-----------------------------------------# +[Unit] +Description=APRS @ 9600baud on RTL_FM and Direwolf +After=network.target + +[Service] +ExecStart=/home/$USER/aprs/RTL-SDR_Support/9600b_RTL-SDR_APRS.sh +Restart=always +User=$USER +Group=$USER +Type=simple + +[Install] +WantedBy=multi-user.target