Pi-Star digital-voice stack

hamctl can act as an on-device configurator for the Pi-Star digital-voice stack — MMDVMHost and the mode gateways/bridges — editing the real config files and controlling the existing systemd units.

Shipped manifests: mmdvmhost, dmrgateway, ysfgateway, dgidgateway, m17gateway, nxdngateway, p25gateway, ysf2nxdn, ysf2p25, aprsgateway, dapnetgateway, timeserver. WiFi scalars (wpa-supplicant) appear under OS Configuration.

On a Pi-Star device

Set in hamctl.toml:

use_systemd = true
config_root = "/etc"      # manifests use {root}/mmdvmhost, etc.
log_root = "/var/log/pi-star"   # for the Activity feed

Each service’s form edits /etc/<name> in place (comments preserved, only changed lines rewritten, secrets shown as password fields), and Start/Stop/Restart drive systemctl … <service-id>.service. Because the config files already exist on a Pi-Star image, these services show as installed immediately.

On a plain Linux box

The MMDVM stack is published by upstream as source only (no binary releases), so those services declare a build [install] recipe — hamctl install mmdvmhost clones and compiles from source. Install the build dependencies first:

sudo apt-get install -y build-essential git nlohmann-json3-dev libmosquitto-dev

hamctl install mmdvmhost preflight-checks these and won’t build until they’re present. See Installing payloads for the full breakdown.

Conventions

  • Each manifest’s id equals the systemd unit basename; there’s no [run] block (the daemons are installed/run separately).
  • Pi-Star booleans are the literals 1/0 (type = "bool", true_value = "1", false_value = "0"); secrets use type = "password".
  • The section-less D-Star files are handled with ini_section = "" virtual sections.
  • Expert/hardware sections (modem, displays) are clearly labelled. The modem Port offers a serial-device picker of the host’s detected ports (/dev/ttyACM0, /dev/serial/by-id/…).

Monitoring

MMDVMHost’s log is the single all-mode activity source: its manifest carries the lastheard and modem status monitors that power the Activity page.