mirror of https://github.com/nostar/urfd.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
114 lines
5.0 KiB
114 lines
5.0 KiB
# Flexible DMR Mode (Mini DMR) User Guide
|
|
|
|
URFD now supports a "Flexible DMR" mode (often called "Mini DMR"), which changes how DMR clients interact with the reflector. Unlike the legacy "XLX" mode where clients link to a specific module (A-Z) and traffic is bridged, Mini DMR mode allows clients to directly subscribe to Talkgroups (TG).
|
|
|
|
## How it Works
|
|
|
|
In Mini DMR mode, the reflector acts like a **Scanner**.
|
|
|
|
1. **Subscriptions**: You "subscribe" to one or more Talkgroups on a Timeslot (TS1 or TS2).
|
|
2. **Scanning**: The reflector monitors all your subscribed Talkgroups.
|
|
3. **Hold Time**: When a Talkgroup becomes active (someone speaks), the scanner "locks" onto that Talkgroup for the duration of the transmission plus a **Hold Time** (default 5 seconds). During this hold, traffic from other Talkgroups is blocked to prevent interruption.
|
|
|
|
```mermaid
|
|
graph TD
|
|
Client[MMDVM Client] -->|Subscribe TG 3100 TS1| Reflector
|
|
Client -->|Subscribe TG 4001 TS2| Reflector
|
|
|
|
subgraph Reflector Logic
|
|
TrafficA[Traffic on TG 3100] --> Scanner{Scanner Free?}
|
|
TrafficB[Traffic on TG 4001] --> Scanner
|
|
|
|
Scanner -->|Yes| Lock[Lock onto TG 3100]
|
|
Lock --> Map["Route to Client (TS1)"]
|
|
|
|
Scanner -->|"No (Held by 3100)"| Block[Block TG 4001]
|
|
end
|
|
|
|
Map --> Client
|
|
```
|
|
|
|
### Strict Timeslot Routing
|
|
|
|
The reflector enforces strict routing based on your subscription:
|
|
|
|
* If you subscribe to **TG 3100 on TS1**, traffic for TG 3100 will **only** be sent to your radio on **Timeslot 1**.
|
|
* If you subscribe to **TG 4001 on TS2**, traffic for TG 4001 will **only** be sent to your radio on **Timeslot 2**.
|
|
* This allows a single client to monitor different Talkgroups on different Timeslots simultaneously (if the Scanner is not held by one).
|
|
|
|
## Configuration
|
|
|
|
To enable Mini DMR mode, update your `urfd.ini` (or configuration file) in the `[DMR]` section:
|
|
|
|
```ini
|
|
[DMR]
|
|
; Disable legacy XLX behavior (REQUIRED for Dashboard Subscription View)
|
|
XlxCompatibility=false
|
|
|
|
; Optional: enforce single subscription per timeslot (default false)
|
|
SingleMode=false
|
|
|
|
; Scanner Hold Time in seconds (default 5)
|
|
HoldTime=5
|
|
|
|
; Dynamic Subscription Timeout in seconds (default 600 / 10 mins)
|
|
; 0 = Infinite
|
|
DefaultTimeout=600
|
|
|
|
; Module to Talkgroup Mapping (Optional)
|
|
; Maps Module A to TG 4001, B to 4002, etc. automatically.
|
|
; You can override specific maps:
|
|
MapA=4001
|
|
MapB=4002
|
|
|
|
; IMPORTANT: Any module you map (e.g. A, B) MUST be enabled in the [Modules] section!
|
|
; If Module A is not enabled, traffic for TG 4001 will be dropped.
|
|
```
|
|
|
|
## Usage
|
|
|
|
### 1. Subscribing via PTT (Push-To-Talk)
|
|
|
|
The easiest way to subscribe to a Talkgroup is to simply **transmit** on it from your radio.
|
|
|
|
* **Action**: Key up (PTT) on `TG 1234`.
|
|
* **Result**: The reflector detects your transmission and automatically subscribes you to `TG 1234` for the configured timeout duration (e.g., 10 minutes).
|
|
* **Renewal**: If you are already subscribed, keying up again will **reset the timeout timer** back to the full duration.
|
|
* **Note**: The first transmission might be muted (Anti-Kerchunk) to prevent noise, but you will immediately be subscribed.
|
|
|
|
### 2. Subscribing via Options String
|
|
|
|
You can manage subscriptions sent from your MMDVM hotspot/repeater configuration (or Pi-Star Options field).
|
|
|
|
* **Format**: `TS1=TG_ID;TS2=TG_ID;AUTO=TIMEOUT`
|
|
* **Example**: `TS2=3100,4001;AUTO=600`
|
|
* Subscribes Timeslot 2 to TG 3100 and TG 4001.
|
|
* Sets timeout to 600 seconds.
|
|
|
|
### 3. Disconnecting / Unsubscribing
|
|
|
|
* **Disconnect All**: Transmit a Group Call to **TG 4000**. This clears all dynamic subscriptions on that timeslot.
|
|
* **Single Mode**: If `SingleMode=true` is set in config, transmitting on a *new* Talkgroup automatically unsubscribes you from the previous one.
|
|
|
|
### 4. Talkgroup 9 (Reflector)
|
|
|
|
* Traffic on **TG 9** is treated as local reflector traffic (linked functionality) if the client is essentially "linked" to a module, but in Mini DMR mode, TG 9 behavior depends on the specific map configuration or defaults. Typically, use specific Talkgroups for wide-area routing.
|
|
|
|
## Dashboard
|
|
|
|
The URFD Dashboard includes a dedicated **DMR** page (`/dmr`) to monitor Flexible DMR Mode activity.
|
|
|
|
* **Active Subscriptions**: Shows all Talkgroups a client is monitoring, along with the specific Timeslot.
|
|
* **Timers**: Displays a real-time countdown for Dynamic Subscriptions. Static subscriptions are marked as `Static`.
|
|
* **DMR ID**: Displays the client's DMR ID alongside their callsign (e.g., `CALLSIGN (3100123)`).
|
|
* **Requirements**: The dashboard requires NO additional configuration. It automatically displays data once `XlxCompatibility=false` is set in the backend config.
|
|
|
|
## Troubleshooting
|
|
|
|
### "Recordings are blank" or "No Traffic on other modes"
|
|
|
|
If clients can connect and transmit but you see no traffic on other protocols (M17, YSF) or blank recordings:
|
|
|
|
* **Check Modules**: Ensure the mapped Module (e.g. A for TG 4001) is defined and **enabled** in your `[Modules]` configuration.
|
|
* **Log Check**: Look for `Can't find module 'X' for Client ...` errors in the reflector log.
|