DMXRouter 1.7.5
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 -listVLANsparser 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 vialistallnetworkservicesbefore callingnetworksetup -setmanual - Scan with retry — after VLAN creation,
configdmay 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→ macOSvlan0:20.254.29.247) - VLAN removal fixed — deleting a VLAN now resolves the correct BSD device and parent interface for the
networksetup -deleteVLANcommand
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 serversDMXRouter-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.appImportant: 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.