A lightweight, fully-automated APRS bot that checks in to the global #APRSThursday net every Thursday at 9:00 PM Malaysia Time (MYT). Built with Python and packaged in Docker with built-in cron for zero-hassle weekly operation.
- ⏰ Sends weekly check-in message on Thursdays at 9PM MYT
- 🌐 Connects to APRS-IS (
aprs.hamradio.my:14580) - 🐍 Written in pure Python using
aprslibandpytz - 🐳 Dockerized with cron – runs standalone, no host
cronorsystemdrequired - 🔌 Manual test mode for instant triggering (
--test) - 🧠 Lightweight, ideal for low-resource systems (e.g. Raspberry Pi, VPS)
- 📤 Contributes to the #APRSThursday global net
This bot sends the following APRS message to APRSPH:
HOTG Hello from CALLSIGN
This checks into the #APRSThursday net, encouraging global participation in APRS messaging.
- Docker
- Docker Compose
- APRS-IS credentials:
- Your callsign (e.g.
9M2PJU) - Your passcode (see Passcode Generator)
- Your callsign (e.g.
git clone https://github.com/9M2PJU/9M2PJU-APRS-Thursday-Check-In-Bot.git
cd 9M2PJU-APRS-Thursday-Check-In-BotOpen aprs-thursday-check-in.py and update all the variables
docker compose builddocker compose up -dThe bot will now run continuously and auto-send your check-in every Thursday at 9:00 PM MYT.
To send the APRS message immediately (for testing), run:
docker compose run --rm aprs-thursday-check-in python /app/aprs-thursday-check-in.py --testdocker compose down- To change the message or server details, edit
aprs-thursday-check-in.py. - Log output is stored in
./log/cron.logby default.
Edit your crontab with:
crontab -eAdd the following line to run every Thursday at 9:00 PM Malaysia Time (UTC+8):
0 21 * * 4 /usr/bin/python3 /path/to/aprs-thursday-check-in.py >> /path/to/log/aprs.log 2>&1📌 Make sure to replace /path/to/ with your actual Python script and log file paths.
#APRSThursday is a weekly global net for APRS users. It happens every Thursday from 0000Z to 2359Z (the whole day in UTC time). The goal is to encourage hams to send APRS messages and have some fun.
You join by sending a message to ANSRVR (an APRS messaging group server).
CQ HOTG Your message here
CQ= calling anyoneHOTG= stands for "Hams on the Gram" (the APRS group)Your message here= whatever short message you'd like to send
📍 Send this as an APRS message to the callsign: ANSRVR
When you do this:
- You join the HOTG group for 12 hours
- Your message is sent to everyone in the group
- You’ll also receive any messages sent by others during that time
When you're done listening or want to stop receiving messages, send this message to ANSRVR:
U HOTG
U= Unsubscribe from HOTG
This helps reduce traffic on the APRS RF network.
If you want to stay subscribed without sending a message to the group, send:
K HOTG
K= Silent join
This keeps you in the group for another 12 hours without alerting others.
Useful if you’re on RF and don’t want to flood the airwaves.
If you prefer not to have your message forwarded to the group (to avoid RF congestion), you can send your check-in directly to APRSPH.
HOTG Your message here
- Your check-in is logged for #APRSThursday
- Your message is NOT sent to the group
- You'll get a confirmation reply with timestamp and a URL
📝 This method still counts for the #APRSThursday logs.
- You can view visual check-ins at aprs.to (by N2RWE) — started July 13, 2023
- The APRSPH logging system started on January 11, 2024
Created and maintained by 9M2PJU 🇲🇾
Licensed under the GNU GPL 3.0
This bot supports the global #APRSThursday initiative to encourage APRS message-based activity every week.