Complete EmComm Software Deployment Suite - PowerShell automation for emergency communications and amateur radio software.
Prerequisites:
# 1. Set PowerShell execution policy (one-time, run as Administrator)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
# 2. Verify PowerShell version (5.1+ required, 7+ recommended)
$PSVersionTable.PSVersion
# 3. Enable Windows Location Services for GPS auto-detection (optional)
# Settings > Privacy & Security > Location > On
# (Scripts can enable automatically when running as Administrator)Installation:
# 1. Copy and customize configuration
Copy-Item EmComm-Config.template.json EmComm-Config.json
notepad EmComm-Config.json # Set your callsign, license keys, and passwords
# 2. Install everything with one command (run as Administrator)
.\Install-EmCommSuite.ps1 -ConfigFile "EmComm-Config.json"
# Done! All EmComm software installed and configured.- β W1HKJ Suite (15 apps) - fldigi, flrig, flmsg, flamp, etc.
- β VARA HF/FM - High-speed modems for Winlink
- β Winlink Express - Email over radio
- β JS8Call - Weak signal keyboard chat
- β EchoLink - VoIP radio linking
- β Direwolf - Software TNC
- β YAAC - APRS client
- β CHIRP Next - Multi-brand radio programmer
- β DMRconfig - Command-line DMR tool
- β Anytone D878 CPS - Official D878UV programming
- β Anytone D578 CPS - Official D578UV programming
- Prerequisites
- Installation Scripts
- Configuration Templates
- Radio-Specific Settings
- Deployment Workflows
- Intune Deployment
- Troubleshooting
One command to install everything.
# Full installation with all defaults
.\Install-EmCommSuite.ps1 -ConfigFile "EmComm-Config.json"
# Include VARA FM (license key in config file: vara.fm.licenseKey)
.\Install-EmCommSuite.ps1 -ConfigFile "EmComm-Config.json" -IncludeVARAFM
# Include Anytone programming software
.\Install-EmCommSuite.ps1 -ConfigFile "EmComm-Config.json" `
-IncludeAnytoneD878CPS `
-IncludeAnytoneD578CPS
# Minimal installation (W1HKJ + Winlink only)
.\Install-EmCommSuite.ps1 -ConfigFile "EmComm-Config.json" `
-IncludeVARA:$false `
-IncludeDirewolf:$false `
-IncludeYAAC:$false `
-IncludeEchoLink:$false `
-IncludeJS8Call:$false `
-IncludeCHIRP:$falseInstallation time: 20-40 minutes
Log: C:\Logs\EmCommSuite_Install_*.log
Installs all 15 W1HKJ applications (fldigi, flrig, flmsg, flamp, fllog, flnet, flwkey, flwrap, flcluster, flaa, nanoIO, kcat, comptext, comptty, linsim).
.\Install-W1HKJSuite.ps1Installs VARA HF (free) and optionally VARA FM ($69 license required).
# VARA HF only (free)
.\Install-VARAModem.ps1 -ConfigFile "EmComm-Config.json"
# Include VARA FM (license key from config: vara.fm.licenseKey)
.\Install-VARAModem.ps1 -ConfigFile "EmComm-Config.json" -IncludeFMInstalls Winlink Express for email over radio.
.\Install-Winlink.ps1Installs Direwolf software TNC with pre-configured settings.
.\Install-Direwolf.ps1 -ConfigFile "EmComm-Config.json"Installs YAAC (Yet Another APRS Client) with Java runtime.
.\Install-YAAC.ps1 -ConfigFile "EmComm-Config.json"Installs EchoLink VoIP for internet-linked amateur radio.
.\Install-EchoLink.ps1 -ConfigFile "EmComm-Config.json"Installs JS8Call for weak signal keyboard-to-keyboard communications.
.\Install-JS8Call.ps1 -ConfigFile "EmComm-Config.json"Installs latest CHIRP Next for radio programming. CHIRP updates frequently - rerun to get latest version.
.\Install-CHIRP.ps1Installs DMRconfig command-line tool for DMR codeplug management.
.\Install-DMRconfig.ps1Installs official Anytone AT-D878UVII Plus V2 CPS from Bridgecom.
.\Install-AnytoneD878CPS.ps1Installs official Anytone AT-D578UVIII Plus V2 CPS from Bridgecom.
.\Install-AnytoneD578CPS.ps1Deploys W1HKJ configuration from JSON template.
.\Set-W1HKJConfiguration.ps1 -ConfigPackage EmComm -ConfigFile "EmComm-Config.json"Packages: EmComm | ARES | PublicService | Minimal | All
Installs/upgrades PowerShell 7 via winget.
.\Install-PowerShell7.ps1Installs Google Drive for Desktop with G: drive mapping.
.\Install-GoogleDrive.ps1Master configuration template for all EmComm software. Copy and customize:
Copy-Item EmComm-Config.template.json EmComm-Config.json
notepad EmComm-Config.jsonKey sections:
{
"operator": {
"callsign": "KD7DGF", // REQUIRED
"name": "David",
"qth": "Seattle, WA",
"locator": "CN87", // Maidenhead grid
"latitude": "47.6062",
"longitude": "-122.3321"
},
"audio": {
"captureDevice": "Digirig Mobile",
"playbackDevice": "Digirig Mobile"
},
"rig": {
"enabled": true,
"useFlrig": true, // For Anytone radios
"model": "AT-D878UV",
"device": "COM3",
"baudRate": 9600
},
"ptt": {
"method": "CAT" // VOX, CAT, RTS, DTR
},
"vara": {
"installHF": true,
"installFM": false,
"fmLicenseKey": ""
},
"aprs": {
"enableDigipeater": false,
"enableIGate": false,
"igatePasscode": "" // Get from apps.magicbug.co.uk
}
}Legacy W1HKJ-only configuration (use EmComm-Config instead for new deployments).
Limitations: No CAT control, VOX PTT only
{
"audio": {
"captureDevice": "Digirig Mobile",
"playbackDevice": "Digirig Mobile"
},
"rig": {
"enabled": false
},
"ptt": {
"method": "VOX"
}
}Why no CAT? BTech UV-Pro doesn't support computer control.
Best for: VHF/UHF digital modes, VARA FM, Winlink
{
"audio": {
"captureDevice": "Digirig Mobile",
"playbackDevice": "Digirig Mobile"
},
"rig": {
"enabled": true,
"useFlrig": true,
"device": "COM3",
"baudRate": 9600
},
"ptt": {
"method": "CAT"
}
}Why flrig? Anytone radios not officially supported by Hamlib. flrig (included in W1HKJ suite) has native Anytone AT-D878 support.
Setup:
- Connect Digirig to radio speaker/mic
- Connect USB cable for CAT control (COM port)
- In flrig: Select "AT-D878UV" rig
- Set baud rate to 9600
Best for: HF/VHF/UHF all modes, base/mobile operation
{
"audio": {
"captureDevice": "Digirig Mobile",
"playbackDevice": "Digirig Mobile"
},
"rig": {
"enabled": true,
"useFlrig": true,
"device": "COM3",
"baudRate": 9600
},
"ptt": {
"method": "CAT"
}
}Why flrig? Use flrig with AT-578 driver for full compatibility.
Setup:
- Connect via 6-pin mini-DIN data port (NOT microphone jack)
- Data port provides audio + CAT control
- In flrig: Select "AT-578UV" rig
- Set baud rate to 9600
# 1. Ensure PowerShell 7 is installed
pwsh --version
# 2. Create configuration
Copy-Item EmComm-Config.template.json EmComm-Config.json
notepad EmComm-Config.json # Set callsign and radio settings
# 3. Validate JSON syntax
Get-Content EmComm-Config.json | ConvertFrom-Json
# 4. Run master installer (as Administrator)
.\Install-EmCommSuite.ps1 -ConfigFile "EmComm-Config.json"# Stage 1: Core digital modes
.\Install-W1HKJSuite.ps1
.\Set-W1HKJConfiguration.ps1 -ConfigPackage EmComm -ConfigFile "EmComm-Config.json"
# Stage 2: Winlink capability
.\Install-VARAModem.ps1 -ConfigFile "EmComm-Config.json"
.\Install-Winlink.ps1
# Stage 3: APRS/packet
.\Install-Direwolf.ps1 -ConfigFile "EmComm-Config.json"
.\Install-YAAC.ps1 -ConfigFile "EmComm-Config.json"
# Stage 4: Additional tools
.\Install-JS8Call.ps1 -ConfigFile "EmComm-Config.json"
.\Install-EchoLink.ps1 -ConfigFile "EmComm-Config.json"
.\Install-CHIRP.ps1Deploy as separate Win32 apps for flexibility:
- PowerShell 7 (optional, System context)
- EmComm Core (W1HKJ + VARA + Winlink, System context)
- EmComm APRS (Direwolf + YAAC, System context)
- EmComm Tools (JS8Call + EchoLink, System context)
- Radio Programming (CHIRP + Anytone CPS, System context)
- W1HKJ Configuration (User context, requires customized JSON)
# Create .intunewin package
IntuneWinAppUtil.exe -c "C:\Scripts\EmComm" -s "Install-EmCommSuite.ps1" -o "C:\IntunePackages"
# Include configuration file in package
Copy-Item EmComm-Config.json C:\Scripts\EmComm\EmComm-Config.jsonInstall command:
powershell.exe -ExecutionPolicy Bypass -NoProfile -File "Install-EmCommSuite.ps1" -ConfigFile "EmComm-Config.json" -W1HKJConfigPackage EmComm -IncludeDirewolf:$false -IncludeYAAC:$false -IncludeEchoLink:$false -IncludeJS8Call:$false -IncludeCHIRP:$false
Detection: File exists C:\Program Files (x86)\fldigi\fldigi.exe
Install command:
powershell.exe -ExecutionPolicy Bypass -NoProfile -File "Install-Direwolf.ps1" -ConfigFile "EmComm-Config.json"
Detection: File exists C:\Program Files\Direwolf\direwolf.exe
Execution policy error:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUserDownload failures:
# Test network connectivity
Test-NetConnection -ComputerName www.w1hkj.com -Port 443
Test-NetConnection -ComputerName rosmodem.wordpress.com -Port 443
Test-NetConnection -ComputerName downloads.winlink.org -Port 443JSON syntax errors:
# Validate JSON
Get-Content EmComm-Config.json | ConvertFrom-Json
# Common errors:
# - Missing comma between properties
# - Trailing comma in last property
# - Unescaped quotes in stringsCallsign not set:
# Verify callsign in JSON
$Config = Get-Content EmComm-Config.json | ConvertFrom-Json
$Config.operator.callsign # Should show your callsignAudio devices not found:
# List available audio devices (in fldigi or VARA)
# Or use this PowerShell snippet:
Get-PnpDevice -Class AudioEndpoint | Where-Object {$_.Status -eq "OK"}COM port issues:
# List available COM ports
Get-WMIObject Win32_SerialPort | Select-Object Name, DeviceID, Description# Latest EmComm suite installation
Get-ChildItem C:\Logs\EmCommSuite_Install_*.log | Sort-Object LastWriteTime -Descending | Select-Object -First 1 | Get-Content -Tail 100
# Latest W1HKJ installation
Get-ChildItem C:\Logs\W1HKJ_Installer_*.log | Sort-Object LastWriteTime -Descending | Select-Object -First 1 | Get-Content -Tail 50
# Latest configuration deployment
Get-ChildItem C:\Logs\W1HKJ_Config_*.log | Sort-Object LastWriteTime -Descending | Select-Object -First 1 | Get-Content -Tail 50
# All logs from today
Get-ChildItem C:\Logs\*_$(Get-Date -Format 'yyyyMMdd')_*.log | Sort-Object LastWriteTime- fldigi - Digital mode terminal (PSK31, RTTY, Olivia, MFSK, etc.)
- flrig - Rig control (better Anytone support than Hamlib)
- flmsg - Message forms (ICS-213, Radiogram, custom)
- flamp - Automatic Multicast Protocol (file transfer)
- fllog - Logging and QSL management
- flnet - Net control logger
- flwkey - Winkeyer interface
- flwrap - File wrapper for transmission
- flcluster - DX cluster monitor
- flaa - Antenna analyzer interface
- nanoIO - Nano IO board control
- kcat - Remote rig control
- comptext - Text composer
- comptty - RTTY composer
- linsim - Transmission line simulator
- VARA HF - Free, 2.4 kHz bandwidth, up to 19 wpm text, 180 bps data
- VARA FM - $69 license, 25 kHz bandwidth, up to 3,000 bps data
- VARA HF - Best for HF Winlink (fastest, most reliable)
- VARA FM - Best for VHF/UHF Winlink (very fast)
- ARDOP - Free HF alternative (slower than VARA HF)
- Packet - Legacy VHF/UHF (requires TNC)
- OS: Windows 10 1607+ or Windows 11
- PowerShell: 7.0+ (auto-installs if missing)
- Privileges: Administrator for installation
- Internet: Required for downloading installers
- Disk Space: ~2 GB for full suite
- RAM: 8 GB recommended
- Sound card interface: Digirig Mobile, SignaLink USB, or equivalent
- Radio: Any amateur radio with audio input/output
- CAT control (optional): USB or serial cable for rig control
- For APRS/packet: TNC hardware (optional, Direwolf is software TNC)
Scripts use approved verbs (Install, Set) with Verb-Noun pattern.
- Use JSON files for all settings
- Validate JSON syntax before deployment
- Store organizational templates in version control
- Never commit license keys to repositories
- Use Win32 app format (.intunewin)
- Separate installation and configuration apps
- System context for installation, User context for configuration only if needed
- Define dependencies: PowerShell 7 β Apps β Configuration
- Validate all downloads with checksums (where available)
- Use official download sources only
- Review scripts before execution
- Monitor logs for anomalies
Scripts provided as-is for amateur radio and emergency communications use. Individual applications have their own licenses.
KD7DGF - David Snyder
Emergency Communications | Software Automation | Amateur Radio
- Test thoroughly on fresh Windows installations
- Use approved PowerShell verbs
- Update documentation
- Include Intune deployment instructions
- Add logging to all new scripts
- Windows Store deployment scripts
- Configuration validation tool
- Automated update checker for CHIRP
- Parallel installation for non-conflicting apps
- Automated testing framework
- Pre-configured codeplug templates
- Integration with amateur radio databases (RepeaterBook, etc.)
- New: Complete EmComm suite installer (Install-EmCommSuite.ps1)
- New: VARA HF/FM installation with audio pre-configuration
- New: Direwolf software TNC with config generation
- New: YAAC APRS client with Java auto-install
- New: EchoLink VoIP with registry pre-configuration
- New: JS8Call weak signal modes
- New: CHIRP Next with auto-update detection
- New: DMRconfig command-line tool
- New: Anytone D878/D578 CPS installers
- New: EmComm-Config.template.json master configuration
- Enhanced: Comprehensive radio-specific configurations
- Enhanced: Integrated audio device settings across all apps
- Enhanced: USB driver installation for Anytone radios
- Breaking change: ConfigPackage now REQUIRED parameter
- Breaking change: Callsign REQUIRED in JSON
- Renamed scripts for PowerShell naming standards
- Added radio-specific configurations (BTech, Anytone D878, D578)
- Documented KISS TNC incompatibility with fldigi
- Added flrig integration for Anytone radios
- Standardized error handling and logging
- Consolidated documentation
- Initial release with W1HKJ suite installer
- Dynamic version detection
- PowerShell 7 auto-upgrade
- Intune deployment support
- EmComm, ARES, PublicService, and Minimal packages
73 de KD7DGF π»π¨