Skip to content

mshv

Multi-mode weak-signal application with multi-stream FT8 decoding

What it does

Decodes and transmits FT8, JT65, JT9, MSK144 and other weak-signal modes, with multi-stream decoding that lets one instance work several callers at once — useful for contest and DXpedition operating.

Why you would want it

Where WSJT-X handles one exchange at a time, MSHV can run several in parallel, which matters when you are the rare station being called.

Before it will work

CAT rig control and sound-card audio routing.

How it installs

  • source (qmake) from https://sourceforge.net/projects/mshv/files/MSHV_2765_Full_Source_Code.zip/download — arch aarch64
  • build dependencies: libqt5websockets5-dev, libasound2-dev, libpulse-dev, libfftw3-dev, qt5-qmake
  • the project's build system has no install rule; the binaries listed below are copied into the prefix instead
  • source (qmake) from https://sourceforge.net/projects/mshv/files/MSHV_2765_Full_Source_Code.zip/download — arch x86_64
  • build dependencies: libqt5websockets5-dev, libasound2-dev, libpulse-dev, libfftw3-dev, qt5-qmake
  • the project's build system has no install rule; the binaries listed below are copied into the prefix instead
  • Closed 2026-08-30 by install_tree (source-build-gaps #6). The history, kept because it dates the evidence: Every MSHV .pro file sets DESTDIR = bin and declares no INSTALLS target — checked in MSHV_2765_Full_Source_Code.zip on 2026-08-28, all eight .pro files — so there is no install rule for the qmake path's third command to run. The schema now carries provides_install_target: false for exactly this, and MSHV cannot use it yet: it reads settings, resources and logs from directories beside the binary in bin/, so copying the executable alone into a prefix produces a program that starts and cannot find its own data. AHRL's answer is a launcher that cds into the build tree, which is why the launcher below carries a working directory. Installing the tree and generating that launcher is M3's launcher-generation work, and MSHV is one of its 14 units. Coil64 is the clean case the new flag does serve.

What it changes on your machine

  • installed tree — /usr/local/share/hammunition/mshv is created and handed to the operator who ran the install by an explicit chown step in the plan (D-043): the software keeps settings, logs or data beside its executable, so the tree has to be writable by whoever runs it. On a shared machine that means anyone who can act as that user can change what the launcher runs.
  • /usr/local/share/hammunition stays root-owned; the tree itself is replaced whole on every install, so anything the software wrote inside it is lost then
  • undo: hammunition uninstall mshv removes the tree

Known problems

Ships a separate qmake project file per architecture and must run from its build directory, so a generated launcher is required. Still on Qt5 with no published port plan.

Toolkit risk

  • qt5: unknown, checked 2026-08-25 — libqt5websockets5-dev. No published Qt6 plan.

Keeping it current

  • probe: none
  • strategy: manual
  • Upstream posts numbered zips; re-pin by hand. Note the DOWNLOAD moved: the lz2hv.org/files/ URL this manifest carried returns 404 (checked 2026-08-28), and MSHV publishes its source on SourceForge. The recorded sha256 was already correct — the file fetched from SourceForge hashes to exactly the a20eb945… this manifest carries — so only the location was wrong, and the digest is what made that provable rather than a guess.

Source: catalog/packages/mshv.yaml