qtsoundmodem¶
Soundcard packet modem with a scope — an alternative to Direwolf
- Version recorded: 24.45
- Categories:
soundcard-modems - Upstream: https://github.com/g8bpq/QtSoundModem
What it does¶
Demodulates and modulates AX.25 packet from a sound card and presents a KISS interface over TCP, with a waterfall and a constellation display so you can see what the modem is actually receiving. It runs several modems at once on different audio channels, including 1200 baud AFSK and higher-rate modes.
Why you would want it¶
Direwolf is the default soundcard TNC in this catalog and is excellent headless. This is the one with a screen: the scope and constellation make audio level and tuning problems visible instead of inferred, which is exactly the thing that costs new packet operators the most time. Running both is normal -- Direwolf for the station that stays up, this for working out why it is not decoding.
Before it will work¶
Sound card audio to and from the radio, and PTT -- a serial control line or VOX. A program to connect to its KISS port: LinBPQ, Xastir, Pat or anything else that speaks KISS over TCP.
How it installs¶
- git (qmake) — https://github.com/g8bpq/QtSoundModem at
24.45 - build dependencies:
build-essential,pkg-config,qtbase5-dev,qt5-qmake,qtbase5-dev-tools,libqt5serialport5-dev,libasound2-dev,libpulse-dev,libfftw3-dev - the project's build system has no install rule; the binaries listed below are copied into the prefix instead
- Built from this tag in a Debian 13 container on 2026-08-29 -- qmake exits 0, make exits 0, and the binary appears. 73Linux installs the prebuilt binary and this builds the source, and the difference matters. Upstream publishes bare, unversioned executables in a directory called
Beta:QtTermTCP,QtTermTCP15,QtSoundModem,QtSoundModem64. No version in the filename, no checksums, replaced in place. Pinning a sha256 to one of those would break the moment the author rebuilt. He also tags source on GitHub, which is an ordinary pinned build with none of that fragility -- the same findinglinbpqrecorded, and DESIGN.md's lesson from it: check how upstream publishes before accepting how an existing installer fetches.
Binaries this produces:
QtSoundModem→qtsoundmodem
Known problems¶
Unaffected by Linux 7.1's removal of the kernel AX.25 stack: it is a userspace modem exposing KISS and AGW over TCP, like Direwolf. See docs/reference/kernel-ax25.md. It needs four permissive compiler flags to build on a current toolchain, recorded in the install block rather than left for you to discover. One of them silences an implicit declaration of Sleep(), which is a Windows function -- the Linux path through that code should be treated as less exercised than the Windows one. Transmit audio level decides whether anyone decodes you, and the scope this program provides is the best tool available for getting it right, which is most of the argument for installing it.
Toolkit risk¶
qt5: unknown, checked 2026-08-29
Keeping it current¶
- probe: github tags (
g8bpq/QtSoundModem) - strategy: rebuild
- 24.45 is the newest tag and is date-shaped; the older ones are 0.7x, so sorting tags as version strings gets this wrong. The default branch's head is 9cd2735bc970, 2025-11-10 (read from the branch, D-032).
Where to get help with the software itself¶
John Wiseman, G8BPQ. BPQ32 group on groups.io. No LICENSE file and no header (checked at tag 24.45, 2026-08-29); carried under D-033, fetched from the author's own repository and never mirrored.