Field Guide · term

Also known as: p25_phase1_demod_mode, C4FM vs CQPSK, LSM mode selection

P25 demod-mode selection is the choice between GopherTrunk’s two P25 Phase 1 symbol-recovery paths — C4FM (FM-discriminator, the default) and CQPSK (linear, for sites transmitting Linear Simulcast Modulation) — set per system with p25_phase1_demod_mode, or per channel on a wideband dongle when sites of one system differ. The setting matters because the wrong path does not merely degrade the decode; a C4FM discriminator cannot recover a linearly-modulated signal and vice versa, so the control channel simply never locks or reads as poor.

The LSM myth

The single most damaging misconception — one GopherTrunk’s own docs, config comments, and web config-builder labels taught for a while — is that “simulcast site” implies “use CQPSK/LSM.” It does not. Simulcast is a transmitter coordination technique (timing and phase alignment across towers), not a baseband modulation. Many genuinely multi-tower simulcast sites transmit ordinary C4FM and decode reliably on the C4FM path; forcing CQPSK on them kills the decode entirely (#935). LSM is one specific way of running a simulcast cell, not a synonym for it.

Licensing databases cannot settle the question either: an emission designator such as 10K1D7W covers both C4FM and CQPSK, so no amount of reading the license tells you which demod path a site needs (#935).

The rule

Choose cqpsk empirically, and only empirically: a signal that is demonstrably strong and clean (verify with spectrum or another receiver) yet refuses to lock on the C4FM path is the one legitimate trigger. Never infer it from “the site is simulcast,” from the license, or from third-party site labels. Start with c4fm, and reach for cqpsk only when the evidence forces you to.

Symptom Looks like Actually Fix / check
Site listed as simulcast “Must need CQPSK” Simulcast is transmitter coordination, not a modulation; most such sites decode in C4FM Try c4fm first — it is the default for a reason
Strong, clean carrier; no C4FM lock Weak signal or wrong frequency Possibly a genuine LSM/linear site Set p25_phase1_demod_mode: cqpsk and compare
No lock in either mode Modulation mystery Often gain: the value is in tenths of a dB, so a working ~36 dB from another app is gain: "363", not "36" Check gain units and front-end level — see SDR gain and overload
CQPSK site: CC locks but everything downstream is garbage FEC or signal problem Historically, an odd-rotation recovery bug that only the CQPSK path could trigger (see below) Fixed; on current builds suspect signal or configuration

In the originating report the site that “needed LSM” was Melbourne’s genuinely three-tower simulcast CBD cell — which decodes reliably in C4FM in both GopherTrunk and SDRTrunk. The actual blocker was the gain value; once translated correctly into tenths, the C4FM path locked and granted normally (#935).

Why the two paths really differ

The paths are not interchangeable front ends onto one decoder; they have different failure modes, which is why the choice must be explicit:

  • The CQPSK path is a linear receiver and needs carrier recovery. Early builds had none — a differential decoder cancels constant carrier phase but not per-symbol rotation, and at P25’s 4800 baud even a small offset rotates symbols badly. Getting CQPSK to lock on real simulcast captures took carrier recovery, a multipath-gated frequency estimator, and a fractionally-spaced equalizer (#492).
  • The C4FM discriminator path can only produce even constellation rotations, which coincidentally masked a sign error in rotation recovery for years: odd rotations — exactly the quadrant slips a CQPSK differential demod produces — came back with every dibit flipped, a failure that could only ever appear on simulcast/CQPSK sites (#297).

The practical consequence: “CQPSK doesn’t work on this site” historically had several causes that were bugs, not site properties. On current builds the empirical rule above is the whole procedure.

Per-channel overrides

Where sites of one system genuinely differ in modulation, set the system’s p25_phase1_demod_mode to what most sites use and add a per-channel p25_phase1_demod_mode: override on the exceptions in the wideband channels: list. The override drives both the control-channel decode and the voice grants that tap issues. It is keyed by frequency, not site identity, because the demod path must be chosen before the control channel can lock — see wideband voice taps for the details.

Provenance

  • #935 — the LSM ≠ CQPSK correction, the emission-designator dead end, the gain-in-tenths root cause, and the per-channel override.
  • #492 — what it took to make the CQPSK path lock on real simulcast captures.
  • #297 — the odd-rotation recovery bug that only CQPSK quadrant slips could expose.

See also