Skip to content

About

An alternative to RCN (Roberts Communications Network) Recon, a tool for controlling and managing RTN Receivers.

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Simulcast Utility receiver control artwork

Simulcast Utility Suite

A modern, asynchronous Windows application for discovering, monitoring, configuring, and controlling RTN simulcast receivers.

.NET 10 WPF for Windows MIT license GitHub stars GitHub issues Latest release


Warning

Work in progress

Simulcast Utility Suite is under active development and although it has just reached a stable public release. Features, the interface, and especially the plugin framework may evolve as the project grows.


πŸ“– Overview

Simulcast Utility Suite is a modern WPF desktop application for discovering, monitoring, configuring, and controlling RTN simulcast receivers from one responsive interface.

RTN (Racetrack Television Network) delivers live racing and simulcast content to racetracks, casinos, sportsbooks, and off-track betting facilities throughout North America. Simulcast Utility Suite provides a modern receiver-management experience focused on responsiveness, clear live status, and extensibility.

Receiver communication and long-running operations use an asynchronous architecture so the interface remains responsive. A central receiver manager acts as the source of truth for selection, configuration, connection state, activity, channel information, and plugin integrations.

The application has grown beyond basic receiver control into an extensible platform. Plugins can add interface elements, commands, schedules, media feeds, themes, settings, persistent data, and application behavior without modifying the core application.


πŸ“₯ Download

Once public builds are available, the latest installer will be published on the GitHub Releases page.

➜ Download the latest release

The self-contained Windows x64 installer does not require users to install the .NET runtime separately. Setup supports both per-user and workstation-wide installations.


πŸ“· Application Showcase

Main Dashboard

Monitor receiver status, activity, channel information, EPG progress, and receiver details while keeping channel controls and actions close at hand.

Main Dashboard Page

Receiver Management

Discover, validate, add, edit, delete, and fluidly reorder receivers without leaving the main application shell.

Receiver Management Page

Plugin Management

Import, enable, disable, refresh, configure, and actively unload plugins at runtime. Plugin-defined settings are presented using controls that match the application theme.

Plugin Management Page

Virtual Remote

Open one independent, non-modal virtual remote per receiver and continue working in the main window while commands are sent.

Virtual Remote Window

✨ Features

  • ⚑ Asynchronous receiver discovery, communication, and refresh operations
  • πŸ“‘ Live online, offline, warning, editing, transmitting, and idle activity states
  • πŸ“Ί Current channel, EPG information, event times, and live progress display
  • πŸŽ› Validated channel control with command throttling and visual feedback
  • 🎲 Plugin-powered channel discovery actions such as Feeling Lucky
  • βš™ Add, edit, delete, validate, and fluidly reorder receiver configurations
  • πŸ•Ή Independent virtual remote windows with live activity feedback
  • πŸ”” Animated, stacked success, information, and error notifications
  • πŸ”„ Immediate startup refresh and guarded per-receiver or refresh-all actions
  • 🧩 Runtime plugin importing, enabling, disabling, refreshing, and removal
  • 🎨 Plugin-provided application themes, including title-bar appearance
  • πŸ’Ύ Persistent receiver configuration and plugin-specific data storage
  • πŸ“¦ Styled per-user and workstation-wide installers with optional receiver import

πŸ–₯ Main Dashboard

The dashboard provides quick access to the selected receiver and its controls:

  • Receiver name, identifier, IP address, MAC address, and software version
  • Online status, last-seen time, and current receiver activity
  • Current channel, event information, start and end times, and progress
  • Validated channel entry and plugin-provided channel actions
  • Refresh, edit, virtual remote, and other receiver actions
  • Plugin-provided cards, controls, schedules, and media experiences

Receiver selection is synchronized through the receiver manager, ensuring every view and open virtual remote reflects the current receiver information.


πŸ”Œ Plugin Framework

Plugins implement ISimulcastPlugin from SimulcastUtility.Plugins and receive an IPluginContext during initialization. Plugins can be imported as a single DLL, a collection of DLLs, or a ZIP package.

Plugins can currently

  • πŸ“‹ Access and observe the receiver collection and selected receiver
  • πŸ“‘ Dispatch receiver commands through the application's command services
  • πŸ–₯ Locate and extend application views with custom WPF elements
  • πŸ’¬ Open application dialogs and publish themed notifications
  • 🎨 Register themes and control light or dark title-bar appearance
  • πŸ’Ύ Store plugin-specific data through the application data-store API
  • βš™ Expose named settings, descriptions, choices, toggles, and list selectors
  • 🧭 Handle application startup arguments
  • πŸ”” Subscribe to receiver and application events
  • β™» Enable, disable, refresh, unload, and remove plugin code at runtime

Plugin settings controls

Plugin settings can be implemented by using IPluginSettingsProvider from SimulcastUtility.Plugins which allows the plugin to easily get the setting values and define what settings are available for the plugin using attributes.

The built-in settings experience currently supports:

  • Text
  • Numeric
  • Toggle
  • Checkbox
  • MultiCheckbox
  • Dropdown (choice)
  • SideBySideList

These are provided via the PluginSetting attribute using PluginSettingControlType enum.

Examples of Configuration Settings

Plugin folder layout

Plugins may be placed directly inside the configured plugin directory or in their own subdirectory when dependencies are required.

Plugins/
β”œβ”€β”€ ExamplePlugin.dll
β”œβ”€β”€ RTNSPlugin/
β”‚   β”œβ”€β”€ RTNPlugin.dll
β”‚   └── PluginDependency.dll
└── ExamplePlugin2/
    β”œβ”€β”€ Plugin.dll
    β”œβ”€β”€ PluginDependency1.dll
    └── PluginDependency2.dll

The application recursively discovers compatible plugins. Shared Simulcast Utility contract assemblies should not be copied into an individual plugin directory.

For complete guidance, see the Plugin Development Wiki.


πŸš€ Getting Started

End-user requirements

  • Windows 10 version 1809 or newer
  • 64-bit Windows installation

The official installer publishes a self-contained application, so no separate .NET installation is required.

Development requirements

  • .NET 10 SDK
  • Visual Studio 2026 or another IDE with WPF support
  • Inno Setup 6 when building the installer (Possibility of upgrading to Inno Setup 7 in the future)

Clone and build the project:

git clone https://github.com/NyxionSoftware/SimulcastUtilitySuite.git
cd SimulcastUtilitySuite
dotnet restore
dotnet build SimulcastUtilitySuite.slnx
dotnet run --project SimulcastUtility\SimulcastUtility.csproj

πŸ“¦ Building the Installer

Run the installer builder from the repository root:

Installer\build-installer.cmd

An optional version can be supplied as the first argument:

Installer\build-installer.cmd 1.0.0

The generated installer is written to Installer\Output\SimulcastUtilitySetup.exe and lets the user choose between:

  • A per-user installation under %LOCALAPPDATA%\Programs without elevation
  • A workstation installation under %ProgramFiles%\NyxionSoftware with administrator approval

The installer can optionally import an existing receivers.json file. The themed uninstaller independently offers removal of receiver configuration, installed plugins, and plugin data.


βš™ Configuration and Application Data

Unless overridden through configuration, application data is stored under:

%LOCALAPPDATA%\SimulcastUtility
Data Default location
Receiver configuration receivers.json
Logs Logs\
Installed plugins Plugins\
Plugin data and settings PluginData\

Logging and plugin directories can be changed through application configuration. The uninstaller preserves application data unless the user explicitly selects a cleanup option.


🧱 Solution Structure

Project Responsibility
SimulcastUtility WPF executable, startup, and application windows
SimulcastUtility.Wpf Views, view models, controls, themes, and WPF plugin services
SimulcastUtility.Application Receiver workflows, commands, events, and application interfaces
SimulcastUtility.Core Receiver models, enums, exceptions, and shared domain logic
SimulcastUtility.Infrastructure Receiver persistence and infrastructure services
SimulcastUtility.Configuration Application configuration models
SimulcastUtility.Logging Logging infrastructure
SimulcastUtility.Plugins Plugin contracts, loading, settings, storage, and runtime management
Installer Inno Setup source, generated payload, and installer builder

πŸ›£ Roadmap

  • Manual receiver discovery and validation
  • Receiver channel control and virtual remote
  • Receiver configuration, deletion, and drag-to-reorder
  • Live receiver status, activity, EPG, and progress
  • Animated application notifications
  • Runtime plugin management and active unloading
  • Plugin settings and persistent data-store APIs
  • Application-wide plugin themes
  • Styled per-user and workstation installer
  • Automatic receiver discovery
  • Receiver group management
  • Multi-language support

πŸ“š Documentation

The GitHub Wiki covers application usage, receiver management, configuration, plugin installation, plugin development, settings, data storage, UI integration, and themes.


🀝 Contributing

Contributions, bug reports, feature requests, documentation improvements, and example plugins are welcome.

  1. Fork the repository.
  2. Create a focused feature branch.
  3. Commit and test your changes.
  4. Open a pull request describing the change.

The main branch contains the current application. The legacy branch preserves the previous implementation.


πŸ“„ License

Simulcast Utility Suite is available under the MIT License.


Made with πŸ’œ by Nyxion Software Be sure to check out my website.

About

An alternative to RCN (Roberts Communications Network) Recon, a tool for controlling and managing RTN Receivers.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages