Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

aprstastic

PyPI - Version PyPI - Python Version


New!

🔥 Change your node's icons. See APRS_SYMBOLS.md for details.

🔥 2-minute YouTube demo

🔥 Over-the-air discovery and registration now supported. See image below.

🔥 Call sign registrations are now (optionally) beaconed to MESHID-01 to facilitate a global roaming profile.

Introduction

aprstastic is a bidirectional Meshtastic APRS gateway for Meshtastic users with amateur radio licenses. It runs on stock Meshtastic devices (LongFast, 915MHz, etc.), allowing you to participate and extend the public network, while using pre-registered associations between Meshtastic device IDs and amateur radio call signs to bidirectionally gate APRS packets in a way that is compliant with FCC regulations. To this end, operation requires at least two Meshtastic devices: one to serve as the gateway, and the others are the clients. The following image demonstrates how operators can register with the gateway (and the broader global network, if registration beaconing is enabled):

Example aprstastic registration flow. Start by sending 'aprs?' to any public channel. Wait for a direct message. Reply with !register CALLSIGN-SSID.

In this scenario, direct messages to the gateway will be forwarded to APRS with the "from" call sign KK7CMT-8. Likewise, APRS messages addressed to KK7CMT-8 will be routed to the originating/registered Meshtastic device via direct message. If registration beaconing is enabled, registration will also trigger a one-time APRS broadcast of the device-id to call sign mapping, allowing all other participating aprstastic gateways to learn the association. This enables devices to roam between participating gateways.

These interactions are demonstrated in the following YouTube video https://www.youtube.com/watch?v=qUvpZUwl-cY

Each gateway mimics an iGate, and can support multiple Meshtastic users, as long as their call signs and devices are pre-registered.

Special Commands

Various special commands can be issued by sending direct Meshtastic messages to the gateway. The following commands are currently supported.

Register a device:

Use the following command to register a Meshtastic device to a call sign, replacing <YOUR_CALLSIGN> appropriately:

!register <YOUR_CALLSIGN>

e.g.,

!register N0CALL-1

Unregister a device:

Use the following command to unregister a Meshtastic device AND call sign.

!unregister

Print version information:

Use the following command to print the gateway's info and version.

!version

Installation, Configuration, and Running

pip install aprstastic
python -m aprstastic

The first time aprstastic runs, it will create a sample aprstastic.yaml file. Edit the sample, then run it again.

nano ~/.config/aprstastic/aprstastic.yaml
python -m aprstastic

Addressing APRS messages

How does the gateway know the addressee ("to" address) of APRS packets when all Meshtastic messages are addressed to the gateway device?

To address this, we adopt the "CALLSIGN: " convention. Messages should start with the addressee's call sign, followed by a colon. If this is omitted, then the call sign of the addressee is taken to be that of the previous message (i.e., to respond to the previously received message).

As an example, from Meshtastic you could interact with the Winlink gateway (WLNK-1) as follows:

WLNK-1: ?

The reply from Winlink would be:

NOCALL-1: SP, SMS, L, R#, K#, Y#, F#, P, G, A, I, PR, B (? + cmd for more)

You could then simply enter:

L

and it would assume a reply to WLNK-1, producing the following response:

NOCALL-1: 10/11/2024 23:52:30 No messages.

Compliance

aprstastic only allows messages to transit if they are found in the client device-to-callsign mapping, and are thus attributable to a licensed operator. Random messages published on channels like LongFast, or from other devices do not qualify. All messages are unencrypted before they leave Meshtastic, so all APRS traffic is clear text.

A Note for APRS-IS Admins

Instances of the aprstastic gateway identify themselves to the APRS-IS level 2 servers with the software version number APZMAG. In accordance to the Protocol Reference, APZ designates an experimental application in development. In this case, MAG is short for 'Meshtastic-APRS Gateway'.

License

aprstastic is distributed under the terms of the MIT license.

Metadata

Release files for aprstastic 0.0.1a26

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aprstastic 0.0.1a26
File Size Uploaded Provenance
aprstastic-0.0.1a26.tar.gz 20.6 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for aprstastic 0.0.1a26
File Interpreter ABI Platform
aprstastic-0.0.1a26-py3-none-any.whl Python 3 none any Details

Total release size: 43.1 kB

Release files / aprstastic-0.0.1a26.tar.gz

Download URL aprstastic-0.0.1a26.tar.gz
Size 20.6 kB
Tags Source
SHA-256 checksum
How to use checksums
d6846993af8d925fa4c3a27c86b4376739ab86e0b4b47e6e4f378983a1bf5470
BLAKE2b-256 checksum
How to use checksums
7270d8b82b3dec8adaffe96f70eafd1eb9f1dba87e1dec6586a7129cc608d162
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-httpx/0.26.0

Release files / aprstastic-0.0.1a26-py3-none-any.whl

Download URL aprstastic-0.0.1a26-py3-none-any.whl
Size 22.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
06f35405d2489db922938e093ce72440a57b7be82321be819e083c8d2472591f
BLAKE2b-256 checksum
How to use checksums
bd92e63af29dba43e5c3fc56500a85010a0579c335548e1049710340e784ed9f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-httpx/0.26.0

Security for aprstastic 0.0.1a26

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page