====== APRS ======
APRS is Automatic Packet Reporting System.
It is related to, but distinct from, [[packet|Packet Radio]].
Lots more info on APRS [[https://en.wikipedia.org/wiki/Automatic_Packet_Reporting_System|here]], but for now, just some specific notes.
===== APRS on BPQ =====
BPQ (packet node software) supports APRS pretty well, it turns out.
See [[packet:bpq_nodes_on_aprs|BPQ Nodes on APRS]] for a how-to guide on integrating an APRS iGate into BPQ. This will allow you to use BPQ to listen for APRS packets and 'iGate' them to the Internet. One use of this would be to have, say, a 70cm packet port, and a 2m APRS port tuned to 144.800MHz. Another option is to use the iGate feature of BPQ to listen for APRS packets on a 'normal' packet frequency. After all, APRS is not just for location tracking. A number of OARC members are using APRS to send status updates from packet nodes to the Internet.
Michael GM5AUG uses this script to collect the CPU temperature of the Raspberry Pi his packet node runs on:
#!/bin/bash
temp=$(/usr/bin/vcgencmd measure_temp) # Reads CPU temperature - writes to variable
nowtime=$(date '+%F_%H:%M:%S') # Formats time/date - writes to variable
echo -n ">CPU " > /home/gm5aug/linbpq/status # Writes the first part of the APRS status beacon to a file. Note the single '>' to start the file afresh.
echo -n $temp >> /home/gm5aug/linbpq/status # Adds the CPU temperature to the file
echo -n " at " >> /home/gm5aug/linbpq/status # Adds the word 'at' to the beacon
echo $nowtime >> /home/gm5aug/linbpq/status # Adds the time to the beacon
This file, saved (in this case) in /home/gm5aug/linbpq
now contains the following:
>CPU temp=43.8'C at 2024-09-22_19:55:01
Michael then runs this script every five minutes using a 'crontab' entry:
*/5 * * * * /home/gm5aug/cpu.sh # */5 meaning every 5 mins. Script located in /home/gm5aug
To send this data to APRS, we can then configure BPQ to read the beacon data from a file:
1) Enter your BPQ web UI, click on 'Ports' at the top. Choose the port you wish to transmit the data over, and click 'Beacons':\\
{{::2024-09-22t19_59_22_685817656_01_00.png?400|}}\\
2) In the first box, enter how frequently you wish the data to be transmitted. In the 'To' box, type 'BEACON'. In the 'Send From File' box, link to the 'status' file that we've created above. Press 'Save' and 'Test'.\\
{{::2024-09-22t20_01_25_121786735_01_00.png?400|}}\\
3) If you monitor the port (`lis $port` in BPQ), and press the 'Test' button, you *should* see the following.\\
{{::2024-09-22t20_05_13_831498037_01_00.png?400|}}\\
4) Turning to aprs.fi, we can now see it on the Internet, having been picked up by an iGate listening on the frequency:\\
{{::2024-09-22t20_08_14_065870141_01_00.png?400|}}\\
\\
Needless to say, any data you can save to a text file, you can send as a APRS beacon. Just change the shell script above to output your chosen information. You could even change what information you send each time!
===== APRS Telemetry =====
APRS supports telemetry, and aprs.fi makes it pretty, [[https://aprs.fi/telemetry/?call=M0LTE-2&date_start=2024-09-22+18%3A00%3A00&date_end=2024-09-22+18%3A44%3A11|like this]].
A very rough / raw example of how to get the Linux kernel implementation to send APRS telemetry:
beacon -s -c "M0LTE-2" -d "APRS" 2m ":M0LTE-2 :PARM.Rabbits,Rats,Voles"
beacon -s -c "M0LTE-2" -d "APRS" 2m ":M0LTE-2 :UNIT.count,V,C"
beacon -s -c "M0LTE-2" -d "APRS" 2m "T#000,1,3,5"
beacon -s -c "M0LTE-2" -d "APRS" 2m "T#001,2,4,5"
beacon -s -c "M0LTE-2" -d "APRS" 2m "T#002,5,3,5"
beacon -s -c "M0LTE-2" -d "APRS" 2m "T#003,1,2,2"
beacon -s -c "M0LTE-2" -d "APRS" 2m "T#004,0,0,0"
===== LoRa APRS =====
This is a thing. More to come later.