DMXRouter 1.5.3
RDM Emulator — Multi-Selection & Batch Operations
- Multi-selection in the device profile table. Ctrl+Click, Shift+Click, and drag-select now work. When multiple profiles are selected, the detail panel switches to a batch summary showing all selected devices with their status, UID, and model name.
- Batch operations: Activate All, Deactivate All, Duplicate All, Export All, and Remove All — available both from the batch panel buttons and from the right-click context menu. The context menu adapts its entries based on whether one or multiple profiles are selected.
- Multi-profile export produces a single
.dmxrprofilefile containing all selected profiles. Import recognises this format automatically alongside single-profile files.
RDM Emulator — Template Library
- New "Template Library" tab alongside the Devices tab. Templates are reusable fixture definitions — they contain the manufacturer, model, personalities, channel map, and supported PIDs, but no instance data (UID, port, DMX address, active state).
- Save as Template: right-click any device (or multiple devices) and choose "Save as Template…" to add it to the library. For single selection, a dialog asks for the template name.
- Create from Template: the "From Template…" button in the Devices tab opens a picker dialog, then asks how many instances to create (1–100) with a personality selector. Each instance gets a unique virtual UID.
- Personality selector in the "Create Instances" dialog — a dropdown listing all personalities with their channel count. A live label shows the DMX footprint of the selected personality. Templates with a single personality show the combo disabled.
- Template file format (
.dmxrtemplate): export and import templates independently from device profiles. Single-template and multi-template files are both supported. - Templates are persisted automatically to
rdm_emulator_templates.jsonin the data directory.
RDM — Complete E1.20 PID Support
DMXRouter now handles every standard PID defined in ANSI E1.20-2010:
- STATUS_MESSAGES / STATUS_ID_DESCRIPTION / CLEAR_STATUS_ID / QUEUED_MESSAGE: new "Status" tab in the RDM inspector. Query device status messages filtered by severity (Advisory / Warning / Error). Messages are color-coded. Click a row to fetch the human-readable description for that status ID. "GET Queued" drains the device output queue one message at a time, showing the
messageCountfrom each response. "Clear" sends SET CLEAR_STATUS_ID. - PARAMETER_DESCRIPTION: when "Fetch Advanced" retrieves a device's supported PID list and finds manufacturer-specific PIDs (0x8000–0xFFDF), it automatically queries PARAMETER_DESCRIPTION for each one. The PID Browser then shows the manufacturer's own name, data type, access mode (GET/SET), unit, and valid range for these PIDs — instead of just "Unknown PID".
- COMMS_STATUS: displayed in the Info tab (short message count, length mismatch, checksum failures). "Clear Comms" button in the Config tab resets the counters.
- PRODUCT_DETAIL_ID_LIST: displayed in the Info tab with human-readable names.
- BOOT_SOFTWARE_VERSION_ID / BOOT_SOFTWARE_VERSION_LABEL: displayed in the Info tab.
- FACTORY_DEFAULTS: GET displayed in Info tab, SET via "Factory Reset" button (with confirmation dialog).
- LANGUAGE / LANGUAGE_CAPABILITIES: displayed in Info tab (current language + number of available languages).
- DEFAULT_SLOT_VALUE: cached per device for reference.
- PROXIED_DEVICES / PROXIED_DEVICE_COUNT: displayed in Info tab for gateways that act as RDM proxies.
- REAL_TIME_CLOCK: displayed in Info tab. "Sync Clock" button sets the device clock to the current system time.
- POWER_ON_SELF_TEST / PERFORM_SELFTEST / SELF_TEST_DESCRIPTION: power-on self-test status shown in Info tab.
- RECORD_SENSORS: "Record All" button in the Sensors tab captures the current sensor values as reference.
- SUB_DEVICE_STATUS_REPORT_THRESHOLD: GET/SET supported.
- RESET_DEVICE: "Warm Reset" and "Cold Reset" buttons in Config tab (with confirmation dialogs).
- PRESET_PLAYBACK / PRESET_MERGEMODE / PRESET_INFO / PRESET_STATUS / CAPTURE_PRESET: preset state displayed in Info tab. All SET commands implemented.
RDM — E1.37-1 Dimmer Message Set
Full support for the dimmer-specific PIDs defined in ANSI E1.37-1:
- CURVE / CURVE_DESCRIPTION: current dimming curve displayed in Info tab. SET supported.
- OUTPUT_RESPONSE_TIME / OUTPUT_RESPONSE_TIME_DESCRIPTION: GET/SET supported.
- MODULATION_FREQUENCY / MODULATION_FREQUENCY_DESCRIPTION: GET/SET supported.
- MINIMUM_LEVEL / MAXIMUM_LEVEL: displayed in Info tab (increasing/decreasing values).
- BURN_IN: GET/SET supported.
- LOCK_STATE / LOCK_STATE_DESCRIPTION / LOCK_PIN: lock state displayed.
- DMX_FAIL_MODE / DMX_STARTUP_MODE: displayed in Info tab (scene, delay, hold). SET supported.
- DIMMER_INFO: full dimmer configuration summary in Info tab.
All dimmer PIDs are automatically queried when clicking "Fetch Advanced".
RDM — "Fetch Advanced" Button
New button in the Config tab that queries all E1.20 advanced PIDs and E1.37-1 dimmer PIDs in a single staggered burst (50ms spacing per PID to respect half-duplex gateways). This populates the Info tab's Advanced section, the Status tab, and the PID Browser's manufacturer PID metadata. Devices that don't support a PID simply NACK and the field shows "—".
LLRP — Identify Fixes
- Identify button is now a toggle — pressing it sends IDENTIFY ON; pressing again sends IDENTIFY OFF. The button highlights orange when active, matching the RDM panel behavior.
- Identify state is now fetched from the target (GET IDENTIFY_DEVICE) when selecting a device or clicking "Get Info".
- Context menu Identify ON/OFF now syncs the toggle button state.
- SET ACK for IDENTIFY triggers a re-read to confirm the device state.
Cross-Platform UI — Conditional Icons
- Emoji restored on macOS and Windows — all 22 UI icons (💡🔍🔄📋📥📤🤖💾📸📊🎬📈🔧🌐📡📂🔢 etc.) now render as their original colorful emoji on macOS and Windows, restoring the visual personality of the interface.
- BMP fallbacks on Linux only — Linux builds use safe BMP Unicode symbols (☀⌕↻☰⤓⤒⚙✔⊚▦▶↗☷№✕) that render reliably across all Linux font configurations.
AppStyle::Iconsnamespace — all icon constants are defined in a single place with#ifdef Q_OS_LINUXconditional. GUI files useIC::Identify,IC::Search, etc. via a namespace alias, making it trivial to adjust icons per platform.
Config Tab — Device Control
New "Device Control" section at the bottom of the Config tab with one-click actions:
- Warm Reset — software restart (RESET_DEVICE warm)
- Cold Reset — full hardware restart (RESET_DEVICE cold)
- Factory Reset — restore factory defaults (SET FACTORY_DEFAULTS)
- Clear Comms — reset communication error counters (SET COMMS_STATUS)
- Sync Clock — set device clock to system time (SET REAL_TIME_CLOCK)
All destructive operations require confirmation.
RDM — Remove Lost Devices
- "Remove Lost" button in the RDM panel header — removes all devices that haven't responded in over 30 seconds, instead of waiting for the default 5-minute timeout. Useful after disconnecting fixtures or reconfiguring a rig.
- "Remove Device" in the right-click context menu — immediately removes a single device from the discovered list.
- "Remove Lost Devices (not seen >30s)" in the context menu — same as the header button.
- "Last seen" indicator in the context menu shows how long ago the device last responded, helping identify lost fixtures before removing them.
RDM Templates — Export & Import
- "↑ Export…" button in the Templates tab — exports all RDM configuration templates to a JSON file for sharing or backup.
- "↓ Import…" button — imports templates from a previously exported file. Supports multiple formats: the export wrapper, the internal DMXRouter storage format, and raw JSON arrays. Existing templates with the same model key are updated.
RDM Templates — Personality Dropdown
- The Personality column in the Templates table is now a dropdown menu instead of a static text field. When a device of the same model has been discovered, the combo lists all available personalities with their description and channel count (e.g. "1 — 8-bit Mode (4 ch)"). Selecting a personality immediately updates the template. The first entry "—" clears the personality setting.
RDM — Probe Progress Feedback
- Progress bar below the header — shows a green progress bar during device probing with "12 / 58 devices" format. Hidden when all devices are probed.
- Status label next to the progress bar — shows "Probing 12/58 devices…" in orange during probing, switches to "58 devices — ready" in green when complete.
- Discover button flashes orange while probing is in progress, providing a visual heartbeat that RDM activity is happening.
- "Status" column in the device tree — shows per-device probe progress: "…" (waiting), "3/6" (receiving PIDs), or "✔" (complete). The indicator is orange while probing and green when complete, making it easy to spot which fixtures have been fully queried.
Show Cue — Playback Time & Repeat Feedback
- Fade time countdown in the status label — during crossfading, the status now shows elapsed and total time (e.g. "FADING Show 1 · Cue 3 · 1.2s / 5.0s") instead of just a percentage, so you know exactly how long remains.
- Sequence playback timing — for sequence cues (recorded timelines), the status shows elapsed and total duration (e.g. "▶ PLAYING Show 1 · Cue 5 · 12.3s / 45.0s"). The progress bar also fills during sequence playback, not just during crossfades.
- Repeat counter in the status label — when autopilot is active and the current cue has multiple repeats, the status shows "Rep 2/5" alongside the cue and time info.
- Repeat counter in the Reps column — the cue table's Reps column for the active cue updates live to "2/5" during playback, making it visible at a glance which repeat cycle is running. Reverts to the configured value when the cue is no longer active.
RDM Emulator — Slot Editor per Personality
- The channel/slot editor in the Create/Edit dialog now follows the selected personality, not just personality 1. Clicking a personality row in the table switches the slot editor to show that personality's channel count.
- The slot group title updates to show which personality is being edited (e.g. "Slots / Channels (Personality 2 — 8 ch)").
- Existing slot data is preserved when switching between personalities with different footprints — editing an 8-channel personality, switching to a 4-channel one, then back restores all 8 slots.
Show Cue — Renumber Cues
- Decimal cue numbers — cue numbers are now floating-point, supporting subdivisions like MA2 consoles: 1, 1.5, 2, 2.5 or 3, 3.1, 3.2, 3.3. Up to 3 decimal places. Integer cues display without decimals (e.g. "5" not "5.00"). Fully backwards-compatible with existing show files.
- New "Renum" button in the cue toolbar — renumber cues individually or in batch with a start/step pattern.
- Single cue selected: a dialog asks for the new number (supports decimals).
- Multiple cues selected (or none = all): a dialog with Start and Step (both QDoubleSpinBox). Examples: Start=1, Step=0.5 → 1, 1.5, 2, 2.5… or Start=3, Step=0.1 → 3, 3.1, 3.2, 3.3…
- Live preview shows the resulting numbers before you confirm.
- Works with multi-selection (Ctrl+Click, Shift+Click) on the cue table.
Engine Table — Input Source Display
- Engine inputs now show which engine — when a process engine uses another engine's output as input, the routing table displays "Engine 3 « Backup FOH »" (number + name) instead of just "Engine". The edit dialog also shows "In 1 (Engine 3):" for clarity.
Column Width Fixes
- Show Cue table: Curve and Loop columns now use fixed 95px width instead of ResizeToContents, so the dropdown combos ("Ease Out", "Ping-Pong") are fully visible.
- RDM Personalities table: Description column now stretches instead of the Active column.
- RDM Slots table: Description column now stretches instead of Label ID.
- Fixture DB table: Lamp Hours and Power Cycles columns widened to prevent header truncation.
VLAN Manager — Cross-Platform Overhaul
The VLAN Manager has been completely rewritten on macOS and Linux to match the Windows experience. All three platforms now work the same way:
- No need to run as Administrator / root / sudo. DMXRouter launches as a normal application. When you create, remove, or configure a VLAN, the operating system shows its standard password dialog — just like installing software. You type your password once and it's cached for the session.
- VLANs and IP addresses persist across reboots. On all three platforms, VLANs are now stored as permanent network configurations by the OS. Previously, macOS and Linux VLANs disappeared on restart.
- VLANs appear as real network adapters. On Windows they show up in Network Connections, on macOS in System Settings → Network, on Linux in NetworkManager. You can also configure them from the OS if needed.
- Consistent VLAN 1 (Management / untagged) across platforms. The parent NIC is now shown as "VLAN 1 · untagged" in the VLAN table on all platforms, matching the Luminex convention. You can assign an IP to the parent NIC directly from the VLAN Manager — no need to open the OS network settings separately.
- Scan and diagnostics updated to use the native OS VLAN management tools on each platform.
macOS: uses networksetup (persistent network services) + native password dialog.
Linux: uses nmcli / NetworkManager (persistent connections) + PolicyKit password dialog. Requires NetworkManager (sudo apt install network-manager if not present).
Windows: Hyper-V (unchanged).
RDM Emulator — Edit Dialog Hover Fix
- Mouse hover no longer auto-selects widgets in the Create/Edit profile dialog. The personalities table and the slot/channel table now behave correctly — you have to click to select a row or focus a field. Follows the same fix previously applied to the Node Port Configuration table.
Platform Availability
Windows
Download and run DMXRouter-Setup.exe. All dependencies included.
VLAN management requires Windows Pro/Enterprise with Hyper-V enabled.
Linux
Download the binary for your architecture:
DMXRouter-v1.5.3-linux-x86_64.zip— standard PCs and serversDMXRouter-v1.5.3-linux-arm64.zip— Raspberry Pi 4/5, Orange Pi, ARM64 boards
Qt6 runtime required:
# Ubuntu / Debian / Raspberry Pi OS
sudo apt install libqt6core6 libqt6gui6 libqt6widgets6 libqt6network6
# Fedora
sudo dnf install qt6-qtbase
# Arch
sudo pacman -S qt6-base
Then: chmod +x DMXRouter && ./DMXRouter
VLAN management requires NetworkManager (sudo apt install network-manager if not present). No need to run as root — the app prompts for your password when needed. VLANs persist across reboots.
macOS
Download the .app bundle (Qt6 frameworks bundled). Requires macOS 13.0 (Ventura) or later. On first launch, allow it in System Settings → Privacy & Security.
No need to run with sudo — the app prompts for your password when needed. VLANs appear in System Settings → Network and persist across reboots.