Cross-platform Dante and wireless channel monitoring for professional live events. Real-time RF, battery, audio level, and fault intelligence — all in one dark-themed operational interface.
OVERVIEW
ETR-NodeScope is a professional wireless microphone monitoring application that aggregates Dante network channels, wireless receiver telemetry, and audio meters into a single operational dashboard.
Real-Time Channel Grid
Up to 32 channels displayed as live tiles. Each tile shows RF signal, battery, audio level, mute state, and fault status simultaneously.
Smart Alerts Engine
Predictive battery depletion, RF trend analysis, audio dropouts, and mute alerts — fires warnings before problems become show-stopping faults.
Mic Check Workflow
Structured pre-show channel verification with OK / Watch / Fault states, engineer and venue metadata, timestamped log, and exportable PDF report.
WebUI Remote Access
Built-in HTTP + WebSocket server. Any tablet or phone on the same network can monitor channels and manage talent profiles via a browser.
Talent Profiles
Assign named performers with photos, roles, priority levels, and per-talent alert thresholds to individual channels.
MQTT Telemetry
Publishes channel, device, alert, and system state to any MQTT broker — enabling integration with control surfaces, dashboards, and automation systems.
Supported Hardware
| Manufacturer | Product Range | Protocol | Port |
|---|---|---|---|
| Wireless | supported digital wireless receivers | TCP text protocol | 2202 |
| Wireless | digital wireless receiver series | HTTPS REST | 443 |
| Wireless | receiver series receivers | TCP | 32789 |
INSTALLATION
ETR-NodeScope is built on .NET 8 and Avalonia, making it natively cross-platform. The same codebase runs on Windows, macOS, and Linux.
Prerequisites
- .NET 8 Runtime — download from
dotnet.microsoft.com - Windows (ASIO users) — Dante Virtual Soundcard or compatible ASIO driver installed
- macOS / Linux (audio) — BASS native libraries included in the packaged build
- Network — the monitoring PC must be on the same L2 network segment as wireless receivers for discovery to function
Build from Source
# Restore NuGet packages
dotnet restore ETR-NodeScope.sln
# Run tests
dotnet test ETR-NodeScope.sln -c Debug
# Build release binary
dotnet build ETR-NodeScope.sln -c Release
# Run directly (development)
dotnet run --project ETR-NodeScope.Desktop
Windows Packaged Release
powershell -ExecutionPolicy Bypass -File .\build.ps1 `
-Target Windows -Configuration Release -Clean -Zip
Linux Systemd Service (Appliance)
For rack-mounted or headless appliance deployments, a systemd service unit is included:
sudo cp deploy/appliance/etr-nodescope-appliance.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable etr-nodescope-appliance
sudo systemctl start etr-nodescope-appliance
QUICK START
Get monitoring in under two minutes — even without physical hardware, using Demo Mode.
Demo Mode (No Hardware Required)
The app opens to the main channel grid. Status bar will read "Ready" in grey.
Go to Actions → Toggle Demo Mode. The status bar changes to "DEMO MODE" in amber. Simulated Wireless and Wireless devices populate the Devices panel.
Open the output device dropdown in the toolbar and choose the Demo audio generator.
Press Ctrl+S or Actions → Start Services. Channels animate with simulated RF, battery, and audio data.
Real Hardware Mode
Open File → Settings, go to Wireless Devices, and add each receiver's IP address and label. Or enable Auto-Discovery to let ETR-NodeScope scan the network automatically.
Choose your Dante Virtual Soundcard channel or ASIO interface from the output device picker in the main toolbar.
Ctrl+S. The app connects to all configured receivers, populates the channel grid, and begins polling telemetry.
Verify RF levels, battery readings, and audio meters match your receiver front panels before relying on the system live.
MAIN WINDOW
The main window is a 1400×850 (minimum 900×600) operational dashboard divided into four zones.
Menu Bar
| Menu | Key Items |
|---|---|
| File | Settings, Import Dante Preset (.xml), Save/Load Show Preset, View Logs, Live Logs, Create Support Bundle, Exit |
| Actions | Start / Stop Services, Refresh, Clear Alerts, Toggle Demo Mode, Toggle WebUI Server |
| Mic Check | Toggle Mic Check Mode, Reset All Checks, Export Report |
| Talent | Manage Profiles |
| Help | User Guide, About, Release Readiness Check, Create Support Bundle |
Status Bar
The bottom bar always shows: connection state indicator (coloured dot), running status, connected device count, active channel count, fault count, and current time. In Demo Mode, an amber "Demo" badge appears on the right.
CHANNEL TILES
Each channel is represented by a compact landscape tile. Tiles form a scrollable grid and update in real time as telemetry arrives from connected receivers.
Border Colour States
| Border Colour | Meaning |
|---|---|
| Green | Channel is active, connected, and operating within all thresholds |
| Amber | Warning condition — low battery, marginal RF, or audio anomaly detected by Smart Alerts |
| Red (pulsing) | Fault — RF loss, critically low battery, audio dropout, or device disconnection |
| Grey / dim | Channel inactive or no signal. Wireless channels in idle state are automatically suppressed. |
Right-Click Context Menu
Right-clicking any tile opens a context menu with the following actions:
- Toggle Monitor — enable/disable local audio monitoring on that channel
- Mic Check → OK / Watch / Fault / Quick Check — set mic check state without entering full Mic Check Mode
- Assign Talent… — link a talent profile to the channel
- Rename Channel on Unit… — send a new label to the physical receiver (requires device connection)
- Mute / Unmute on Device — remotely toggle the transmitter mute via the receiver's control protocol
- Flash Front — trigger the receiver's front-panel LED identification flash
DEVICES PANEL
The collapsible left panel lists all discovered and connected wireless receivers with their IP addresses, channel counts, and real-time connection status.
When collapsed, the panel shrinks to a 32 px vertical tab showing "RF DEVICES" and a green badge with the connected device count — preserving maximum screen space for the channel grid during a show.
Click the tab or press the expand button to reveal the full panel. Each device entry shows the device name, IP address, channel info, and a Flash Front button to physically identify the unit on the rack.
Device Status Indicators
| Status | Indicator | Description |
|---|---|---|
| Connected | ● | Polling telemetry and receiving live data |
| Reconnecting | ● | Connection was lost; retry in progress |
| Disconnected | ● | Cannot reach device. Check IP and network. |
ALERTS PANEL
The collapsible right panel provides a live, timestamped log of all system alerts. Alerts are raised by the Smart Alerts Engine and cleared automatically when conditions resolve.
Like the Devices Panel, the Alerts Panel can be collapsed to a tab showing the current unread alert count badge. This is useful when a dedicated second monitor is being used for alerts.
The Alerts Panel Window (File → Live Alerts, or from the main toolbar) opens a detachable floating version that can be placed on a second display.
Alert Severity Levels
| Level | Colour | Typical Triggers |
|---|---|---|
| FAULT / ERROR | Red border | RF signal loss, critically low battery (<15%), device disconnected |
| WARNING | Amber border | Battery below warning threshold, RF degradation trend, audio dropout detected |
| INFO | Blue border | Device connected, services started, preset loaded |
Each alert card shows: severity label, channel and talent name, a descriptive message, and the timestamp. Smart Alerts are automatically removed when the triggering condition clears (e.g. battery is swapped and rises above threshold).
Use Actions → Clear Alerts or the Clear All button in the Alerts Panel to manually dismiss all current alerts.
MIC CHECK MODE
Mic Check Mode is a structured pre-show workflow for verifying every channel before the doors open. It maintains a timestamped pass/fail log and generates a printable report.
Activating Mic Check Mode
Press F6 or go to Mic Check → Toggle Mic Check Mode. The amber banner appears below the menu bar showing real-time progress.
Channel States
| State | Key | Colour | Meaning |
|---|---|---|---|
| Unchecked | — | Grey | Not yet verified for this show |
| OK | 1 | Green badge | Channel passed — good RF, battery, and audio |
| Watch | 2 | Amber badge | Marginal — acceptable but monitor closely |
| Fault | 3 | Red badge | Problem found — do not use without fixing |
Keyboard Workflow
During Mic Check Mode, the focus channel advances through the grid. Use these keys to move and mark:
Exporting a Report
Go to Mic Check → Export Report…. The report includes show name, venue, engineer name, date/time, and the full per-channel check log with timestamps. Fill in the show metadata (optional) in the report dialog before exporting.
Resetting Checks
Mic Check → Reset All Checks clears all channel states back to Unchecked. Use this at the start of each day or show call.
TALENT PROFILES
Talent Profiles attach performer identities to channels, enabling photo display, named alerts, and per-performer threshold customisation.
Profile Fields
| Field | Description |
|---|---|
| Name | Performer's display name, shown on the channel tile and in alerts |
| Role | Role descriptor (e.g. "Host", "Panellist", "RF Pack") — shown as tile subtitle |
| Profile Photo | JPEG/PNG — cropped to square on import. Displayed as tile background. |
| Priority | Lead · Important · Standard · Support · Background — affects tile border weight and alert escalation |
| Battery Warning % | Per-talent override for the battery low alert threshold (default: 30%) |
| Battery Critical % | Per-talent override for the battery critical alert threshold (default: 15%) |
| RF Warning dBm | Per-talent RF signal threshold (default: -85 dBm) |
| Predictive Alerts | Enable/disable trend-based predictive warnings for this talent |
Assigning a Profile to a Channel
Right-click a channel tile and choose Assign Talent…, or use the Talent Selector dialog. You can also assign via the WebUI's Talent panel.
SHOW PRESETS
Show Presets snapshot the entire current channel layout, talent assignments, and channel names — enabling instant recall between show days or setlists.
Use File → Save Show Preset to write the current state to disk. File → Load Last Show Preset restores the most recently saved snapshot.
Presets are stored in the application data directory (%APPDATA%\ETR-NodeScope\ on Windows, ~/.config/ETR-NodeScope/ on Linux/macOS).
Dante Controller Preset Import
ETR-NodeScope can import channel name mappings from an exported Dante Controller XML preset. Go to File → Import Dante Controller Preset (.xml)… and select your .xml file. Channel names are read from the preset and applied to the corresponding grid positions. Use File → Reapply Dante Preset Mapping to re-run the import without re-selecting the file.
WEBUI REMOTE ACCESS
The built-in HTTP/WebSocket server lets you monitor channels and manage talent from any browser on the same network — a tablet at FOH, a phone in the wings, or a monitor backstage.
Enabling the WebUI
Go to Actions → Toggle WebUI Server. When running, the WebUI URL appears in the status bar (e.g. http://localhost:8080). The URL is also shown in Settings.
Remote Access from Tablets / Phones
By default the WebUI is bound to localhost only. To allow access from other devices on the network:
- Open File → Settings → WebUI Settings.
- Change the WebUI Bind Address in
appsettings.yamlfromlocalhostto0.0.0.0(all interfaces) or a specific IP. - Ensure
allowRemoteClients: truein config. - Restart services. Connect from any browser using
http://<machine-ip>:8080.
sharedSecret in the security config if remote commands are enabled. Never expose the WebUI port to the public internet.
Audio Streaming in the Browser
The WebUI streams PCM-16LE audio over WebSocket, decoded by the browser's AudioContext. Click a channel in the WebUI to begin monitoring it through the browser's audio output. The /api/audio-transport endpoint reports the active transport mode. WebRTC/Opus is an experimental scaffold — not enabled in the default build.
WebUI Features
- Real-time channel grid with RF, battery, audio, and mute states
- Talent panel — assign profiles to channels, create new profiles, set priority
- Start / Stop / Refresh service controls
- Live alerts panel with per-channel fault detail
- WebSocket reconnects automatically if the connection is lost
SETTINGS
Open with File → Settings or Ctrl+,. Changes are applied immediately to the running session and persisted to the config file.
Audio Settings
| Setting | Default | Description |
|---|---|---|
| Default Buffer Size | 512 samples | ASIO/BASS buffer depth. Smaller = lower latency, higher CPU. |
| Audio Update Rate | 30 FPS | How often audio meters refresh in the UI. |
| Enable ASIO Direct Monitoring | Off | Windows only — routes ASIO channels directly to monitor output via NAudio. |
Display Settings
| Setting | Default | Description |
|---|---|---|
| Default Channel Count | 8 | Number of channel tiles shown at startup (4–32). |
| Start with Devices Panel Collapsed | Off | Hides the left panel on launch for maximum grid space. |
| Start with Alerts Panel Collapsed | Off | Hides the right panel on launch. |
| Show Battery Warnings Below 20% | On | Global enable/disable for low-battery alerts. |
WebUI Settings
| Setting | Default | Description |
|---|---|---|
| WebUI Port | 8080 | TCP port for the HTTP and WebSocket server. |
| Auto-start WebUI Server | Off | Start the WebUI automatically when services start. |
Auto-Discovery
| Setting | Default | Description |
|---|---|---|
| Enable auto-discovery on Start | On | Scans the local network for Wireless and Wireless devices on service start. |
| Subnet scan | Off | Actively probes TCP 2202 (Wireless) and 443 (Wireless) on all hosts in the local /24. Slower but finds devices not responding to mDNS. |
| mDNS / Bonjour passive query | On | Passive mDNS-style discovery — fast but requires devices to advertise. |
| Rescan interval (seconds) | 30 | How frequently the discovery service rescans for new devices (10–300 s). |
DEVICE SETUP
Manual device entries always take priority over auto-discovery. Add each receiver once; ETR-NodeScope reconnects automatically on every service start.
Adding a Wireless Device
Scroll to the "Wireless Devices (TCP port 2202)" section.
Type the receiver's IP (e.g. 192.168.1.42) and a descriptive label (e.g. "Stage Left Rack"). Select channel count (4 or 8).
The device appears in the list. Click Save. ETR-NodeScope will connect on next service start or immediately if services are already running.
Adding a Wireless Device
Same process — scroll to the "Wireless Devices (HTTPS port 443)" section. Additional fields:
- Username — device web interface username (default:
admin) - Password — device web interface password
- Ignore SSL Errors — enable if the receiver uses a self-signed certificate (common for digital wireless receiver units)
Wireless Devices
Wireless receiver receivers are added the same way but use TCP port 32789. Subnet scan also probes this port when enabled.
MQTT TELEMETRY
ETR-NodeScope publishes real-time channel, device, alert, and system state to any MQTT broker, enabling integration with control surfaces, venue automation, or custom dashboards.
Enabling MQTT
Edit config/appsettings.yaml (or the in-app Settings panel) and set:
mqtt:
enabled: true
host: 192.168.1.10 # your broker IP
port: 1883
clientId: etr-nodescope
topicRoot: etr
username: ""
password: ""
retainMessages: true
Topic Structure
| Topic Pattern | Payload Type | Description |
|---|---|---|
etr/<node>/channel/<id> | ChannelStateDto | Per-channel RF, battery, audio, mute, fault state |
etr/<node>/device/<id> | DeviceStateDto | Device name, IP, connection status |
etr/<node>/alert/<id> | AlertStateDto | Alert severity, message, channel reference |
etr/<node>/system/status | SystemStateDto | Overall running state, counts |
etr/<node>/health/<service> | ServiceHealthDto | Individual service health (discovery, audio, webUI…) |
All messages are wrapped in an EnvelopeDto with a type field for easy routing. Messages are published at QoS 1 with retain=true.
OSC INTEGRATION
ETR-NodeScope includes an OSC service for integration with lighting consoles, show control systems, and third-party monitoring tools.
The OSC service listens on a configurable UDP port and can send channel state updates as OSC messages. This is useful for triggering light cues on battery or RF alerts, or feeding data to a mixing console's OSC surface.
OSC configuration is set programmatically or via the config file. Refer to ETR-NodeScope.Core/Services/OscService.cs for message address patterns and payload formats.
KEYBOARD SHORTCUTS
ETR-NodeScope is designed for fast operation with one hand on the keyboard during a show. All critical actions have direct key bindings.
Global Shortcuts
Mic Check Mode Shortcuts
SMART ALERTS ENGINE
The Smart Alerts Engine monitors channel telemetry trends and raises predictive warnings before problems become critical. Alerts fire automatically and clear automatically when conditions resolve.
Alert Types
| Alert Type | Trigger Condition | Default Threshold |
|---|---|---|
| Battery Critical | Battery % falls below critical threshold | 15% (per-talent configurable) |
| Battery Warning | Battery % falls below warning threshold | 30% (per-talent configurable) |
| Battery Depletion Trend | Predictive — battery drain rate suggests <30 min remaining | Enabled by default for Lead/Important talent |
| RF Warning | RF signal falls below warning level | -85 dBm (per-talent configurable) |
| RF Fault | RF signal lost (no signal / dropout) | Immediate on loss |
| Audio Dropout | Programme audio seen, then level falls below silence threshold for sustained period | -40 dBu silence / -30 dBu programme seen |
| Mute Active | Transmitter is muted during programme audio period | Alert on mute when programme expected |
Inactive Wireless channels (zero RF, zero audio — likely unpaired transmitter slots) are automatically suppressed to prevent false alerts in multi-channel receivers with unused slots.
DIAGNOSTICS & SUPPORT
ETR-NodeScope includes built-in tools for capturing diagnostic data and generating support bundles.
Live Log Window
Open with File → Live Logs…. Shows real-time log output from all services — useful for watching discovery events, connection attempts, and telemetry ingestion in real time.
Log Files
Persistent log files are written to the logs/ directory in the application data folder, retained for 14 days by default. Log level is set in appsettings.yaml (Information default, Debug or Verbose for troubleshooting).
Support Bundle
Go to File → Create Support Bundle… (also in Help menu). This captures the current configuration (with secrets redacted), recent log files, and a system snapshot into a timestamped ZIP archive suitable for emailing to support@eventtechnologyresources.com.
Release Readiness Check
Help → Release Readiness Check runs a self-assessment checklist covering audio paths, device connections, WebUI status, and service health. Useful before a show to verify all systems are operational.
Crash Reports
On unhandled exceptions, ETR-NodeScope generates a crash report saved to the application data directory. These are included automatically in Support Bundles.
CONFIGURATION FILE
All application settings can be edited directly in config/appsettings.yaml. This is the definitive reference for options not exposed in the Settings UI.
schemaVersion: 1
productInfo:
productName: ETR-NodeScope
companyName: Event Tech Research Ltd
edition: Professional
runtime:
mode: desktop # desktop | appliance
environment: production # production | staging | development
enableDiagnostics: true
audio:
backend: auto # auto | asio | bass
inputDevice: auto # auto | device name
channelCount: 32
bufferSize: 512
discovery:
enabled: true
enableMdns: true
enableSubnetScan: false
subnetCidr: 192.168.1.0/24
probeTimeoutMs: 750
maxConcurrentProbes: 16
sweepIntervalSeconds: 30
staleAfterSeconds: 90
mqtt:
enabled: false
host: 127.0.0.1
port: 1883
clientId: etr-nodescope
topicRoot: etr
username: ""
password: ""
retainMessages: true
webUi:
enabled: true
port: 8080
enableAudioStreaming: true
allowRemoteClients: false
logging:
level: Information # Verbose | Debug | Information | Warning | Error
directory: logs
retentionDays: 14
trial:
enableTrialMode: true
trialDays: 14
enableDemoMode: true
security:
enableRemoteCommands: false
sharedSecret: ""
webUiBindAddress: localhost # localhost | 0.0.0.0 | specific IP
allowedRemoteCidrs: []
devices: [] # Populated via Settings UI
config/ subdirectory of the application installation folder. On Windows this is typically C:\Program Files\ETR-NodeScope\config\appsettings.yaml. Changes require an application restart (or service stop/start) to take effect.
Support
For technical support, contact Event Technology Resources at support@eventtechnologyresources.com. Include a Support Bundle (Help → Create Support Bundle) with your enquiry for fastest resolution.
ETR-NodeScope v2.2.0 · Copyright Event Technology Resources. All rights reserved.