Skip to main content

A Meshtastic-APRS Gateway

Project description

aprstastic

PyPI - Version PyPI - Python Version


[!WARNING] Legal operation of this software requires an amateur radio license and a valid call sign.

[!NOTE] Star this repo to follow our progress! This code is under active development, and contributions are both welcomed and appreciated. See CONTRIBUTING.md for details.

New!

:fire: 2-minute YouTube demo

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

:fire: 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.

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aprstastic-0.0.1a20.tar.gz (15.9 kB view details)

Uploaded Source

Built Distribution

aprstastic-0.0.1a20-py3-none-any.whl (17.6 kB view details)

Uploaded Python 3

File details

Details for the file aprstastic-0.0.1a20.tar.gz.

File metadata

  • Download URL: aprstastic-0.0.1a20.tar.gz
  • Upload date:
  • Size: 15.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.26.0

File hashes

Hashes for aprstastic-0.0.1a20.tar.gz
Algorithm Hash digest
SHA256 0c24be0c82dbfa530d8189e9ee98798fd3fb664087b04b9fdeaa92788d2a9474
MD5 08a0d2d1299aeadc3fa1f9dac8d76743
BLAKE2b-256 0df2d1b6a46fb578003cf0cd9435b0470f72e74e3907203dd16cc5603e2914b3

See more details on using hashes here.

File details

Details for the file aprstastic-0.0.1a20-py3-none-any.whl.

File metadata

File hashes

Hashes for aprstastic-0.0.1a20-py3-none-any.whl
Algorithm Hash digest
SHA256 1276c76b746bf85e66cb4dfee1015be907e5e818f191cc3587872834f3f06da5
MD5 ee16cdcb18f2c8b24ef8c6bdb8c21922
BLAKE2b-256 c1de00f9ee3016b36fe08a7b28f6acc07662a66bc498452594a7881909b92a02

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page