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

8.9 KiB

dvmcfggen - Usage Guide

DVMCfg Usage Guide

Getting Started

The easiest way to create configurations:

./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:

# 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:

./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:

# 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:

./dvmcfg validate <config_file> [--summary]

Options:

  • --summary, -s - Display configuration summary

Examples:

# 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:

./dvmcfg edit <config_file> <key> <value>

Examples:

# 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:

./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:

# 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:

./dvmcfg trunk validate --base-dir <directory> [--name <system_name>]

Examples:

# 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:

./dvmcfg trunk update --base-dir <directory> --name <system_name> <key> <value>

Examples:

# 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:

./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

# 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

# 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

# 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.