DMXRouter 1.6
DMXRouter v1.6.0 — Release Notes
Web Remote Control
DMXRouter now includes an embedded HTTP + WebSocket server with a built-in web interface that exposes the full application state and control surface over the network. Any device on the same network — phone, tablet, laptop, or automation system — can query status, control playback, manage process engines, trigger RDM operations, and receive real-time updates, all without touching the DMXRouter machine.
The server starts automatically on launch and listens on port 9090 (HTTP) and port 9091 (WebSocket) by default. The bind address is configurable — you can restrict the API to a specific network interface to keep DMX production networks clean. No external dependencies, no cloud services — it runs directly on Qt's event loop with zero impact on DMX performance.
Point any browser at http://<dmxrouter-ip>:9090 to open the web interface. The API is also directly usable from curl, Postman, Bitfocus Companion, custom scripts, or any HTTP client.
Web Interface
The built-in web interface is a responsive single-page application embedded in the binary (served from Qt resources — no external files needed). It uses the same dark professional theme as the desktop application. On desktop (≥768px) a sidebar provides direct navigation; on mobile a bottom tab bar with a "More" sub-menu is used.
Playback — Show management (create, rename, delete), cue list with inline editing (name, fade time, hold time, fade curve), cue reorder and cross-show copy, record cue with fade time. Full transport: ⏮️ Prev,
Engines — Process engine list with enable/disable toggles and expandable detail view (inputs, outputs, protocols, interfaces), snapshot and failsafe buttons, channel patch viewer with add/reset editing, global BLACKOUT/RELEASE button. 512-channel DMX output grid with color-coded intensity visualization and fullscreen mode. Desktop: 2-column grid (engines+patch | DMX grid).
RDM Devices — Enable/disable RDM toggle, force discovery, device list grouped by gateway with model, UID, DMX address range (start–end), personality, Fixture ID, probe progress, status indicators, and last seen time. DMX address conflicts are detected automatically and highlighted in red with a ⚠ warning — same overlap algorithm as the desktop. Inline SET forms for DMX address, personality, and device label. Identify button with visual state.
Stats & Log — Live PPS in/out, active universe count, error count (updated via WebSocket). Per-interface breakdown (Art-Net/sACN packets, PPS, errors per NIC). Scrollable log with color-coded severity levels. Desktop: stats in 4 columns.
More — Sub-menu (mobile) / sidebar links (desktop): Profiles (save, load, rename, duplicate, delete), Interfaces (enable/disable, no-link adapters shown dimmed) and VLANs (platform status, list, create, delete) in a single combined view, Nodes (discovery list), System (version, platform, Qt version, uptime, counters).
Features:
- Responsive layout — sidebar navigation on desktop, bottom tabs on mobile. 2-column grids on wide screens, single column on narrow. Hover states on desktop.
- Bidirectional sync — changes from the desktop GUI (engine toggle, show edits, RDM discovery, blackout, autopilot) are pushed to the web in real time via WebSocket. Changes from the web are pushed to the desktop via Qt signals.
- PIN authentication — if the server has a PIN configured, the web UI shows a login overlay. PIN is saved in the browser for convenience.
- WebSocket auto-reconnect (3s) with connection indicator in header (mobile) and sidebar (desktop).
- PWA support — web app manifest and Apple touch icon. Add to home screen for a native app experience.
- Zero external dependencies — vanilla HTML/CSS/JS, no build step, no CDN. Embedded in the binary.
Status Bar
The status bar shows a permanent Web API indicator at the right edge, next to the packet counter. It displays the HTTP port when the server is running (green) and the number of connected WebSocket clients when any are present (blue). When the server is stopped, it shows "API off" (dimmed).
REST API & WebSocket
The server exposes a full REST API covering system status, process engines, show cue playback (including all transport controls), RDM device management, profiles, network interfaces, VLANs, and nodes. Real-time updates are delivered over WebSocket on 6 channels (playback, stats, RDM, engines, log, interfaces). Optional PIN authentication protects both HTTP and WebSocket access. CORS headers are included for browser compatibility.
GET /api returns a self-describing JSON index of all endpoints and channels — point a browser or Postman at http://<ip>:9090/api to explore.
Configuration
Open Network → Web API... to configure the server: enable/disable, bind address, HTTP port, and PIN. Changes take effect immediately. Settings persist across sessions.
Network Interfaces
Disconnected adapters (no link) are now shown dimmed in the interface list instead of being hidden. The Enable checkbox remains active so you can pre-configure an interface before connecting the cable — it activates automatically when link is detected.
Improved filtering of non-Ethernet adapters on Windows: VPN, tunnel, TAP, and Bluetooth adapters are now identified by their hardware description (via GetAdaptersAddresses) even when the connection name is generic. Covers TAP-Windows, OpenVPN, WireGuard, Fortinet, Cisco AnyConnect, Palo Alto GlobalProtect, Tailscale, ZeroTier, Teredo, ISATAP, and Bluetooth PAN.
Fixture Database
The Fixture Database tab now includes a Recording toggle that lets you pause and resume database writes. When paused, RDM discovery and device probing continue normally but no fixture records or hour snapshots are written to disk. Existing data is preserved. The setting persists across sessions.
Channel Oscilloscope
Smoother waveform rendering: the oscilloscope now uses QOpenGLWidget with vsync-driven refresh at 60 fps, and all waveform coordinates use floating-point precision for sub-pixel positioning. The scrolling time axis no longer stutters between data samples.
Bug Fixes
- Fixed a GUI freeze when fetching extended device info (Fetch Hours / Fetch Extended) with the fixture database active.
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.6.0-linux-x86_64.zip— standard PCs and serversDMXRouter-v1.6.0-linux-arm64.zip— Raspberry Pi 4/5, Orange Pi, ARM64 boards
Qt6 runtime required (note the additional libqt6websockets6 and libqt6openglwidgets6 packages):
# 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, including WebSockets and OpenGL). 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.