Analog (NBFM) calls are always discarded as unattributed — conventional channels never carry a talkgroup #20

Closed
opened 2026-10-04 01:21:28 -04:00 by logan · 1 comment
Owner

Found 2026-10-04 while making local analog listening work (branch feat/local-ui-usable).

Analog listening now works end to end for live audio (Icecast/Discord). But recording: OP25 reports a conventional analog channel with tgid: None (boatbod tk_p25.py conv_state initialises 'tgid': None and analog never sets it). metadata_watcher only attributes audio to a talkgroup, and orphan audio is DISCARDED by design (DEFERRED.md, metadata_watcher row). So every analog transmission is dropped and unattributed_segments climbs.

Fix shape: for an NBFM system, attribute audio to a synthetic per-channel identity (e.g. tgid derived from the frequency, name = system name) instead of requiring a console grant. Needs drb-audio-review + a C2-side decision on how analog calls are keyed.

Also: analog squelch (op25 nbfm_squelch_threshold, default -60 dB) is now plumbed through op25-container (nbfm_squelch on generate-config) but not exposed on the edge-node dashboard or C2 system config.

Found 2026-10-04 while making local analog listening work (branch feat/local-ui-usable). Analog listening now works end to end for **live audio** (Icecast/Discord). But recording: OP25 reports a conventional analog channel with `tgid: None` (boatbod tk_p25.py conv_state initialises `'tgid': None` and analog never sets it). metadata_watcher only attributes audio to a talkgroup, and orphan audio is DISCARDED by design (DEFERRED.md, metadata_watcher row). So every analog transmission is dropped and `unattributed_segments` climbs. Fix shape: for an NBFM system, attribute audio to a synthetic per-channel identity (e.g. tgid derived from the frequency, name = system name) instead of requiring a console grant. Needs drb-audio-review + a C2-side decision on how analog calls are keyed. Also: analog squelch (op25 `nbfm_squelch_threshold`, default -60 dB) is now plumbed through op25-container (`nbfm_squelch` on generate-config) but not exposed on the edge-node dashboard or C2 system config.
Author
Owner

Fixed in 80a0e88 (PR #27, merged to main 2026-10-04): conventional channels get a synthetic talkgroup ID derived from their frequency, and when a node has only one channel, audio the console says nothing about is attributed to that channel. Two or more channels sharing one audio stream is still open in #26. Squelch is passed through to OP25 but has no control in the dashboard or server config, and it has not been checked on a live node.

Fixed in 80a0e88 (PR #27, merged to main 2026-10-04): conventional channels get a synthetic talkgroup ID derived from their frequency, and when a node has only one channel, audio the console says nothing about is attributed to that channel. Two or more channels sharing one audio stream is still open in #26. Squelch is passed through to OP25 but has no control in the dashboard or server config, and it has not been checked on a live node.
logan closed this issue 2026-10-27 19:56:01 -04:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: logan/node-26#20