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.
FreeDMR/docs/options-cheatsheet.md

232 lines
7.5 KiB

# FreeDMR OPTIONS Cheat Sheet
`OPTIONS` lets a connected repeater/hotspot request session settings from a
FreeDMR master. These settings last for the current client session. When the
client disconnects or times out, FreeDMR resets the session back to the server
configuration defaults.
## Format
Use semicolon-separated `KEY=VALUE` fields:
```text
KEY=secret;TS1=91,92;TS2=235;DEFAULT_DIAL_TS1=4400;DEFAULT_DIAL_TS2=2350;TIMER=15
```
Keep key names exact. Avoid spaces around key names. Commas inside TG lists may
have simple whitespace.
FreeDMR accepts `OPTIONS` strings up to 255 bytes. Longer strings are rejected
and the current/default session settings remain in use. Use the compact aliases
below where possible on embedded clients.
## Common Examples
Static TGs on both slots:
```text
TS1=91,92;TS2=235
```
Default dial-a-TG on slot 2:
```text
DEFAULT_DIAL_TS2=2350
```
Default dial-a-TG on both slots:
```text
DEFAULT_DIAL_TS1=4400;DEFAULT_DIAL_TS2=2350
```
Set slot 2 to no default dial-a-TG connection:
```text
DEFAULT_DIAL_TS2=0
```
or, using the legacy alias:
```text
DIAL=
```
Disable dial-a-TG private-call control:
```text
DIALTG=0
```
Disable automatic dynamic conventional TG routing:
```text
DYNAMIC=0
```
Use a user API key:
```text
KEY=my-secret-key
```
Allow network users to direct-dial this repeater/hotspot ID onto local TG9:
```text
NDD_SLOT=1
```
For DMO/simplex hotspots, use slot 2:
```text
NDD_SLOT=2
```
## Supported Fields
| Field | Meaning |
| --- | --- |
| `KEY` | User/session API key. If a key is already set for the session, later OPTIONS must include the same key. |
| `TS1` | Comma-separated static TG list for slot 1. Empty means no static TGs. |
| `TS2` | Comma-separated static TG list for slot 2. Empty means no static TGs. |
| `DEFAULT_DIAL_TS1` | Default dial-a-TG target for slot 1. `0` or empty means not connected to any default TG. |
| `DEFAULT_DIAL_TS2` | Default dial-a-TG target for slot 2. `0` or empty means not connected to any default TG. |
| `TIMER` | Legacy/default user-activated timeout in minutes. `0` means effectively unlimited. |
| `TG_TIMER` | Conventional TG dynamic/static timeout in minutes. Falls back to `TIMER`. |
| `DIAL_TIMER` | Dial-a-TG timeout in minutes. Falls back to `TIMER`. |
| `TS1_TIMER` | Slot 1 timeout in minutes. Overrides `TG_TIMER`/`DIAL_TIMER` for slot 1 unless a more specific timer is set. |
| `TS2_TIMER` | Slot 2 timeout in minutes. Overrides `TG_TIMER`/`DIAL_TIMER` for slot 2 unless a more specific timer is set. |
| `TS1_TG_TIMER` | Slot 1 conventional TG timeout in minutes. |
| `TS2_TG_TIMER` | Slot 2 conventional TG timeout in minutes. |
| `TS1_DIAL_TIMER` | Slot 1 dial-a-TG timeout in minutes. |
| `TS2_DIAL_TIMER` | Slot 2 dial-a-TG timeout in minutes. |
| `NETWORK_DIRECT_DIAL_SLOT` | Network direct dial slot. `0` disables it, `1` presents on TG9 TS1, `2` presents on TG9 TS2. |
| `DIALTG` | Enable/disable dial-a-TG private-call control. Use `1` or `0`. |
| `DYNAMIC` | Enable/disable automatic dynamic conventional TG routing. Use `1` or `0`. |
| `VOICE` | Enable/disable voice ident. Use `1` or `0`. |
| `SINGLE` | Enable/disable single-TG mode. Use `1` or `0`. |
| `IDENTTG` | Override voice ident TG. Integer TG value. |
| `VOICETG` | Alias for `IDENTTG`. |
| `LANG` | Announcement language, if installed on the server. Example: `en_GB`. |
## Legacy Aliases
These are still accepted for compatibility:
| Legacy field | Current meaning |
| --- | --- |
| `DIAL` | Alias for `DEFAULT_DIAL_TS2`. Empty means slot 2 is not connected to any default TG. |
| `DEFAULT_REFLECTOR` | Alias for `DEFAULT_DIAL_TS2`. Deprecated. |
| `StartRef` | DMR+ style alias for `DEFAULT_DIAL_TS2`. |
| `RelinkTime` | DMR+ style alias for `TIMER`. |
| `TGTimer` | DMR+ style alias for `TG_TIMER`. |
| `DialTimer` | DMR+ style alias for `DIAL_TIMER`. |
| `TS1Timer` | DMR+ style alias for `TS1_TIMER`. |
| `TS2Timer` | DMR+ style alias for `TS2_TIMER`. |
| `IDENT` | Alias for `VOICE`. |
| `TS1_1` ... `TS1_9` | DMR+ style slot-1 static TG fields. Combined into `TS1`. |
| `TS2_1` ... `TS2_9` | DMR+ style slot-2 static TG fields. Combined into `TS2`. |
| `UserLink` | Accepted and ignored. |
## Compact Aliases
These aliases are preferred in HBP `OPTIONS` strings where space is limited:
| Alias | Current meaning |
| --- | --- |
| `DIAL1` | Alias for `DEFAULT_DIAL_TS1`. |
| `DIAL2` | Alias for `DEFAULT_DIAL_TS2`. |
| `TGTO1` | Alias for `TS1_TG_TIMER`. |
| `TGTO2` | Alias for `TS2_TG_TIMER`. |
| `DIALTO1` | Alias for `TS1_DIAL_TIMER`. |
| `DIALTO2` | Alias for `TS2_DIAL_TIMER`. |
| `NDD_SLOT` | Alias for `NETWORK_DIRECT_DIAL_SLOT`. |
Example compact string:
```text
KEY=secret;TS1=91,92;TS2=235;DIAL1=4400;DIAL2=2350;TGTO1=10;TGTO2=10;DIALTO1=30;DIALTO2=30;NDD_SLOT=1
```
## Dial-a-TG Notes
- Dial-a-TG uses RF-visible TG9 on the relevant slot.
- Slot 1 and slot 2 dial-a-TG state are independent.
- Private-call control on slot 1 controls slot 1.
- Private-call control on slot 2 controls slot 2.
- Voice prompts for dial-a-TG are sent on TG9 on the controlling slot.
- Network direct dial is a narrow exception where network-originated group
traffic to the repeater/hotspot's own ID may activate local TG9 on the
configured slot. It does not enable general private voice routing.
- Network direct dial does not override an active or hangtime user-selected
dial-a-TG route.
- Invalid `NETWORK_DIRECT_DIAL_SLOT` values in server config fall back to `0`
and are logged. Invalid `NDD_SLOT`/`NETWORK_DIRECT_DIAL_SLOT` values in
client `OPTIONS` are ignored and the current session value remains in use.
- `DEFAULT_REFLECTOR`, `DIAL`, and `StartRef` only affect the slot-2 default.
Use `DEFAULT_DIAL_TS1` for slot 1.
## Timer Precedence
Timer fields are in minutes. `0` means effectively unlimited.
For each active route, FreeDMR uses the most specific configured timer:
1. `TS1_TG_TIMER`, `TS2_TG_TIMER`, `TS1_DIAL_TIMER`, or `TS2_DIAL_TIMER`
2. `TS1_TIMER` or `TS2_TIMER`
3. `TG_TIMER` or `DIAL_TIMER`
4. `TIMER`
Examples:
- `TIMER=15` gives all user-activated TG and dial-a-TG routes a 15 minute timer.
- `TG_TIMER=10;DIAL_TIMER=30` gives conventional TGs 10 minutes and dial-a-TG
routes 30 minutes.
- `TS1_DIAL_TIMER=5;TS2_DIAL_TIMER=30` gives slot 1 and slot 2 dial-a-TG
independent timers.
## Valid Dial-a-TG Values
- `0` or empty: not connected to any default TG.
- `1` to `999999`: valid range, except reserved/control targets.
- Reserved/control targets such as `6`, `7`, `8`, and the control range
`4001` to `4999` are not accepted as default dial-a-TG values.
- `4000` is disconnect control, not a default link target.
- `5000` is status control, not a default link target.
## Practical Starter Strings
Simple hotspot, no static TGs, default dial-a-TG on TS2:
```text
TS1=;TS2=;DEFAULT_DIAL_TS2=2350;TIMER=15
```
Repeater with static national TGs and dial-a-TG on both slots:
```text
TS1=91,92;TS2=235;DEFAULT_DIAL_TS1=4400;DEFAULT_DIAL_TS2=2350;TIMER=15
```
Control-heavy setup with API key and no dynamic conventional TG routing:
```text
KEY=my-secret-key;TS1=91;TS2=235;DIALTG=1;DYNAMIC=0;TIMER=15
```
Separate conventional TG and dial-a-TG timers:
```text
TS1=91;TS2=235;DEFAULT_DIAL_TS1=4400;DEFAULT_DIAL_TS2=2350;TG_TIMER=10;DIAL_TIMER=30
```
## Troubleshooting
- Use `0` or an empty value when the slot should not connect to any default TG.
- Use only `0` or `1` for boolean fields such as `DIALTG`, `DYNAMIC`, `VOICE`,
and `SINGLE`.
- Invalid fields are logged by the server. Valid fields in the same OPTIONS
string may still be applied.
- If settings do not appear to change, check that the correct `KEY=...` is being
sent for the session.

Powered by TurnKey Linux.