About this project

pdn-soundmodem is a headless soundcard packet-radio modem written in C#/.NET 10, designed without GUI or Qt dependencies. It serves dual roles: as an in-process transport for the PDN node (with native DCD and sample-accurate TX-complete), and as a standalone KISS-TCP daemon compatible with applications like LinBPQ or APRS software. The project ships prebuilt .deb packages for amd64, arm64, and armhf with systemd integration — no separate .NET runtime required. It supports multiple modem families including IL2P (spec v0.6), AX.25, ARDOP (Winlink-compatible via ardopcf interface), POCSAG paging, FreeDV datac modes, and MIL-STD-188-110D App D waveforms — all validated against real hardware or reference implementations. Each mode explicitly declares its interoperability partners (e.g., NinoTNC, Dire Wolf, QtSoundModem V26A). Audio center frequency is configurable per modem, mimicking QtSoundModem’s behavior. A built-in browser-based waterfall displays real-time spectrum, decoded frame metadata (callsign, SNR, offset), transmission power/SWR, and modem status. It works with local soundcards or remote UberSDR web receivers (receive-only). The daemon includes CLI tools for encoding/decoding POCSAG pages and replaying WAV files for testing. The codebase is GPL-3.0-or-later, standing on prior art including UZ7HO SoundModem, Dire Wolf, MMDVM-TNC, and ka9q_ubersdr. Provenance is documented per component. Builds via dotnet CLI; Debian packages built via packaging scripts. NuGet package ID: pdn-soundmodem; namespace: Packet.SoundModem.