-
Notifications
You must be signed in to change notification settings - Fork 7
Trunking Configuration
Detailed setup for the trunked-radio systems NyxScope follows: P25 Phase 1 + Phase 2, EDACS (Standard and EA), NXDN48 and NXDN96. The MANUAL.md has the conceptual overview; this page is the practical reference for getting a specific system to work.
- P25 Phase 1
- P25 Phase 2 TDMA
- EDACS
- NXDN
- Control-channel discovery
- Talkgroup management
- Encryption
- Common problems
P25 Phase 1 is C4FM-modulated at 4800 baud with IMBE voice. NyxScope decodes it natively (no DSD subprocess needed for voice).
- Open Trunking in the right dock → + New System.
- Type: P25-1.
- Add the control channel frequencies (one or more — NyxScope rotates if one becomes unreachable).
- Optional: set the NAC explicitly (a 12-bit hex value like
0x293). If you leave NAC unset, NyxScope accepts whichever NAC is seen on the CC. - Add talkgroups by ID (decimal), each with a friendly name. CSV/JSON import is in the right-click menu.
- Click Save → Activate.
NyxScope will lock onto the control channel, parse TSBKs, follow voice grants to the assigned voice channel, and decode IMBE audio.
NyxScope's native P25 voice decoder uses soft-NID and best-effort IMBE FEC — it produces useful audio on weak signals where stock decoders give up entirely. On a marginal P25 system (low signal, multipath, edge of coverage) you'll typically get 8–8.5 IMBE frames per LDU (out of 9 max).
You'll notice some audio artifacts on weak frames but the call stays intelligible. On strong signals, you get full-quality audio.
The system is decoding but you don't have a talkgroup imported for that TGID yet. Either:
- Add it manually in the Trunking dock.
- Use Frequency Lookup (right-click) to check the RadioReference database for the system's TG list.
- Import from a CHIRP/RadioReference CSV (Trunking → Import).
Phase 2 voice channels use H-DQPSK with AMBE+2 vocoding and TDMA timeslots. The control channel is still Phase 1 C4FM — only voice channels are TDMA.
Phase 2 is auto-detected from the IDEN_UP_TDMA ($35) message on the control channel. If the system advertises a TDMA frequency table, NyxScope automatically routes voice grants on those channels through the Phase 2 decoder.
You don't configure Phase 2 separately. Set the system up as P25-1, and Phase 2 voice channels work transparently when present.
A small orange P2 badge appears next to the voice frequency in the Trunking dock when Phase 2 is active.
- Confirm the system actually broadcasts IDEN_UP_TDMA. Some systems run mixed Phase 1 + Phase 2, others are pure Phase 1.
- Marginal signal hurts Phase 2 harder than Phase 1 because H-DQPSK is more sensitive to multipath. If voice is garbled, try a better antenna or a closer site before assuming a decode bug.
EDACS (Enhanced Digital Access Communications System) is a Motorola-era trunking standard still in use by some legacy public-safety systems. NyxScope's native EDACS decoder handles Standard and EA (Extended Addressing) modes; ESK is auto-detected.
- + New System → Type: EDACS-Standard or EDACS-EA.
- Add the control channel frequency (EDACS uses a single dedicated CC; not rotating).
- Add LCN ↔ frequency mapping — EDACS systems index voice channels by Logical Channel Number, not frequency. The system's LCN map must be entered manually (CSV import works).
- Add talkgroups by AFS (Standard) or 16-bit TGID (EA).
- Save and activate.
NyxScope auto-detects from the site-ID pattern. EA mode is identified by mt1=0x1F, mt2=0xA system messages. If you're unsure which your system is, leave it on whichever the auto-detect picks; the badge in the Trunking dock shows the active mode.
dsd-neo's -fh EDACS mode is broken (SPS hunt loops endlessly, 0 frames). NyxScope ships a native EDACS CC decoder that doesn't go through dsd-neo. Voice channels (analog FM, or digital ProVoice if enabled) still go through the FM demod / dsd-neo path.
Florida SLERS (Hudson site) — EA + ESK — confirmed 13 voice grants over an 8-minute test, voice follows with the standard 15-second CC check-in cycle.
NXDN48 is 4FSK at 4800 baud with 6.25 kHz channel spacing. NXDN96 is 9600 baud / 12.5 kHz. NyxScope ships native CC decoders for both.
- + New System → Type: NXDN-48 or NXDN-96.
- Add control channel frequency.
- Add LCN ↔ frequency mapping (NXDN uses LCNs the same way EDACS does).
- Add talkgroups by TGID.
Voice is decoded via dsd-neo running in nxdn48 or nxdn96 mode (lazy-started on the first voice grant — no idle subprocess).
If you know there's a P25 system in your area but don't have the CC frequency, NyxScope can find it:
- Right-click a scan range in the left panel.
- Discover Trunked Systems — starts an overlay scan that watches for P25 sync patterns across the band.
- The Trunk Discovery dock pop-out shows candidate frequencies as they're confirmed (NAC, WACN, RFSS, Site ID).
- Right-click a confirmed row → Add to config to create a system entry pre-populated with the CC frequency and NAC.
Discovery is also auto-armed on the 800 MHz public-safety band by default. See the Trunk Discovery section of MANUAL.md.
Discovery validation: NyxScope filters out synthetic NAC values that noise produces (0, 0xF7E "ReceiveAny", 0xF7F "RepeatAny", 0xFFF "all-ones"). If you're seeing zero discoveries in a band you know has activity, the threshold is 8 valid TSBKs within a 5-second window — make sure the signal is strong enough to actually decode that many frames.
Trunking dock → system → Talkgroups tab → + Add TG. Fields:
- TGID (decimal)
- Alpha tag (short name shown in call history)
- Description (longer)
- Category (Fire / EMS / PD / etc.)
- Priority (1–5; higher numbers preempt lower)
Right-click → Import TGs from CSV. Expected columns: tgid,alpha_tag,description,category,priority. Compatible with RadioReference CSV exports.
- Block a TG → its calls are silenced but still logged.
- Skip a TG → its grants are ignored entirely (NyxScope won't tune voice channel).
- Priority hold → if a higher-priority call comes in mid-call, NyxScope can preempt.
NyxScope detects encrypted P25 calls via the Crypto Control field in LDU2 (algid + keyid). Encrypted calls are shown in the Trunking dock with a lock icon and tag color shift; audio is silenced (no point decoding noise).
P25 supports DES, AES, ADP and others. NyxScope does NOT decrypt — that requires the actual key material from the system operator. The badge tells you whether it's encrypted; that's all.
The default_encrypted flag on a system tells NyxScope to assume encryption when the Crypto Control field is unrecoverable (common on weak signals).
"I hear the CC but no voice." Usually one of:
- Voice channel frequency mapping is wrong (LCN table mismatch for EDACS/NXDN).
- TG is blocked or its priority is below the active hold.
- The call is encrypted — check for the lock icon.
- Signal is too weak on the voice freq (CC and voice channels may not have identical coverage).
"Voice is garbled." Phase 1 voice should be intelligible at any signal level NyxScope holds a sync on (94-96% IMBE recovery). Phase 2 is more fragile to multipath. EDACS ProVoice depends on dsd-neo's decoder. NXDN voice via dsd-neo is generally clean but watch CPU load — if dsd-neo is starving for samples, audio breaks.
"Discovery returns 0xFFF NACs." Filtered as of v1.25.0 — those are noise-decoded BCH outputs, not real systems. If you saw them in an older version, upgrade.
"Wrong NAC reported." Soft-NID decode mode can emit 0xF7E (ReceiveAny) when BCH errors exceed the strict-correction limit. NyxScope filters this from the discovery validation gate but it can briefly appear in active-decode metadata before the next clean NID lands.
"P25 voice ended but NyxScope didn't return to CC." TDU/TDULC detection works most of the time on strong signals but can miss on weak ones. NyxScope falls back to a voice-hold timer (default 3 seconds of silence → return to CC). Adjustable per-system in the trunking config.
Next: HD-Radio-Setup · Troubleshooting · FAQ