9.2 KiB
Special numbers (TG / IDs)
Several destination IDs are reserved for control or services. They are handled in protocol layers and/or the bridge router, not as normal group traffic.
Server voice source ID (configurable, not “announcement TG”)
Important: The server uses a configurable DMR ID (VOICE.DMR_ID in adn-voice.yaml). Default: 1000001. Each announcement/TTS row may set its own DMR_ID; when omitted, it inherits VOICE.DMR_ID. Callsign comes from the subscriber DB for that ID.
| Traffic | Destination in the DMR packet | Notes |
|---|---|---|
Scheduled AMBE (ANNOUNCEMENTS) |
Whatever TG you set in adn-voice.yaml |
Item DMR_ID or VOICE.DMR_ID (default 1000001). |
TTS (TTS_ANNOUNCEMENTS) |
Same — configured TG |
Same. |
| On-demand (TG 9991–9999) | TG 9 | Short info clips; configurable source (see Voice, announcements, and TTS). |
| Disconnected / reflector prompts | TG 9 | Same. |
| Voice ident | All-call (16777215) or OVERRIDE_IDENT_TG if set |
Same. |
You do not “monitor” the server voice ID to hear scheduled announcements: you monitor the configured announcement TG (e.g. 2, 9, 26811). The configured ID appears as the transmitter on those calls.
The legacy local ID 5000 is still recognised on some on-demand playback paths for compatibility, but the new default is 1000001 (avoids SUB_ACL: DENY:0-1000000 blocks on OBP).
Destination TG 5000 (inbound group)
If a group call arrives with destination TG 5000 and there is no existing BRIDGES entry, the server does not auto-create a user-activated bridge for that TG (same class as IDs 0–4, 9, 4000). To carry traffic to TG 5000 you need an explicit bridge row.
TG 9 — local service lane (prompts and bridge plumbing)
TG 9 is used in two different ways: what operators hear from short server prompts, and how internal bridge rows are wired.
What you hear (outbound server voice)
For on-demand playback (after you key 9991–9999) and for disconnected / reflector voice lines, the server transmits group packets with:
- DMR ID = item
DMR_IDorVOICE.DMR_ID(default 1000001) - Destination TG 9
- Timeslot 2 (the code drives the TS2 slot for that hotspot)
That follows a common HomeBrew / conference convention: keep short local service audio on TG 9 / TS2 so it stays separate from normal QSO traffic on your main TG (often on TS1). Hotspots must pass TS2 and be on a configuration where TG 9 is not blocked, or those prompts will not be heard.
Red vs local: On OpenBridge, inbound group traffic to TG 9 is in the ≤ 79 “local / repeater” range and is not brought into the bridge from the IP mesh (it is dropped at ingress). Server prompts use the local HBP path to the hotspot/repeater, not a wide-area bridged TG. Exception: only if you explicitly add BRIDGES rows that forward TG 9 could that traffic be sent elsewhere — not the default.
Scheduled announcements and TTS use the TG you set in adn-voice.yaml — they are not forced to TG 9 unless you configure that TG yourself.
Router behaviour (reserved TG)
- No automatic user-activated bridge if someone transmits to TG 9 and no
BRIDGESrow exists (same class as 0–4, 4000, 5000, etc.). - With
GEN_STAT_BRIDGES, automatic STAT bridge creation from OpenBridge does not apply to destination TG 9 (it is excluded on purpose). - The bridge debug loop removes invalid conference bridges keyed
9(and0–8) so single-digit stray bridges do not accumulate.
Bridge table (advanced)
Many reflector / dial rows store TGID = 9 on TS2 as the leg destination used internally to attach the dynamic path to the real talkgroup — that is wiring inside BRIDGES, not something you “call” like a normal national TG.
In-band VTERM rules that affect TG 9 / reflector behavior
In-band bridge activation/deactivation is applied on voice terminator (VTERM) with this scope:
- It runs only for call types
groupandvcsbk(not for unit/private VTERM). - For reflector bridges (
#...), in-band handling is evaluated only when the destination is TG 9. - This is why reflector prompts and dial wiring are tied to TG 9 while private calls do not trigger that bridge-timer logic.
TG / ID 4000 — deactivate dynamic bridges
Purpose: Clear user-activated (dynamic) state for the hotspot that keys 4000. TG 4000 is not a talkgroup to monitor or persist — it is a reset command.
Behaviour (group voice header):
- Clears per-peer UA sessions in memory (all slots for that peer).
- Deletes matching rows from
peer_dynamic_tgs(MariaDB). - Clears stale STATUS RX fields so a later RPTO does not re-seed the old TG.
- Runs in-band bridge deactivation on the slot (same as legacy).
- Sends
GROUP VOICE,INGRESS,RX,…,4000to the monitor (not START) so SINGLE=0 multi-dynamic chips clear without lighting a live TX chip. - On inject-only MASTER, pushes updated CONFIG_SND to the monitor.
Inject-only vs global: With integrated PROXY, reset is per peer (only that hotspot’s dynamics). Without inject-only filtering, legacy deactivate_all_dynamic_bridges still runs for the whole system.
TG 4000 must never appear as a dynamic UA chip on the monitor or in peer_dynamic_tgs.
SINGLE_MODE impact on in-band deactivation
When in-band rules evaluate deactivation on a MASTER slot:
SINGLE_MODE: true: deactivation is aggressive. A bridge leg can be turned off by OFF/RESET triggers, TG 4000, or traffic that does not match the leg TG.SINGLE_MODE: false: deactivation is conservative. TG 4000 is the primary forced-deactivate trigger; static TG rows and reflector rows are preserved according to current bridge checks.
Operationally: if users report “bridges drop too easily” after OPTIONS updates, verify the current SINGLE_MODE value and hotspot OPTIONS payload.
TG 9991–9999 — information / on-demand audio
Purpose: Play back pre-generated AMBE (“ondemand”) files (e.g. station info, help).
Behaviour:
- Triggers
playFileOnRequest-style handling: maps the last digits to a file name under the configured audio tree. - Trigger path is private VTERM for destination 9991–9999, then async playback generation.
- Works from MASTER and PEER paths.
The audio is sent with the configured source ID and destination TG 9 in the generated stream. File layout: Voice, announcements, and TTS.
TG 9990 — echo (in-band)
Purpose: Bridge rows for echo often use 9990 with the ECHO system (see BRIDGES and options in your YAML).
SINGLE=1: Keying 9990 does not create an exclusive listen session (same as 4000). Downlink echo always returns to the calling hotspot even when another TG holds the SINGLE lock. See Hotspot proxy and Voice routing and contention — SINGLE exceptions.
Note: A standalone echo is also available as a separate process — Echo.
Private call to ID 4000
A unit call to 4000 is treated as disconnect dynamics only; it is not routed as a normal private call.
OpenBridge ingress — group TG filters
On OpenBridge (DMRD v1 and DMRE), non-unit group traffic to certain TGs may be dropped before bridging (with BCSQ where applicable). Rules differ slightly between DMRD and DMRE; they include low-number TGs (e.g. ≤ 79), 9990–9999, 900999, ranges 92–199 (vs source server), and MCC-related ranges (80–89, 800–899). Details: OpenBridge protocol.
Prohibited / reserved TGs (bridge creation)
Many small IDs (0–5, 9, etc.) and the 999x service range are excluded from certain automatic bridge-creation paths; 5000 and 4000 are in the “no auto UA bridge” set when no row exists. Exact sets are defined in the bridge router and options handling in source.
Summary table
| ID / range | Role |
|---|---|
| VOICE.DMR_ID (source) | Server-generated voice — caller ID on receivers (default 1000001) |
| 5000 (destination) | No auto user-activated bridge if missing from BRIDGES |
| 4000 (group) | Deactivate dynamic bridges |
| 4000 (unit) | Disconnect dynamics; not routed as PC |
| 9991–9999 | On-demand / information audio (trigger TG); playback uses VOICE.DMR_ID → TG 9 (TS2) |
| 9 | Service/prompt lane (short server audio); reserved for auto-bridges; internal TGID on TS2 legs |
| 9990 | Echo bridge TG (with ECHO system) |
| 16777215 | All-call (default voice-ident destination unless overridden) |