Skip to content

Releases: fiverecords/DMXRouter

DMXRouter 1.7.9

08 Apr 14:01
37ff8b3

Choose a tag to compare

Fixes

  • Fixed ArtAddress commands causing multi-port nodes to lock up — commands now target a specific bind index instead of all binds simultaneously, and periodic polling is paused briefly after each command to avoid stressing nodes during processing
  • Disconnected nodes are now removed from the Discovery tree after 10 seconds instead of 60, and the "last seen" timestamp updates in real time so the user can see the countdown before removal

Improvements

  • Added target port selector in Discovery control panel — failsafe mode, cancel merge, and reset Rx flags now apply to the selected port on multi-port nodes

DMXRouter 1.7.8

06 Apr 21:58
b919612

Choose a tag to compare

New Features

Software Switch (GitHub #25)

Select the active input on Switch-mode engines without a DMX control channel — from the desktop GUI, the Web UI, or the REST API.

  • Desktop: right-click an engine → "Switch Input" to select which input is live; right-click a group → "Switch All Inputs" to switch every engine in the group at once
  • Web UI: per-engine switch buttons with the active input highlighted; per-group switch buttons in the group header
  • REST API: POST /api/engines/:index/switch and POST /api/groups/:groupName/switch with {"activeInput": 0}

Engine State Indicators

The routing table and Web UI now show which input is active at a glance — no need to open a monitor or expand the engine detail.

  • Switch: ▶ marker on the active input, inactive inputs dimmed
  • Backup: ▶ marker with green (primary) or orange (failover) color
  • XFade: per-input percentage displayed in real time, updating every 2 seconds during a crossfade and instantly when the fade completes
  • Web UI: state indicators visible in the engine row header without expanding; Switch buttons, XFade progress bar, and Backup failover display in the engine detail

Web UI Improvements

  • Collapsed groups and expanded engine details are preserved when the engine list refreshes
  • Engine state changes (switch, backup failover, crossfade) push to the Web UI in real time via WebSocket

Improvements

  • Routing table preserves selection, keyboard focus, and scroll position when refreshing
  • Cue table columns adjusted: name stretches to fill available space, recorded timestamp and loop mode columns sized to fit their content

Fixes

  • Fixed black strip appearing on the right edge of the window after moving it on Windows at 100% display scaling (Qt6 geometry tracking issue)
  • Fixed empty dock area spacing that caused a visible gap between the window edge and the content
  • Fixed partial repaint artifacts in the Universe Monitor grid
  • Updated the Windows application manifest version (was outdated since v1.7.1)

DMXRouter 1.7.7

06 Apr 02:53
03a0de6

Choose a tag to compare

Universe Monitor — Source Name Display

The monitor now shows the sender's name next to each universe in the list.

  • sACN — displays the Source Name from the E1.31 packet header, cached per source CID to avoid overhead on every packet
  • Art-Net — displays the Short Name from the most recent ArtPollReply for that sender. When no ArtPollReply has been received (e.g. controllers that only send ArtPoll), the sender's IP address is shown as fallback and automatically upgrades to the real name when it becomes available

The name appears in quotes after the interface tag, e.g. ⬇ sACN 1 [VLAN 200] "My Console" ● 42ch.

RDM — Reorganized Controls

  • Fetch All — one-click button to fetch extended info (personalities, sensors, operating hours) for every discovered device at once. Shows a real-time progress bar with request count. Click again to cancel
  • Identify in tree toolbar — quick-access toggle next to Expand All / Collapse All / Flat View, with an All Off panic button alongside. No need to open the Config tab to identify a fixture — stays synced with the inspector button. The identify icon in the device name no longer affects alphabetical sort order
  • Header layout — buttons (Discover, Force Discovery, Remove Lost, Fetch All) are now right-justified and no longer shift when the device count changes. The device count sits between the title and the buttons

RDM — Batch Operations

  • Set Same Address — select multiple devices, right-click → Set Same Address. All selected fixtures receive the same DMX address. Useful for testing or warehouse patching

RDM — Fixture Templates

  • Personality offline editing — all available modes are cached in the template at save time. Change the personality in the template table or settings dialog even when the fixture is offline. Templates saved with older versions upgrade automatically
  • Device Hours Limit — same concept as Lamp Hours Limit, but for LED fixtures that don't report lamp hours. Set a threshold in the "Device Limit" column; the device name turns orange in the tree and the inspector highlights in red when exceeded. Only activates when lamp hours are zero
  • Template table — new "Device Limit" column between Lamp Limit and Settings

VLAN — Cross-Platform Profile Fix

Loading a VLAN profile from a different platform now correctly activates VLAN 1 (Management). Previously the adapter was remapped but stayed inactive because the foreign profile's vSwitch flag didn't apply. DMXRouter now verifies whether the local physical adapter is up and activates VLAN 1 accordingly — on all three platforms (Windows, macOS, Linux).

LLRP — Dynamic Interface Refresh

The LLRP interface dropdown now updates automatically when VLANs are created or removed, or when network cables are plugged in. System adapters (Hyper-V Default Switch) are filtered from startup. A manual Refresh button is also available.

Stats — Expanded Dashboard

The Stats panel (desktop and web) now shows eight metric cards: PPS In, PPS Out, Total In, Total Out, Active Universes, Errors, Sequence Errors (highlighted when > 0), and Uptime. A new per-universe stats table shows PPS, merge operations, sequence errors, and last-seen timestamps for each universe individually — useful for identifying which universe has problems.

New Reset Stats button clears all counters, sequence error trackers, throughput history, and uptime. Available in both desktop and web. New log level filter (All / Warn+ / Errors) to quickly find warnings and errors in the event log.

Web Interface — Major Expansion

The embedded web interface (accessible from any browser on the network) has been significantly expanded. New features accessible from a phone or tablet:

  • Universe Monitor — view all active universes with protocol, source name (sACN only shows priority), and active channel count. Select a universe to see its live DMX grid with 500ms refresh, tap any cell to see the channel number and value. Universe list auto-refreshes every 5 seconds. Fullscreen mode for the DMX grid
  • Engine management — engines displayed with group headers (collapsible), group colors, and human-readable interface names. Rename and delete engines. Snapshot and failsafe recording from each engine's detail panel. Engines without a group appear at the bottom, matching the desktop layout
  • Show Mode — global toggle moved to the sidebar panel, visible from any tab
  • RDM sub-tabs — Devices, Templates, and Fixture Database views with search/filter and clear buttons. Device and fixture counts shown in the tab labels. Expanded device detail panels ("More") persist across list refreshes
  • RDM device configuration — expand any device to access operating hours, Fixture ID, Apply Template, and configure parameters (Pan/Tilt Invert, P/T Swap, Display Invert, Power State, Lamp On Mode)
  • RDM templates — view the full template table with manufacturer, model, personality, DMX address, lamp/device hours limits, and firmware version. Apply All button sends the template to every matching device
  • Fixture Database — view UID, manufacturer, model, serial number, rental ID, and operating hours for every tracked fixture. Search by any column
  • RDM Emulator — view profiles and activate/deactivate them remotely
  • Stats — six metric cards (PPS In, PPS Out, Universes, Errors, Seq Errors, Uptime). Per-interface and per-universe stats tables with sequence error highlighting. Reset Stats button. Log viewer with level filter (All / Warn+ / Errors)
  • Profiles — load (refreshes engines), save, rename, duplicate, delete
  • Interfaces — single toggle button reflecting the actual active/inactive state, auto-refresh after toggle
  • VLANs — status dots (green/gray), IP address display, create and delete
  • Nodes — universe list, last seen timestamps, refresh button

General UX improvements: sticky Show Mode banner, keyboard shortcut (spacebar = GO on Playback tab), error toasts in red, loading indicators, WebSocket reconnect with amber "Reconnecting…" status, and refresh buttons on all sub-pages.

Bugfix — Stats Chart After Interface Changes

Fixed a bug where the throughput chart stopped drawing after activating or deactivating a network interface. The root cause was stale baseline counters in the stats engine: the PPS calculation produced negative values when interface counters reset to zero but the previous-snapshot reference still held the old totals. Additionally, sequence trackers are now cleared on interface rebuild to prevent false sequence errors from the gap in packet reception.

Bugfix — sACN Sequence Error False Positives

Fixed a bug where sACN per-channel priority packets (0xDD start code) were mixed with normal data packets in the sequence tracker, causing every packet to be flagged as a sequence error. Consoles that send both data and per-channel priority on the same universes (such as GrandMA3) triggered thousands of false errors. The merge engine was already handling this correctly — actual DMX output was never affected.

Additionally, the sequence tracker now separates tracking per network interface, preventing false errors when the same multicast packet arrives on multiple VLANs.

The sACN sequence validation now matches the tolerance defined in E1.31 §6.9.2: retransmissions (same sequence) and source restarts (large jumps) are no longer counted as errors. Only genuine out-of-order packets and missed packets increment the counter.

Log Cleanup

Removed noisy debug messages from the event log that appeared during normal operation (source cache pruning on timeout). Upgraded Art-Net protocol warnings and operational events (ArtTrigger, blackout) to appropriate log levels.


Platform Availability

Windows

Download and run DMXRouter-Setup.exe. All dependencies included. UAC will prompt for administrator privileges automatically if your account has them — this enables VLAN management without needing to right-click "Run as administrator".

VLAN management requires Windows Pro/Enterprise with Hyper-V enabled.

Linux

Download the binary for your architecture:

  • DMXRouter-v1.7.7-linux-x86_64.zip — standard PCs and servers
  • DMXRouter-v1.7.7-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 libqt6websockets6 libqt6openglwidgets6

# Fedora
sudo dnf install qt6-qtbase qt6-qtwebsockets

# Arch
sudo pacman -S qt6-base qt6-websockets

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.

First launch: macOS quarantines apps downloaded from the internet. Double-click install.command (shipped alongside the app) to remove the quarantine and sign it locally — you only need to do this once. Alternatively, run manually in Terminal:

xattr -cr DMXRouter.app
codesign --force --deep --sign - DMXRouter.app

Important: Disable the macOS Application Layer Firewall for reliable real-time DMX operation (System Settings → Network → Firewall → OFF). If you need firewall protection, use PF (pfctl) instead — see the v1.5.6 release notes for details and example rules.

No need to run with sudo — the app prompts for your password when needed. VLANs appear in System Settings → Network and persist across reboots.

DMXRouter 1.7.6

01 Apr 20:35
0ef3aab

Choose a tag to compare

Engine Groups

Process engines can now be organized into collapsible groups for managing large configurations.

  • Create groups — right-click any engine(s) → Move to Group → New Group, or select an existing group name
  • Multi-select support — select multiple engines (Ctrl/Shift+click) and move them to a group in one action
  • Collapsible headers — double-click the group header to expand/collapse; state is preserved across refreshes
  • Group color coding — right-click a group header → Group Color to assign a color from 9 presets (Red, Orange, Yellow, Green, Cyan, Blue, Purple, Pink, White). A vertical color bar appears on the group header and all its member engines for quick visual identification
  • Reorder engines — right-click an engine → Move Up / Move Down to reorder within its group
  • Reorder groups — right-click a group header → Move Group Up / Move Group Down to change the visual display order. Group order is independent of alphabetical sorting
  • Group management — Rename Group, Remove Group (engines are kept, just ungrouped)
  • Tristate group checkbox — enable/disable all engines in a group with one click. Partial state shown with a diagonal split indicator when some engines are on and others off
  • Bulk operations — selecting a group header includes all its engines for Remove, Reroute, Rename, Uni+/Uni−
  • Inheritance — new engines (Add, Templates, Clone) automatically join the group of the currently selected context
  • Visual hierarchy — groups appear above ungrouped engines (like folders before files), with a subtle separator line after the last engine in each group
  • Full-row hover — mouse hover highlights the entire row across all columns, including group headers (with lightened group background)
  • Profile persistence — group assignments, display order, collapsed state, and color assignments are all saved and restored with profiles
  • Web APIgroup field exposed on GET/POST/PUT /api/engines

How it works

The engine list uses a redesigned table with group header rows. Engines without a group appear as standalone items below the groups. Grouped engines appear indented under their collapsible group header, which shows the group name, member count, and an expand/collapse arrow.

Groups are purely organizational — they don't affect routing, merge processing, or output priority. Engine numbering follows the global config order, which can be changed with Move Up/Down.

Engine Reordering

  • MergeEngine::moveConfig(from, to) — new method to reorder process engines. Atomically moves a config in the internal vector and re-indexes all state maps (backup, crossfade, switch, master/limit, data loss, failsafe scenes, rate limiter)
  • Move Up / Move Down — available in the engine context menu, respects group boundaries (engines can only move within their own group or among ungrouped engines)
  • Disabled at boundaries — Move Up is grayed out for the first engine in a group, Move Down for the last

Fixture Database — Scan Mode & Import

New tools for rental companies and large installations that need to link physical fixture serial numbers and asset IDs to RDM devices.

Scan Mode (barcode workflow)

Walk through every fixture in the database that doesn't have a serial number yet. The selected fixture blinks (RDM Identify On), the cursor jumps to the Serial field, and a USB barcode scanner can type the number and press Enter — DMXRouter saves the serial, turns Identify Off, and auto-advances to the next fixture. Click Stop Scan at any time.

Import DB (CSV / Excel)

Import serial numbers and rental/asset IDs from external inventory software (Rentman, custom spreadsheets). Supports CSV files with automatic separator detection (comma, semicolon, tab) and Excel .xlsx files. A column mapping dialog lets you choose which columns in your file correspond to Serial Number and Rental ID, with a preview of the first rows. After import, a report shows how many fixtures were matched and lists unmatched serial numbers.

Manual fixture entries

Right-click the fixture table → Add Entry to create a fixture record that isn't tied to an RDM device. Useful for non-RDM equipment or pre-populating the database before a show. Manual entries use a synthetic UID (0000:xxxxxxxx) and allow editing the Manufacturer and Model columns directly in the table.

VLAN — Cross-Platform Profile Fix

Loading a VLAN profile saved on Windows onto a Mac or Linux machine no longer loses the VLAN 1 (Management) IP address. The physical adapter name is now preserved when the profile originates from a different platform.


Platform Availability

Windows

Download and run DMXRouter-Setup.exe. All dependencies included. UAC will prompt for administrator privileges automatically if your account has them — this enables VLAN management without needing to right-click "Run as administrator".

VLAN management requires Windows Pro/Enterprise with Hyper-V enabled.

Linux

Download the binary for your architecture:

  • DMXRouter-v1.7.6-linux-x86_64.zip — standard PCs and servers
  • DMXRouter-v1.7.6-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 libqt6websockets6 libqt6openglwidgets6

# Fedora
sudo dnf install qt6-qtbase qt6-qtwebsockets

# Arch
sudo pacman -S qt6-base qt6-websockets

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.

First launch: macOS quarantines apps downloaded from the internet. Double-click install.command (shipped alongside the app) to remove the quarantine and sign it locally — you only need to do this once. Alternatively, run manually in Terminal:

xattr -cr DMXRouter.app
codesign --force --deep --sign - DMXRouter.app

Important: Disable the macOS Application Layer Firewall for reliable real-time DMX operation (System Settings → Network → Firewall → OFF). If you need firewall protection, use PF (pfctl) instead — see the v1.5.6 release notes for details and example rules.

No need to run with sudo — the app prompts for your password when needed. VLANs appear in System Settings → Network and persist across reboots.

DMXRouter 1.7.5

30 Mar 22:19
8c23094

Choose a tag to compare

macOS VLAN Profile Restore — Complete Overhaul

VLAN restoration from saved profiles now works reliably on macOS, matching the Windows experience:

  • Sequential confirmed restore — VLAN creation and IP assignment are performed in three verified steps: create all VLANs (one password prompt), scan the OS to confirm they are registered, then assign IPs using the confirmed macOS service names (second password prompt). No sleeps or timeouts — each step waits for the previous one to complete
  • Correct macOS output parsing — the networksetup -listVLANs parser now handles the actual macOS format (Device ("Hardware" Port): vlanX, fields in Name → Device → Tag order). Previous versions assumed a different field order and Device line format, causing all VLAN operations to fail silently
  • Service name resolution — macOS registers VLAN network services as <name> Configuration (e.g. DMXRouter_VLAN200 Configuration). IP assignment now resolves the correct service name via listallnetworkservices before calling networksetup -setmanual
  • Scan with retry — after VLAN creation, configd may take several seconds to register all VLANs. The confirmation scan retries up to 8 times (2 seconds apart) before proceeding to IP assignment
  • Existing VLANs detected correctly — switching between profiles on the same machine is instant when the VLANs are already present. Only IPs that differ from the current OS configuration are updated
  • Cross-platform profile loading — profiles saved on Windows can be loaded on macOS and vice versa. Interface activation matches by IP address when the platform-specific interface ID doesn't match (e.g. Windows ethernet_32783:20.254.29.247 → macOS vlan0:20.254.29.247)
  • VLAN removal fixed — deleting a VLAN now resolves the correct BSD device and parent interface for the networksetup -deleteVLAN command

RDM PID Browser

  • Hex dump preserved — the GET response hex dump in the PID Browser is no longer overwritten when the device tree refreshes due to periodic discovery. Previously, the discovery cycle would rebuild the supported PIDs list and the selection restoration would replace the hex dump with PARAMETER_DESCRIPTION metadata

RDM Emulator

  • UID editor reacts immediately — toggling a profile's emulation on/off now enables or disables the UID field instantly, without needing to switch to another device and back
  • Disabled UID styling — the UID field now shows grayed-out text when the profile is active, making it visually clear that it cannot be edited while emulating
  • Accurate emulation of captured devices — the emulator now faithfully reproduces the exact capabilities of the captured device. PIDs that the real device didn't support (e.g. LAMP_STATE on fixtures without lamp control) are no longer advertised or responded to — controllers receive a proper NACK (NR_UNKNOWN_PID) just as the real device would. Dimmer curve count, response time count, and modulation frequency count are captured from the real device instead of using hardcoded defaults
  • Deep capture includes descriptions — CURVE_DESCRIPTION, OUTPUT_RESPONSE_TIME_DESCRIPTION, and MODULATION_FREQUENCY_DESCRIPTION are now fetched with proper index parameters during deep capture. Previously these required a parameter byte that the PDL=0 sweep couldn't provide, so they were always missing from the captured profile
  • Fixture ID (DEVICE_UNIT_NUMBER) works on emulated devices — the SET handler now correctly parses both 2-byte (E1.37-5 standard) and 4-byte (compatibility) formats. Previously, setting the Fixture ID on an emulated device always stored 0
  • SET CURVE/RESPONSE_TIME/MODULATION_FREQUENCY fixed — the emulator was reading 2 bytes (uint16) for these SET commands, but E1.37-1 specifies 1 byte (uint8 index). This caused FORMAT_ERROR when controllers sent the correct 1-byte SET

Re-capture required: Emulator profiles captured with previous versions have incorrect default values (e.g. 4 curves instead of the real count, lamp state "On" for devices without lamp control). Delete old profiles and re-capture from the real device to get accurate emulation.

RDM Dimmer Descriptions (E1.37-1)

DMXRouter now fetches the text descriptions for dimmer settings instead of showing raw index numbers:

  • CURVE_DESCRIPTION (0x0344) — after reading the current curve and count, DMXRouter requests the description for each available curve. The device inspector shows names like "Linear", "Square Law" next to the index
  • OUTPUT_RESPONSE_TIME_DESCRIPTION (0x0346) — same treatment for response time settings
  • MODULATION_FREQUENCY_DESCRIPTION (0x0348) — same for PWM frequency settings
  • Descriptions are displayed in the Info tab dimmer config line, and in the RDM template editor tooltips with the full list of available settings

RDM Device Configuration Dialog

New Configure button in the device inspector action bar opens a dialog to view and modify all RDM-configurable parameters of the selected device:

  • Dimmer curve, response time, modulation frequency — dropdown menus populated with the device's actual descriptions (e.g. "1 — Linear", "2 — Square Law") instead of raw numbers
  • Minimum / Maximum level — spin boxes with current values pre-filled
  • Lamp state and lamp on mode — dropdown with named options
  • Display invert and brightness — dropdown + spin box
  • Pan/Tilt invert and swap — on/off dropdowns
  • Power state — Full Off / Shutdown / Standby / Normal

Controls for unsupported parameters are automatically disabled and grayed out. Only changed values are sent to the device. If advanced info hasn't been fetched yet, the dialog fetches it automatically and shows "Loading…" while waiting for the RDM pacer to complete.

RDM Templates — Full Device Capture

"Save Template" now captures the complete device state including dimmer curve, response time, modulation frequency (with all available descriptions), lamp state/mode, display settings, pan/tilt inversions, power state, min/max level, and DMX fail/startup mode. All description names for enumerated settings are cached in the template JSON, so the Template Settings editor can show "1 — Linear", "2 — Square Law" even without a device connected.

"Save as Template" is also available from the device tree context menu (right-click). If advanced device info hasn't been fetched yet, it is fetched automatically before saving.

RDM Template Settings Editor

The template settings editor has been significantly improved:

  • Dimmer curves, response time, modulation frequency — now use dropdown menus with cached descriptions instead of raw spinboxes. All available options from the device are shown, not just the current value
  • Unsupported parameters — controls are disabled and grayed out when a matching device is connected and doesn't support the parameter
  • Descriptive labels — lamp on mode uses "Off (Manual Strike)", "DMX Signal", etc. instead of "Off (0)", "DMX (1)"

RDM Device Inspector — New Parameters

The device inspector now reads and displays several E1.20 parameters that were previously only available via the PID Browser:

  • LAMP_STATE (0x0403) — Off / On / Strike / Standby
  • LAMP_ON_MODE (0x0404) — Off / DMX / On / After Calibration
  • DISPLAY_INVERT (0x0500) — Off / On / Auto, with display brightness level
  • PAN_INVERT / TILT_INVERT / PAN_TILT_SWAP (0x0600–0x0602) — shown as flags when active
  • POWER_STATE (0x1010) — Full Off / Shutdown / Standby / Normal

All values appear in the Dimmer Config line of the Info tab with human-readable names. Devices that don't support a parameter simply NACK and it's omitted from the display.


Platform Availability

Windows

Download and run DMXRouter-Setup.exe. All dependencies included. UAC will prompt for administrator privileges automatically if your account has them — this enables VLAN management without needing to right-click "Run as administrator".

VLAN management requires Windows Pro/Enterprise with Hyper-V enabled.

Linux

Download the binary for your architecture:

  • DMXRouter-v1.7.5-linux-x86_64.zip — standard PCs and servers
  • DMXRouter-v1.7.5-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 libqt6websockets6 libqt6openglwidgets6

# Fedora
sudo dnf install qt6-qtbase qt6-qtwebsockets

# Arch
sudo pacman -S qt6-base qt6-websockets

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.

First launch: macOS quarantines apps downloaded from the internet. Double-click install.command (shipped alongside the app) to remove the quarantine and sign it locally — you only need to do this once. Alternatively, run manually in Terminal:

xattr -cr DMXRouter.app
codesign --force --deep --sign - DMXRouter.app

Important: Disable the macOS Application Layer Firewall for reliable real-time DMX operation (System Settings → Network → Firewall → OFF). If you need firewall protection, use PF (pfctl) instead — see the v1.5.6 release notes for details and example rules.

No need to run with sudo — the app prompts for your password when needed. VLANs appear in System Settings → Network and persist across reboots.

DMXRouter V1.7.4

29 Mar 21:35
15dfe78

Choose a tag to compare

RDM Preset Scenes (E1.37-1)

New Presets tab in the RDM device inspector for fixtures with internal scene storage:

  • Preset capabilities — reads PRESET_INFO to show maximum scenes, fade/wait time ranges, and supported features (level field, sequence, split times)
  • Scene table — displays all preset scenes with Scene#, Fade Up, Fade Down, Wait, and State columns. Scenes fetched via sequential paced PRESET_STATUS queries to respect RDM half-duplex timing
  • Inline editing — "Programmed" scenes have editable time spinboxes; confirming a value sends SET PRESET_STATUS immediately. "Read-only" and "Not programmed" scenes display as plain text
  • Playback controls — scene selector spin, Go button (SET PRESET_PLAYBACK), Off button, and merge mode combo (Default / HTP / LTP / DMX Only) all in the tab
  • Capture to Scene — saves the current DMX look into the selected scene slot (CAPTURE_PRESET). Re-reads the scene status automatically after capture
  • Clear Scene — erases a preset scene (SET PRESET_STATUS with clear flag). Respects read-only scenes
  • Fetch button — always available when a device is selected. Requests PRESET_INFO first if not loaded, then auto-fetches all scenes

RDM Emulator — Deep Capture

"Capture for Emulation" now performs a deep capture: before creating the profile, DMXRouter fetches advanced info and then sends a sequential GET for every PID the device supports. The raw response bytes are stored in the profile and replayed verbatim when the emulated device is queried — including manufacturer-specific PIDs, product details, boot software info, and anything else the real fixture reported. The result is a perfect RDM replica that fools any controller into thinking it's talking to the real hardware.

  • Raw PID cache — every successful GET response is automatically cached in memory. Deep capture copies the entire cache into the profile
  • Emulator fallback — when a controller GETs a PID that the emulator doesn't have an explicit handler for, it checks the captured responses and returns the exact bytes. Only PIDs with no cached data return NACK
  • Persisted in JSON — captured PID responses are serialized as hex keys → base64 values, surviving profile export/import and template conversion
  • Template support — "Save as Template" (new button + right-click menu) carries all captured PIDs into the Template Library. Instances created from templates inherit the full data
  • Progress feedback — deep capture shows a completion message with the number of PIDs captured (typically 30–80+ depending on the device)

RDM Emulator — Other Improvements

  • Preset support — "Enable Preset Scenes" checkbox in the Create / Edit dialog with configurable max scene count. Emulated devices respond to all 5 preset PIDs (PRESET_INFO, PRESET_STATUS, PRESET_PLAYBACK, PRESET_MERGEMODE, CAPTURE_PRESET) with realistic demo data
  • Local loopback fix — emulated devices now appear in DMXRouter's own RDM tree and respond to queries without network round-trip. Previously, the self-send filter blocked loopback packets, making emulated devices invisible to the local controller
  • Removed per-interface emulator RX sockets — the dedicated sockets that bound to specific IPs on port 6454 were stealing ALL Art-Net unicast traffic on Windows (not just ArtRdm), causing real devices to disappear from discovery when any emulator profile was active. All emulator traffic now routes through the main receiver and the local handler callback
  • Captured profiles unchanged — profiles captured from real fixtures don't gain preset support unless explicitly enabled. The emulator only advertises preset PIDs when presetMaxScenes > 0

VLAN Profile Restore

When loading a profile or config with "Preserve current IP / VLAN settings" unchecked, DMXRouter now properly restores the full VLAN configuration:

  • Scan-first approach — existing OS adapters are detected and imported without being destroyed or recreated. A quick profile switch on the same machine is instant
  • Create only what's missing — if the profile has VLANs that don't exist on the OS, DMXRouter creates the vSwitch infrastructure (Windows) and the missing VLAN adapters automatically
  • IP address persistence — VLAN IP addresses and subnet masks are saved in profiles and configs. IPs are read from the OS at save time. When restoring, existing VLANs only get their IP reassigned if it differs from the current OS IP
  • Adapter selection — if there are multiple physical network adapters, DMXRouter asks which one to use for VLAN creation. With a single adapter it's selected automatically
  • Preserve IP checkbox on Load Config — File → Load Config now shows the same "Preserve current IP / VLAN settings" checkbox as the Profile Manager

Interface State Persistence

Enabled network interfaces are now saved and restored in all config paths: File → Save/Load Config, Profile Manager save/recall, startup profile auto-load, session file, and web API profile save.

When VLANs are created asynchronously during profile restore, an event-driven deferred enable waits for each VLAN operation to complete before enabling the corresponding interface — no hardcoded delays, adapts to any system speed.

Reduced Transport Rebuild Noise

  • Suppress flag during VLAN reconcile — network change notifications from the OS no longer trigger intermediate transport rebuilds while VLANs are being created and IPs assigned. A single clean rebuild occurs at the end when all interfaces have their final addresses
  • Windows IP assignment cleanup — New-NetIPAddress output is suppressed (it wrote the IP object to stderr causing false "Failed to assign IP" warnings). A post-assignment verification check ensures the IP was actually applied

Platform Availability

Windows

Download and run DMXRouter-Setup.exe. All dependencies included. UAC will prompt for administrator privileges automatically if your account has them — this enables VLAN management without needing to right-click "Run as administrator".

VLAN management requires Windows Pro/Enterprise with Hyper-V enabled.

Linux

Download the binary for your architecture:

  • DMXRouter-v1.7.4-linux-x86_64.zip — standard PCs and servers
  • DMXRouter-v1.7.4-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 libqt6websockets6 libqt6openglwidgets6

# Fedora
sudo dnf install qt6-qtbase qt6-qtwebsockets

# Arch
sudo pacman -S qt6-base qt6-websockets

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.

First launch: macOS quarantines apps downloaded from the internet. Double-click install.command (shipped alongside the app) to remove the quarantine and sign it locally — you only need to do this once. Alternatively, run manually in Terminal:

xattr -cr DMXRouter.app
codesign --force --deep --sign - DMXRouter.app

Important: Disable the macOS Application Layer Firewall for reliable real-time DMX operation (System Settings → Network → Firewall → OFF). If you need firewall protection, use PF (pfctl) instead — see the v1.5.6 release notes for details and example rules.

No need to run with sudo — the app prompts for your password when needed. VLANs appear in System Settings → Network and persist across reboots.

DMXRouter 1.7.3

29 Mar 10:14
a77d67f

Choose a tag to compare

Custom VLAN ID

A new Custom entry at the top of the VLAN ID dropdown makes it obvious that you can type any VLAN ID (1–4094), not just Luminex group presets. Selecting it clears the field and shows a placeholder so you can type your ID immediately.

Fixture Database — Rental ID

A new editable Rental ID column in the Fixture Database allows you to tag each fixture with an asset or rental reference. Double-click to edit, just like Serial and Notes. Included in all CSV exports.

Serial & Rental ID Columns in RDM Device Tree

New Serial and Rental ID columns in the RDM device tree show the values entered in the Fixture Database. Hidden by default — right-click the tree header to enable them.


Platform Availability

Windows

Download and run DMXRouter-Setup.exe. All dependencies included. UAC will prompt for administrator privileges automatically if your account has them — this enables VLAN management without needing to right-click "Run as administrator".

VLAN management requires Windows Pro/Enterprise with Hyper-V enabled.

Linux

Download the binary for your architecture:

  • DMXRouter-v1.7.3-linux-x86_64.zip — standard PCs and servers
  • DMXRouter-v1.7.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 libqt6websockets6 libqt6openglwidgets6

# Fedora
sudo dnf install qt6-qtbase qt6-qtwebsockets

# Arch
sudo pacman -S qt6-base qt6-websockets

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.

First launch: macOS quarantines apps downloaded from the internet. Double-click install.command (shipped alongside the app) to remove the quarantine and sign it locally — you only need to do this once. Alternatively, run manually in Terminal:

xattr -cr DMXRouter.app
codesign --force --deep --sign - DMXRouter.app

Important: Disable the macOS Application Layer Firewall for reliable real-time DMX operation (System Settings → Network → Firewall → OFF). If you need firewall protection, use PF (pfctl) instead — see the v1.5.6 release notes for details and example rules.

No need to run with sudo — the app prompts for your password when needed. VLANs appear in System Settings → Network and persist across reboots.

DMXRouter 1.7.2

26 Mar 22:20
78a12e9

Choose a tag to compare

sACN Multicast Limit (Linux)

DMXRouter now automatically raises the kernel IGMP multicast group limit on Linux when needed. sACN uses one multicast group per universe — the default Linux limit of 20 is too low for professional setups with many universes. On startup, DMXRouter detects the current limit and raises it to 1024 if necessary, requesting elevation via pkexec when not running as root. No manual sysctl commands needed.

Fixture Database — Serial Number & Notes

The Fixture Database now includes editable Serial and Notes columns. Double-click a cell to type a serial number or free-text note for any fixture. Values are saved automatically and persist across sessions. Both fields are included in CSV exports (manual and auto-mirror) for integration with inventory management systems and spreadsheets.

Useful when the printed serial number on a fixture doesn't match the RDM UID — some manufacturers use a separate internal counter for the UID instead of the serial.

Bug Fixes

  • Fixed the Manufacturer PIDs tab not updating when switching between devices on the same gateway. Previously fetched values from one fixture would remain visible when selecting another fixture with the same manufacturer PIDs. Values are now cached per device and restored correctly when switching.
  • Fixed the Manufacturer PIDs tab losing all previously fetched values when switching to a device on a different gateway. Values are now stored in the device cache and persist across tab rebuilds — no need to repeat GET requests for a device you already queried.
  • Fixed the RDM device tree selection highlight showing mixed colors when focus moves to the inspector tabs. The branch area (left edge of the row) remained blue while the rest of the row turned grey. Both areas now use a consistent grey highlight when the tree loses focus.
  • Fixed clicking on empty space in the RDM device tree not clearing the selection. The inspector tabs continued showing the last selected device even though no device appeared selected in the tree. Clicking on empty space now properly deselects and clears the inspector.
  • Widened the UID, MAC Address, and CID columns in the LLRP target table. The UID column no longer truncates when the identify icon is shown.
  • Improved the LLRP Device Configuration layout — info fields now use a compact grid, the personality table fills available vertical space instead of being capped at a fixed height, and the log panel has more room.
  • Centered the RDM toolbar buttons (RDM ON/OFF, Discover, Force, Identify Off, Remove Lost) instead of pushing them to the right edge.
  • Widened the Access and Type columns in the Manufacturer PIDs table to prevent truncation.
  • Widened the Time and PID columns in the RDM Transaction Log. PID now uses stretch mode to accommodate long names.
  • Widened the Last Seen column in the Fixture Database table to fit the full timestamp.

Platform Availability

Windows

Download and run DMXRouter-Setup.exe. All dependencies included. UAC will prompt for administrator privileges automatically if your account has them — this enables VLAN management without needing to right-click "Run as administrator".

VLAN management requires Windows Pro/Enterprise with Hyper-V enabled.

Linux

Download the binary for your architecture:

  • DMXRouter-v1.7.2-linux-x86_64.zip — standard PCs and servers
  • DMXRouter-v1.7.2-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 libqt6websockets6 libqt6openglwidgets6

# Fedora
sudo dnf install qt6-qtbase qt6-qtwebsockets

# Arch
sudo pacman -S qt6-base qt6-websockets

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.

First launch: macOS quarantines apps downloaded from the internet. Double-click install.command (shipped alongside the app) to remove the quarantine and sign it locally — you only need to do this once. Alternatively, run manually in Terminal:

xattr -cr DMXRouter.app
codesign --force --deep --sign - DMXRouter.app

Important: Disable the macOS Application Layer Firewall for reliable real-time DMX operation (System Settings → Network → Firewall → OFF). If you need firewall protection, use PF (pfctl) instead — see the v1.5.6 release notes for details and example rules.

No need to run with sudo — the app prompts for your password when needed. VLANs appear in System Settings → Network and persist across reboots.

DMXRouter 1.7.1

25 Mar 22:07
0afed58

Choose a tag to compare

Software Version Column

A new Software column in the RDM device tree shows each fixture's software version label at a glance. Hidden by default — right-click the tree header to enable it. Useful for spotting firmware mismatches across a fleet without selecting each device individually.

Manufacturer PIDs Tab

A dedicated Mfr PIDs tab in the RDM inspector lists all manufacturer-specific PIDs (0x8000–0xFFDF) reported by the device's SUPPORTED_PARAMETERS response. PARAMETER_DESCRIPTION is automatically queried for each manufacturer PID when selecting a device — when supported, the table shows human-readable names, access types (GET/SET), data types, and valid ranges. Use the GET button to read a PID, SET to write it with hex data, or GET All to read every readable manufacturer PID at once. Values are automatically displayed as ASCII text when printable, as decimal numbers for short numeric values, or as hex for binary data.

Flat View

A new Flat View toggle in the tree toolbar shows all fixtures as a flat list without the gateway/port hierarchy. This allows global sorting by any column — click on Name, DMX, FID, Manufacturer, Model, or Software to sort all fixtures across all nodes at once. Essential for large installations where you need to find all fixtures of a specific model, or sort the entire fleet by lamp hours or firmware version.

Expand All / Collapse All

Two new buttons above the RDM device tree let you expand or collapse all nodes with one click. Essential when working with large installations where scrolling through 50+ gateways and ports becomes impractical.

Improved DMX Conflict Details

DMX address overlap warnings now show exactly which fixtures conflict and their channel ranges in the tooltip. Instead of the generic "DMX address overlap with another device on this port", you now see: "⚠ Overlaps with: Fixture A (1–12), Fixture B (5–16)".

Bug Fixes

  • The RDM device tree Name column no longer uses stretch mode. All columns are now individually resizable with a horizontal scrollbar appearing when the total width exceeds the panel. Previously, the stretch mode prevented the scrollbar from appearing when many columns were enabled.
  • Gateway node names in the RDM tree no longer include the IP address in parentheses. The IP is already shown in the UID column, allowing independent sorting by name or by IP.
  • The RDM device tree no longer forces DMX address sort order every refresh cycle. Clicking a column header now sorts devices by that column persistently, both within ports (hierarchical view) and globally (flat view).
  • The selected device in the RDM tree now remains visually highlighted even when focus moves to the inspector tabs. Previously the selection became invisible when clicking on a tab, making it unclear which device was selected.
  • Fixed the Manufacturer PIDs tab showing an empty list. The tab was sourcing PIDs from PARAMETER_DESCRIPTION responses only; devices that list manufacturer PIDs in SUPPORTED_PARAMETERS without supporting PARAMETER_DESCRIPTION had no entries. Now uses SUPPORTED_PARAMETERS as the source and enriches with description metadata where available.
  • Fixed the Manufacturer PIDs GET, SET, and GET All buttons silently failing. The PID text format "0x8000" was parsed with base 16 which does not accept the "0x" prefix. Now uses the stored integer value directly.
  • Fixed the PID Browser GET and SET buttons failing for PIDs entered with "0x" prefix in the hex field. Changed from base-16 parsing to auto-detect (base 0) which accepts both "8000" and "0x8000".
  • Widened narrow tree columns (DMX, FID, Status, Last Seen) and set a minimum column width of 40px to prevent the sort arrow from overlapping column text.
  • Fixed the RDM device tree sorting columns like DMX address and Fixture ID alphabetically instead of numerically (e.g. "113–128" appeared before "1–16"). Numeric columns now sort by their actual values.
  • Fixed RDM ACK_TIMER responses causing infinite retry loops with certain fixtures. Retries are now capped at 5 attempts per transaction.
  • Fixed RDM QUEUED_MESSAGE drain running indefinitely on devices that always report messageCount > 0. A 30-second cooldown prevents continuous retry after finding an empty queue.
  • Fixed RDM status messages not being read from devices that use the direct-read model (GET STATUS_MESSAGES) rather than the queued notification model.
  • Fixed the RDM Status tab description text being cleared every 300ms by the periodic refresh.
  • Status tree indicators now show green checkmark when only advisory messages are present. Only warnings and errors display the warning icon.
  • Fixed DEVICE_UNIT_NUMBER (Fixture ID) using 2-byte format which caused errors on fixtures that implement the 4-byte variant. GET now accepts both formats; SET sends 4 bytes.
  • Fixture ID now populates automatically during RDM discovery instead of requiring a manual fetch. A single GET DEVICE_UNIT_NUMBER is sent after the basic probe completes for each device.
  • PARAMETER_DESCRIPTION is now requested automatically during extended info fetch for all manufacturer-specific PIDs, instead of requiring a manual "Fetch Advanced" click. This populates the Mfr PIDs tab with human-readable names as soon as a device is selected.
  • Manufacturer PIDs values are now displayed as readable text: ASCII strings when all bytes are printable, decimal numbers with hex reference for short numeric values, or hex dump for binary data.
  • RDM queued change notifications for non-status PIDs are now detected and the affected PID is automatically re-fetched.
  • Fixed sensor values displaying raw integer values instead of applying the SI prefix from the sensor definition. Values now show correct decimal places (e.g. 4.5 V instead of 45, 30.0 °C instead of 300).
  • Widened the Sensor Unit column to prevent truncation of values like "A DC" and "Centigrade".
  • Suppressed expected NACK log entries for SELF_TEST_DESCRIPTION, STATUS_ID_DESCRIPTION, and PARAMETER_DESCRIPTION during iterative discovery.
  • Rearranged the Remote Control panel layout — Value Reference and Action Log are now side by side.

Platform Availability

Windows

Download and run DMXRouter-Setup.exe. All dependencies included. UAC will prompt for administrator privileges automatically if your account has them — this enables VLAN management without needing to right-click "Run as administrator".

VLAN management requires Windows Pro/Enterprise with Hyper-V enabled.

Linux

Download the binary for your architecture:

  • DMXRouter-v1.7.1-linux-x86_64.zip — standard PCs and servers
  • DMXRouter-v1.7.1-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 libqt6websockets6 libqt6openglwidgets6

# Fedora
sudo dnf install qt6-qtbase qt6-qtwebsockets

# Arch
sudo pacman -S qt6-base qt6-websockets

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.

First launch: macOS quarantines apps downloaded from the internet. Double-click install.command (shipped alongside the app) to remove the quarantine and sign it locally — you only need to do this once. Alternatively, run manually in Terminal:

xattr -cr DMXRouter.app
codesign --force --deep --sign - DMXRouter.app

Important: Disable the macOS Application Layer Firewall for reliable real-time DMX operation (System Settings → Network → Firewall → OFF). If you need firewall protection, use PF (pfctl) instead — see the v1.5.6 release notes for details and example rules.

No need to run with sudo — the app prompts for your password when needed. VLANs appear in System Settings → Network and persist across reboots.

DMXRouter 1.7.0

24 Mar 23:37
1df6c8c

Choose a tag to compare

Profile Preview

The Profile Manager now shows a detailed preview of the selected profile before loading. The preview panel displays the number of process engines, shows, cues, and VLANs, along with a compact list of each engine's mode, inputs, and outputs.

Preserve IP on Profile Load

When recalling a profile, a new Preserve current IP / VLAN settings checkbox (enabled by default) lets you keep your current network configuration. Uncheck it to load the VLAN settings stored in the profile — useful when moving profiles between machines.

Show Import / Export

Individual shows can now be exported to and imported from standalone JSON files. Use the ⤒ (export) and ⤓ (import) buttons next to the show selector. Exported shows can be shared between DMXRouter installations or used as backups independently of the full profile.

Engine Templates

A new Templates button next to Add in the process engine toolbar offers pre-configured engine setups: 8×/16× Forward sACN, 8×/16× Forward Art-Net, HTP Merge, LTP Merge, Backup Pair, X-Fade, and Switch. Templates automatically assign the next available universe numbers based on existing engines. Merge templates (HTP, LTP, Backup, X-Fade, Switch) assign distinct universes per input and place the output on the next available universe. Use this instead of creating engines one by one during initial setup.

Quick Universe Adjust

New Uni − / Uni + buttons (aligned right) in the process engine toolbar decrement or increment the input and output universe of the selected engine(s) by one. Only available for Forward mode engines — merge modes (HTP, LTP, Backup, etc.) are skipped to avoid breaking multi-input configurations. Works with multi-selection for fast bulk adjustments during setup.

RDM Self-Test (E1.20 §10.7)

Full self-test workflow support in the Status tab. DMXRouter discovers available self-tests on a device via SELF_TEST_DESCRIPTION, presents them in a dropdown, and lets you trigger any test with a single click via PERFORM_SELFTEST. A background poll detects when the test completes and directs the user to the status messages table for results — which are populated automatically by the existing messageCount auto-drain.

RDM Batch Operations

Select multiple devices in the RDM tree (Ctrl+click or Shift+click) and right-click for batch operations: Identify All On/Off, Set Personality (same mode on all selected), Set Sequential Addresses (auto-increments by each fixture's DMX footprint), and Fetch Info for all selected devices at once. Useful for touring setups where you need to repatch or remode an entire rig quickly.

Sensor Progress Bars

The Sensors tab now shows graphical progress bars for sensor values when the fixture reports a valid range (rangeMin/rangeMax). Bars are color-coded: green when the value is within the fixture's declared normal range, orange when outside. Plain numeric values are shown as fallback when no range is defined.

RDM Device Tree — Customizable Columns

Right-click the device tree header to show/hide columns and drag to reorder. Manufacturer and Model columns are now available (hidden by default). Column visibility, order, and widths persist across sessions. Use Reset to Defaults at the bottom of the context menu to restore the factory layout.

WiFi Interface Support

A new Show WiFi checkbox in the Network Interfaces panel makes wireless adapters visible for preprogramming scenarios where no Ethernet connection is available. WiFi interfaces appear tagged with [WiFi] in the interface list. Hidden by default to avoid confusion in live show environments. The setting persists across sessions.

Remote Control — Template Actions

Four new DMX remote control actions on the Main Channel: Auto-Apply Templates On (80–87), Auto-Apply Templates Off (88–95), Apply DMX Address On (96–103), and Apply DMX Address Off (104–111). The corresponding checkboxes in the RDM Templates tab update in real time when toggled via remote control.

Windows — Automatic Administrator Elevation

DMXRouter now includes a Windows application manifest with highestAvailable execution level. If the Windows user account has administrator privileges, UAC prompts automatically on launch — no need to manually right-click "Run as administrator" for VLAN management.

Bug Fixes

  • Fixed keyboard arrow navigation in the RDM device tree not updating the right-side inspector tabs. Only mouse clicks were selecting devices; keyboard navigation now works identically.
  • Added Delete key support in the RDM Templates tab to remove the selected template (with confirmation dialog).
  • Fixed the RDM Self-Test "Fetch Tests" button not sending any requests to the device.
  • Fixed RDM template apply sending incorrect parameter sizes for E1.37-1 dimmer PIDs (Curve, Output Response Time, Modulation Frequency, Maximum Level). Strict fixtures would NACK with FORMAT_ERROR.
  • Fixed engine templates for merge modes (HTP, LTP, Backup, X-Fade, Switch) creating both inputs on the same universe, making the merge non-functional.
  • Fixed a race condition in the RDM extended fetch pacer that could create duplicate worker threads under rapid start/stop cycles.
  • Fixed a potential path traversal vulnerability in the web server when an external web root directory is configured.
  • Fixed Windows administrator detection always reporting elevated privileges regardless of actual state. VLAN controls are now correctly disabled when not running as administrator.
  • Fixed inspector tab tables (Personalities, Slots, Sensors, PID Browser, Status Messages) losing the selected row and scroll position on every periodic refresh.
  • Fixed the self-test combo losing the selected test on every periodic refresh.
  • Fixed the Undo button and Seq Loop dropdown overflowing outside the cue list panel on narrow windows.
  • Improved the RDM Config tab layout — device controls now use a compact two-column grid, freeing more vertical space for the personality table.
  • Fixed LLRP discovered devices disappearing and reappearing every 30 seconds. Periodic keepalive probes were including the known UID suppression list, causing compliant responders to not reply.
  • Fixed LLRP multicast packets missing TTL=1 (link-local). Without this, some consumer routers attempted to route the multicast traffic beyond the local segment, causing internet disruption for the entire network.
  • Removed the LLRP "All Interfaces" option. The interface selector now requires choosing a specific network adapter before starting LLRP discovery, preventing accidental multicast traffic on unintended interfaces. Non-Ethernet adapters (WiFi, VPN, tunnels) are filtered from the list.
  • Fixed LLRP Identify and Get Info buttons briefly enabling then disabling when selecting a target.
  • LLRP target table now highlights devices in identify mode with the identify icon and amber text, matching the RDM device tree visual style.
  • LLRP now queries SUPPORTED_PARAMETERS on first target select and only requests PIDs the device actually supports. Controls for unsupported features (DMX address, personality) are automatically disabled. Avoids unnecessary NACK responses in the log.
  • LLRP now auto-fetches device info and network configuration when selecting a target — no need to click "Read" manually. Network fields (Static IP, Mask, Gateway) are pre-filled from the device's current configuration, and the DHCP checkbox visually disables the static fields when DHCP is active.
  • LLRP network config fields now show a clear visual distinction when disabled (dimmed background and text).
  • LLRP network config re-reads the device IP twice after applying changes (at 1s and 4s) to catch DHCP lease assignments that take a few seconds.
  • Removed the LLRP "Send Probe" button — redundant with the automatic periodic probe every 2 seconds.
  • Expanded the PID Browser table to use all available vertical space instead of a fixed 150px height.
  • Fixed RDM ACK_TIMER responses causing infinite retry loops with certain fixtures. Retries are now capped at 5 attempts per transaction, after which the operation fails cleanly instead of blocking the RDM queue.
  • Fixed RDM QUEUED_MESSAGE drain running indefinitely on devices that always report messageCount > 0 but use the direct-read STATUS_MESSAGES model instead of the QUEUED_MESSAGE queue. A 30-second cooldown now prevents continuous retry after finding an empty queue.
  • Fixed RDM status messages not being read from devices that use the direct-read model (GET STATUS_MESSAGES) rather than the queued notification model. Both approaches are now supported automatically.
  • Fixed the RDM Status tab description text being cleared every 300ms by the periodic refresh, making it impossible to read STATUS_ID_DESCRIPTION results.
  • Status tree indicators now show green ✔ (healthy) when only advisory messages are present. Only warnings and errors display the ⚠ icon — advisory messages are informational and represent normal device state.
  • Fixed DEVICE_UNIT_NUMBER (Fixture ID, E1.37-5) using 2-byte format which caused FORMAT_ERROR on fixtures that implement the 4-byte variant. GET now accepts both 2-byte and 4-byte responses; SET sends 4 bytes for compatibility.
  • Fixture ID (FID column) now populates automatically during RDM discovery instead of requiring a manual "Fetch Advanced" click.
  • RDM queued change notifications for non-status PIDs (e.g. DEVICE_UNIT_NUMBER after SET) are now detected and the affected PID is automatically re-fetched to update the device cache.
  • Fixed sensor values displaying raw integer values instead of applying the SI prefix from the sensor definition. Values now show correct decimal places (e.g. 4.5 V instead of 45, 30.0 °C instead of 300).
  • Widened the Sensor Unit column to prevent truncation of values like "A DC" and "Centigrade".
  • Suppressed expected NACK log entries for SELF_TEST_DESCRIPTION and STATUS_I...
Read more