Samoyed is a fully-featured software modem/TNC for packet radio. It supports AX.25 v2.2, FX.25, IL2P, APRS, multi-speed modems (300-9600 bps), digipeating, IGates, and more. Samoyed is a Go port of Dire Wolf.
Status: Port functionally complete, but broad testing needed - consider this pre-release, and likely to contain bugs. Please file issues if you encounter problems.
Dire Wolf is a mature, capable piece of software written in C. Samoyed is (currently) a near-straight port to Go, motivated by:
- Better tooling — Go's testing, linting, and static analysis ecosystem, as well as the stdlib
- Simpler builds — no cmake, no preprocessor conditionals for test infrastructure
- Reduced platform scope — dropping old Windows / old CPU complexity makes the codebase easier to extend
- Easier contribution — idiomatic Go and improved test suites should make things more approachable for new contributors
Samoyed aims for broad-strokes compatibility with Dire Wolf to minimise switching costs.
Samoyed inherits Dire Wolf's feature set:
- APRS encoder/decoder — position, objects, messages, telemetry, weather, and more
- Modems — 300 bps AFSK (HF), 1200 bps AFSK (VHF/UHF), 2400 & 4800 bps PSK, 9600 bps GMSK/G3RUH, AIS, EAS SAME
- FX.25 — Forward Error Correction fully compatible with existing AX.25 systems
- IL2P — Improved Layer 2 Protocol with lower overhead FEC
- KISS interface — TCP/IP, serial port, and Bluetooth
- AGW network interface — TCP/IP, compatible with many third-party applications
- Digipeater — APRS and traditional packet radio, with flexible cross-band and filtering options
- Internet Gateway (IGate) — bridging disjoint radio networks via the internet
- GPS tracker beacons — SmartBeaconing support
- APRStt gateway — DTMF tone sequences into the APRS network
- AX.25 v2.2 connected mode — automatic retransmission and in-order delivery
- DTMF decoding and encoding
- Morse code generator
- DNS Service Discovery — network KISS TNC auto-discovery (Linux)
- Concurrent operation with multiple soundcards and radio channels
Pre-built binaries are available on the GitHub Releases page, including tarballs and .deb packages.
The .deb packages are recommended for Debian-based systems (Debian, Ubuntu, Raspberry Pi OS, etc.) and can be installed with:
sudo apt install ./samoyed-binary_*.debThe primary binary is samoyed-direwolf. Run it with --help for a full list of options:
samoyed-direwolf --helpFor more detail on configuration and features, see the Dire Wolf documentation — Samoyed aims for broad compatibility with Dire Wolf.
See .github/workflows/build-and-test.yml for package dependencies
git clone https://github.com/doismellburning/samoyed
cd samoyed
make cmds # build all binaries into dist/
make test # run the full test suiteSee AGENTS.md for general development notes and style guidelines.
Key make targets:
| Target | Description |
|---|---|
make all |
Build everything and run all tests — run before committing |
make cmds |
Build all binaries |
make test |
Run the full test suite |
make check |
Run linters (vet, golangci-lint, shellcheck, reuse) |
make fix |
Auto-fix linting issues where possible |
make coveragereport |
Show test coverage breakdown |
make stats |
Show lines-of-code breakdown (C vs Go) |
See CONTRIBUTING.md.
| Platform | Status |
|---|---|
| x86_64 Linux | Primary target |
| arm64 Linux | Supported |
| macOS | Supported |
| Windows | TBD (depends on demand / testability) |
Samoyed is based on Dire Wolf by John Langner WB2OSZ — a modern software replacement for hardware TNCs, with outstanding receive performance. Dire Wolf decodes over 1000 error-free frames from the WA8LMF TNC Test CD, outperforming all hardware TNCs and first-generation soundcard modems.
For Dire Wolf documentation, see the Dire Wolf doc directory.
GPL-2.0-or-later. See LICENSES/ and REUSE.toml for full details.
Samoyed is a fork of Dire Wolf — see AUTHORS.md for authorship and attribution.