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.
dvmhost/tools/dvmcfggen/USAGE.md

331 lines
8.9 KiB

# dvmcfggen - Usage Guide
# DVMCfg Usage Guide
## Getting Started
### Interactive Wizard (Recommended)
The easiest way to create configurations:
```bash
./dvmcfg wizard
```
The wizard provides:
- Step-by-step guided configuration
- Input validation in real-time
- Template selection help
- Configuration summary before saving
- Support for both single and trunked systems
**Wizard Types:**
```bash
# Auto-detect (asks user what to create)
./dvmcfg wizard
# Single instance wizard
./dvmcfg wizard --type single
# Trunking system wizard
./dvmcfg wizard --type trunk
```
---
## Command Reference
### Create Configuration
Create a new DVMHost configuration from a template:
```bash
./dvmcfg create --template <template_name> --output <file_path> [options]
```
**Options:**
- `--template` - Template to use (required)
- `--output, -o` - Output file path (required)
- `--identity` - System identity (e.g., "REPEATER01")
- `--peer-id` - Network peer ID
- `--fne-address` - FNE server address
- `--fne-port` - FNE server port
- `--callsign` - CWID callsign
- `--validate` - Validate configuration after creation
**Examples:**
```bash
# Create a basic hotspot configuration
./dvmcfg create --template hotspot --output /etc/dvm/hotspot.yml \
--identity "HOTSPOT01" --peer-id 100001 --callsign "KC1ABC"
# Create a repeater configuration
./dvmcfg create --template repeater --output /etc/dvm/repeater.yml \
--identity "REPEATER01" --peer-id 100002 \
--fne-address "192.168.1.100" --fne-port 62031
# Create P25 control channel
./dvmcfg create --template control-channel-p25 --output /etc/dvm/cc.yml \
--identity "CC001" --peer-id 100000 --validate
```
### Validate Configuration
Validate an existing configuration file:
```bash
./dvmcfg validate <config_file> [--summary]
```
**Options:**
- `--summary, -s` - Display configuration summary
**Examples:**
```bash
# Basic validation
./dvmcfg validate /etc/dvm/config.yml
# Validation with summary
./dvmcfg validate /etc/dvm/config.yml --summary
```
### Edit Configuration
Edit a specific configuration value:
```bash
./dvmcfg edit <config_file> <key> <value>
```
**Examples:**
```bash
# Change system identity
./dvmcfg edit /etc/dvm/config.yml system.identity "NEWID"
# Update FNE address
./dvmcfg edit /etc/dvm/config.yml network.address "192.168.1.200"
# Enable DMR protocol
./dvmcfg edit /etc/dvm/config.yml protocols.dmr.enable true
# Change color code
./dvmcfg edit /etc/dvm/config.yml system.config.colorCode 2
```
### Trunked System Management
#### Create Trunked System
Create a complete trunked system with control and voice channels:
```bash
./dvmcfg trunk create --base-dir <directory> [options]
```
**Options:**
- `--base-dir` - Base directory for configs (required)
- `--name` - System name (default: "trunked")
- `--protocol` - Protocol type: p25 or dmr (default: p25)
- `--vc-count` - Number of voice channels (default: 2)
- `--fne-address` - FNE address (default: 127.0.0.1)
- `--fne-port` - FNE port (default: 62031)
- `--fne-password` - FNE password
- `--base-peer-id` - Base peer ID (default: 100000)
- `--base-rpc-port` - Base RPC port (default: 9890)
- `--identity` - System identity prefix (default: SITE001)
- `--nac` - P25 NAC in hex (default: 0x293)
- `--color-code` - DMR color code (default: 1)
- `--site-id` - Site ID (default: 1)
- `--modem-type` - Modem type: uart or null (default: uart)
**Examples:**
```bash
# Create basic P25 trunked system with 2 voice channels
./dvmcfg trunk create --base-dir /etc/dvm/trunk \
--name test --vc-count 2
# Create P25 trunked system with 4 voice channels
./dvmcfg trunk create --base-dir /etc/dvm/site1 \
--name site1 --protocol p25 --vc-count 4 \
--identity "SITE001" --base-peer-id 100000 \
--fne-address "10.0.0.1" --nac 0x001
# Create DMR trunked system
./dvmcfg trunk create --base-dir /etc/dvm/dmr_trunk \
--protocol dmr --vc-count 3 --color-code 2
```
**Generated Files:**
For a system named "test" with 2 voice channels:
- `test-cc.yml` - Control channel configuration
- `test-vc01.yml` - Voice channel 1 configuration
- `test-vc02.yml` - Voice channel 2 configuration
#### Validate Trunked System
Validate all configurations in a trunked system:
```bash
./dvmcfg trunk validate --base-dir <directory> [--name <system_name>]
```
**Examples:**
```bash
# Validate trunked system
./dvmcfg trunk validate --base-dir /etc/dvm/trunk --name test
```
#### Update Trunked System
Update a setting across all configurations in a system:
```bash
./dvmcfg trunk update --base-dir <directory> --name <system_name> <key> <value>
```
**Examples:**
```bash
# Update FNE address across all configs
./dvmcfg trunk update --base-dir /etc/dvm/trunk \
--name test network.address "10.0.0.100"
# Update NAC across all configs
./dvmcfg trunk update --base-dir /etc/dvm/trunk \
--name test system.config.nac 0x001
# Enable verbose logging on all instances
./dvmcfg trunk update --base-dir /etc/dvm/trunk \
--name test protocols.p25.verbose true
```
### List Templates
Display all available configuration templates:
```bash
./dvmcfg templates
```
## Configuration Key Paths
Common configuration key paths for use with `edit` and `trunk update` commands:
### Network Settings
- `network.id` - Peer ID
- `network.address` - FNE address
- `network.port` - FNE port
- `network.password` - FNE password
- `network.encrypted` - Enable encryption (true/false)
- `network.rpcPort` - RPC port
- `network.rpcPassword` - RPC password
- `network.restEnable` - Enable REST API (true/false)
- `network.restPort` - REST API port
### System Settings
- `system.identity` - System identity
- `system.duplex` - Duplex mode (true/false)
- `system.timeout` - Call timeout (seconds)
- `system.config.colorCode` - DMR color code (0-15)
- `system.config.nac` - P25 NAC (0-4095)
- `system.config.ran` - NXDN RAN (0-63)
- `system.config.siteId` - Site ID
- `system.config.channelNo` - Channel number
### Protocol Settings
- `protocols.dmr.enable` - Enable DMR (true/false)
- `protocols.dmr.control.enable` - Enable DMR control (true/false)
- `protocols.dmr.verbose` - DMR verbose logging (true/false)
- `protocols.p25.enable` - Enable P25 (true/false)
- `protocols.p25.control.enable` - Enable P25 control (true/false)
- `protocols.p25.control.dedicated` - Dedicated control channel (true/false)
- `protocols.p25.verbose` - P25 verbose logging (true/false)
- `protocols.nxdn.enable` - Enable NXDN (true/false)
### Modem Settings
- `system.modem.protocol.type` - Modem type (uart/null)
- `system.modem.protocol.uart.port` - Serial port
- `system.modem.protocol.uart.speed` - Serial speed
- `system.modem.rxLevel` - RX level (0-100)
- `system.modem.txLevel` - TX level (0-100)
### CW ID Settings
- `system.cwId.enable` - Enable CWID (true/false)
- `system.cwId.time` - CWID interval (minutes)
- `system.cwId.callsign` - Callsign
## Workflow Examples
### Setting Up a Standalone Hotspot
```bash
# Create configuration
./dvmcfg create --template hotspot --output /etc/dvm/hotspot.yml \
--identity "HOTSPOT01" --peer-id 100001 \
--fne-address "fne.example.com" --fne-port 62031 \
--callsign "KC1ABC"
# Validate
./dvmcfg validate /etc/dvm/hotspot.yml --summary
# Customize modem settings
./dvmcfg edit /etc/dvm/hotspot.yml system.modem.protocol.uart.port "/dev/ttyACM0"
./dvmcfg edit /etc/dvm/hotspot.yml system.modem.rxLevel 60
./dvmcfg edit /etc/dvm/hotspot.yml system.modem.txLevel 60
```
### Setting Up a 4-Channel P25 Trunked System
```bash
# Create trunked system
./dvmcfg trunk create --base-dir /etc/dvm/site1 \
--name site1 --protocol p25 --vc-count 4 \
--identity "SITE001" --base-peer-id 100000 \
--fne-address "10.0.0.1" --fne-port 62031 \
--nac 0x001 --site-id 1
# Validate system
./dvmcfg trunk validate --base-dir /etc/dvm/site1 --name site1
# Update modem type on all instances
./dvmcfg trunk update --base-dir /etc/dvm/site1 \
--name site1 system.modem.protocol.type uart
# Customize individual configs as needed
./dvmcfg edit /etc/dvm/site1/site1-cc.yml \
system.modem.protocol.uart.port "/dev/ttyUSB0"
./dvmcfg edit /etc/dvm/site1/site1-vc01.yml \
system.modem.protocol.uart.port "/dev/ttyUSB1"
```
### Migrating Between FNE Servers
```bash
# Update single config
./dvmcfg edit /etc/dvm/config.yml network.address "newfne.example.com"
./dvmcfg edit /etc/dvm/config.yml network.port 62031
# Update entire trunked system
./dvmcfg trunk update --base-dir /etc/dvm/trunk \
--name test network.address "newfne.example.com"
./dvmcfg trunk update --base-dir /etc/dvm/trunk \
--name test network.port 62031
# Validate changes
./dvmcfg trunk validate --base-dir /etc/dvm/trunk --name test
```
## Tips
1. **Always validate** after creating or editing configurations
2. **Backup configurations** before making bulk updates
3. **Use consistent naming** for trunked system components
4. **Test with null modem** before connecting real hardware
5. **Keep RPC ports sequential** for easier management
6. **Document peer IDs** for your network topology

Powered by TurnKey Linux.