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.
8.9 KiB
8.9 KiB
dvmcfggen - Usage Guide
DVMCfg Usage Guide
Getting Started
Interactive Wizard (Recommended)
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 configurationtest-vc01.yml- Voice channel 1 configurationtest-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 IDnetwork.address- FNE addressnetwork.port- FNE portnetwork.password- FNE passwordnetwork.encrypted- Enable encryption (true/false)network.rpcPort- RPC portnetwork.rpcPassword- RPC passwordnetwork.restEnable- Enable REST API (true/false)network.restPort- REST API port
System Settings
system.identity- System identitysystem.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 IDsystem.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 portsystem.modem.protocol.uart.speed- Serial speedsystem.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
- Always validate after creating or editing configurations
- Backup configurations before making bulk updates
- Use consistent naming for trunked system components
- Test with null modem before connecting real hardware
- Keep RPC ports sequential for easier management
- Document peer IDs for your network topology