|
|
# 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”) {#server-voice-source-id-configurable}
|
|
|
|
|
|
**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](voice-and-tts.md)). |
|
|
|
| **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-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_ID` or `VOICE.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 `BRIDGES` row 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`** (and **`0`–`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 **`group`** and **`vcsbk`** (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 {#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,…,4000`** to 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](voice-and-tts.md).
|
|
|
|
|
|
## 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](hotspot-proxy.md#multi-hotspot-behaviour) and [Voice routing and contention — SINGLE exceptions](../development/routing-and-contention.md#single-exceptions).
|
|
|
|
|
|
**Note:** A **standalone echo** is also available as a separate process — [Echo](echo.md).
|
|
|
|
|
|
## 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 {#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](../protocols/openbridge.md#ingress-filters-group-tg).
|
|
|
|
|
|
## 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) |
|