Skip to content

chrissnell/graywolf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,789 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Graywolf

Graywolf is a modern APRS station with a software modem, digipeater, iGate, and web UI. It bundles everything you need to put an APRS station on the air — from raw audio demodulation to APRS-IS gating — and makes it easy with a browser-based configuration interface.

Download the Latest Release — prebuilt for Linux (Debian/Ubuntu and Fedora/RHEL), macOS, and Windows.

Read the Handbook — installation, configuration, operation guide, and REST API reference.

Known-Working Configurations — community-tested hardware setups with exact settings. Check here for your device, and submit a PR if yours isn't listed.

Graywolf APRS Discord — community chat for help, discussion, and development.

Graywolf is used all around the world! See a map of currently active stations

Written by Chris Snell, NW5W.

The modem is written in Rust and includes a port of the AFSK demodulator from Dire Wolf by WB2OSZ. The decision-feedback AGC and hard-limiter correlator techniques are credited to Ion Todirel (W7ION), from his libmodem.

The AX.25 decoding, APRS operatations (beacons, digipeater, and iGate), and the web API is handled by a service written in the Go programming language.

The web frontend was built in Svelte.

Performance

Graywolf's AFSK demodulator beats Direwolf's best mode (-P AD+) on every track of the WA8LMF TNC test CD, at about 5% of a Raspberry Pi 5.

WA8LMF Track Direwolf Graywolf
01 — 40-min traffic 1020 1026
02 — DE-emphasized Mic-E 1000 1000
03 — flat Mic-E (100 reps) 100 100
04 — drive test 107 108

Reproduce with ./bench.sh.

Features

Graywolf dashboard

  • Modern Web UI - GW is managed via the browser, with a responsive interface that works well on desktops and smartphones.

  • Software Modem - High performance DSP written in Rust that's slightly more effective than Direwolf and much better than most hardware TNCs. Efficeint: uses about 19% of a single CPU core on a Raspberry Pi 5.

  • Live Map - Like having a private aprs.fi for your station. Real-time APRS map with trails, digipeater paths, weather overlays, and beautiful animated NEXRAD weather radar, all rendered on our private vector basemap. You can download maps for your state/province/country for offline use!

  • Messages - SMS-style APRS messaging with delivery status and unread badges

    • Direct messages with auto-ACK and retry
    • Tactical callsigns (e.g. GRAYWOLF, AMIGOS) for group nets
    • RF-first delivery with APRS-IS fallback
    • Long messages up to 200 characters
  • Actions - Trigger scripts remotely with specially-crafted APRS messages

    • Can trigger via shell script, Powershell script, or webhook
    • Can be secured with one-time passwords a la Google Authenticator or 1Password
  • AX.25 Terminal - Built-in connected-mode terminal client in the web UI

    • Connect to BBSes, nodes, and other stations over AX.25
    • Macros and configurable presets for quick connects
    • Live channel monitor
  • Push-to-Talk - Multiple PTT methods for any setup

    • Serial RTS/DTR (Digirig, USB-serial adapters)
    • CM108 USB HID GPIO (AIOC, homebrew sound card adapters)
    • Linux GPIO (Raspberry Pi, BeagleBone)
    • Hamlib rigctld (CAT control)
    • VOX (voice-operated keying, no PTT wiring required)
  • Digipeater - Full-featured APRS digipeater

    • WIDEn-N path handling
    • Preset-driven configuration (fill-in, wide-area, etc.)
    • Duplicate suppression
    • Per-path filtering
  • iGate - Bidirectional APRS-IS gateway

    • RF → APRS-IS and APRS-IS → RF gating
    • Configurable filters
    • Packet origin tracking in logs
  • TNC Interfaces - Speak the protocols other packet software expects

    • KISS TNC with native serial and network (TCP) support
    • AGWPE TCP interface
  • Beacons and GPS - Position reporting made easy

    • Static and GPS-driven position beacons
    • Status and telemetry beacons
    • Configurable beacon intervals and paths
  • Observability

    • Prometheus metrics
    • Packet logging to SQLite database, with search ability
    • Live packet stream in the web UI
  • Simple installation - single binary, SQLite config database

    • systemd service unit
    • Debian/Ubuntu (APT), Red Hat (RPM), and Arch (AUR) packages
    • Windows installer
    • macOS binaries
    • Runs on x86-64 and ARM (Raspberry Pi)

Which download do I use?

Grab the build that matches your hardware from the latest release. On Linux, pick the .deb (Debian/Ubuntu), .rpm (Fedora/RHEL), or .tar.gz (anything else) with the matching architecture suffix.

Your hardware Build to download
PC, server, or mini-PC (Intel/AMD 64-bit) x86_64 (amd64)
Raspberry Pi 3 / 4 / 5, Pi Zero 2 W, or any ARM board running a 64-bit OS arm64 (aarch64)
32-bit OS on a NEON-capable ARMv7 board — Pi 2 / 3 / 4, Rockchip RV1106, BeagleBone, most modern SBCs armv7l
Oldest Pis — Pi 1, Pi Zero / Zero W (ARMv6) armv6l
macOS, Apple Silicon (M1–M4) macOS arm64
macOS, Intel macOS x86_64
Windows Windows_x86_64 installer

Not sure? On Linux, run uname -m — its output is exactly the suffix to look for: x86_64, aarch64 (use the arm64 build), armv7l, or armv6l.

armv6l vs. armv7l: both are 32-bit ARM hard-float. The armv7l build enables NEON, so the Rust modem's demodulator runs vectorized and noticeably faster — use it whenever your board is Cortex-A7 or newer. The armv6l build is the universal fallback that runs on every 32-bit Pi (including the ARMv6-only Pi 1 / Zero) but stays scalar; it will also run on ARMv7 boards, just slower. Don't use armv7l on an ARMv6-only Pi — it will fail with an illegal-instruction error.

Running a 64-bit OS on a Pi 3/4/5? Prefer the arm64 build over either 32-bit one.

About

A fully-featured APRS stack with modern web UI

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors