A modular, framework-first, python APRS logger for low cost RTL-SDR devices.
The following are required to be installed and configured on your system.
- An RTL-SDR compatible device.
- Some form of Unix-like system.
- Python >= v3.6
- rtl_fm
- multimon-ng
- An amateur radio license, callsign for optional APRS-IS integration.
config/configuration.json
contains all basic runtime configuration settings.- For optional APRS-IS integration, have the following environment variables set:
PYPACKET_USERNAME
- Your call sign for APRS-IS.PYPACKET_PASSWORD
- Your password for APRS-IS.PYPACKET_LATITUDE
- The latitude for optional beacon packets. Read up on ambiguity when utilizing this.PYPACKET_LONGITUDE
- The longitude for optional beacon packets. Read up on ambiguity when utilizing this.- Rename
.env.example
to.env
and fill in the appropriate values.
- Run
pip install -r requirements.txt
The Automatic Packet Reporting System (APRS) is never private and never secure. As an amateur radio mode, it is designed solely for experimental use by licensed operators to publicly communicate positions and messages. Encryption on amateur radio frequencies is forbidden in most localities. As such, connections to APRS-IS are also unsecured and only intended for licensed amateur radio operators.
- Run
./main.py
.- The application will start and immediately begin listening on the configured frequency.
- Logged packets will be output to your terminal, written to a file in the
logs
directory, and (if configured) uploaded to APRS-IS.
- 5/31/2020 (v5.0)
- Thank you to everyone who contributed bug reports, enhancements, and pull requests!
- Support for squelch level and PPM error configuration options.
- SIGINT is now properly handled, exiting subprocesses before terminating main thread.
- If configured with latitude and longitude, will transmit an IGate beacon to APRS-IS every X minutes (defaulted to 10, configurable).
- CLI packet handler has been moved to its own processor class.
- New readme logo.
- 5/6/2020 (v4.1)
- Simple flat file environment variable support via python-dotenv.
- 11/17/2019 (v4.0)
- All new tabular CLI UI for packet output.
- Can now be configured to have N processors.
- Configuration format improvements.
- New dependencies, be sure to
pip install -r requirements.txt
. - Resolves bug #11 where an rtl_fm startup crash was not being detected, causing excessive CPU usage.
You are welcome to contribute by submitting pull requests on GitHub if you would like. Feature / enhancement requests may be submitted via GitHub issues.
- Inspired by the excellent pymultimonaprs project. I more or less learned basic Python threading by studying their work. Huge thanks to them!
- Utilizes aprs-python for parsing decoded packets, uploading to APRS-IS. None of this would be possible without this library.
- Radio tower icon found in the logo courtesy of The Noun Project.
- [ ~ Dependencies scanned by PyUp.io ~ ]