Stoatworks Labs
openRCS — Modern control for Analog Way switchers
openRCS

What it does

openrcs is a modern control surface for Analog Way Midra and LiveCore series video processors, replacing control software that depends on runtimes today's browsers no longer support. It also drives the current range — an early LivePremier (Aquilon) mode, and since v0.6.0 a Midra 4K / Alta 4K mode — built on Analog Way's own published AWJ protocol rather than on reverse engineering.

At its centre is the Workspace: a single working page with the source palette (inputs and stills) on the left, every active screen editable side by side in the middle, and the device's memories along the bottom. Show program, preview or both at once, arrange layers with drag/resize or one-click presets, and take — with the previews growing to fill the window so nothing is a scroll away.

A small bridge server holds one connection to the processor and serves a web UI to any number of browsers: recall and store screen and master memories, arrange layers on a graphical canvas, run preview-to-program takes, and reach every device parameter through an inspector.

For operators who never want to touch a command line, a menu-bar tray launcher (macOS, Windows and Linux) bundles the server: enter the switcher's IP, pick the model, click Start, and Open the control surface — nothing else to install.

There is also a browser demo of the control surface. It is the real UI, unmodified, running against a device that exists only in the page — seeded from a recording of a real LiveCore session, so the variable table and the state it starts in are genuine. It cannot reach hardware and does not pretend to: a browser has no raw TCP socket, so the demo replaces the transport and keeps the app. Takes and memory save and recall are modelled; everything else echoes, and the footer says exactly what it cannot show.

  • Workspace working page — sources, every screen editable side by side, and memories on one window-filling page
  • No-CLI tray launcher (macOS, Windows, Linux) — enter the switcher's IP and go
  • Show program, preview or both at once; per-screen visibility and one-click layout presets (Fill / 2-up / Quad / PiP)
  • Inputs and Stills tabs — place a frame-store still just like a live input (LiveCore)
  • Graphical layer editor — drag and resize sources on the screen
  • Master and screen memory grids — recall, load-and-take and save
  • Working area — keep layers inside the part of a screen that is actually seen, on hardware that cannot crop an output
  • Video out (Midra) — the frame's second output on its own view, with a draggable area of interest so it carries a crop of a screen
  • Layer memories — capture one layer's whole property set and drop it onto any screen, preset or layer, with every recall verified by reading the layer back
  • Preview-to-program take with a transition time
  • Destinations — take, cut and T-bar whole screen groups as one destination
  • Wall — place each screen at its real output position; a big-target Show mode for front-of-house
  • Shows — capture the device's whole state to a portable file and restore it; instant Confidence undo
  • Plan mode — build a look offline with no device attached, then push it on connect
  • Cues that chain — per-cue autofollow with a hold, plus one-tap macro Keys
  • Multiviewer / confidence-output and soft-edge designers, EDID writer, input/output/screen/stills setup
  • Inspector over every device variable, plus a raw-protocol console
  • Midra 4K / Alta 4K (v0.6.0, v0.7.0) — a Show page with every destination side by side, screens with grouped takes and the quick preset, a layer canvas with the unit's own pictures, preset banks with save filters and autoscale, multiviewer, audio routing, input plugs with keyer, LUTs and EDID, outputs with area of interest and custom formats, stills, the device configuration, backups and streaming, over AWJ
  • Cues and Plan for the AWJ families (v0.7.0) — a cue list over the memory banks with autofollow, and a plan mode that stages a look with no processor attached
  • A Bitfocus Companion module drives the same protocol from a control surface
  • Dependency-light: a Rust bridge server and a no-build web UI
  • An optional Tailnet view for a dedicated panel — join, leave and rename the host from the touchscreen; off unless the server is started with --tailnet, and gated at the server rather than by a hidden button

Where it stands

Validated against real hardware — a NeXtage 16 (LiveCore) and a Pulse2 (Midra): device identity, framing, live layer control and takes, memories, EDID and the per-platform quirks are all confirmed on the wire. The LiveCore per-output area of interest is the one exception: the values stage and the apply is accepted, but the device's own readback never moved off a fixed size. LivePremier is in field testing. Reading has been exercised against two different Aquilon C frames on firmware 6.2.73, most recently on 9 September 2026, and the AWJ operations underneath the controls that write — take, cut, preset recall and the subscription list behind Live updates — are now confirmed on real hardware: a take measured at 1.07 s against a configured 1.0 s fade, a preset saved and recalled onto preview, an empty slot recalled silently, and a second socket receiving the push for a write made on the first. Those hardware writes were sent by a separate test harness rather than by this code, so what is proven is the protocol; openrcs's own write path has run end to end only against the LivePremier simulator. Latest server release: v0.7.0 of 15 September 2026 (prebuilt for macOS, Linux and Windows; the macOS builds signed and notarised, and since v0.5.1 a Windows installer that guards its write to the system PATH, which the v0.5.0 installer could overwrite), plus a tray launcher for a no-command-line install and a Companion module for control surfaces. New in v0.6.0 and v0.7.0: a Midra 4K / Alta 4K mode — screens and auxiliaries with take, cut, T-bar, freeze, take all and the device's quick preset; a layer editor that drags and resizes a screen's live layers on its canvas with the unit's own pictures on them, plus the preset's background and top frame, and sets every property the device declares; preset banks that save, label and erase as well as recall, with a master save that refuses to overwrite the bank slots the device would otherwise write silently; an inputs page with thumbnails, plugs, signals and the device's tally lists; a multiviewer designer that lays the widgets out on the MTVW canvas with the unit's own pictures and keeps its twenty layout memories, alongside the three timers; an audio page that routes every screen, output, line out and Dante group and programs the audio layer each preset carries; a setup page that stages the device's configuration (outputs to screens, layers to screens) and applies it behind a second tap, with each screen's canvas and test pattern; input plugs set up in full, keyer and EDID included; outputs with area of interest, HDR, the plug's HDCP and encoding, and custom formats; the on-device configuration slots and RTMP streaming; what a preset save records; grouped takes; a stills page over the capture library and the frame slots; a system page; and a raw AWJ inspector over every path the device reports — built on paths read off a real Pulse 4K, but driven end to end only against the vendor's simulators, which never complete a still capture, start a timer or a stream, or erase a custom format, so those are written and read back rather than proven. v0.7.0 added the Show page with every screen and auxiliary side by side, a cue list and a plan mode for both AWJ families, autoscale on load, the LUT libraries and soft edge — simulator-driven the same way.

How it compares

Where openrcs stands against the software Analog Way ships for each processor family — the RCS² for the Midra series, the Web RCS for LiveCore, LivePremier and Midra 4K, and the original RCS for the Pulse PLS300. Every row is a feature; the stock column is the vendor's inventory and the openrcs column is the verdict against it.

Describes openrcs v0.8.2 as of 2026-09-17, read from the views the app actually shows for each family; the vendor columns are read from the current manuals, not from a running unit. 58 features.

Midravs RCS²
15 full8 partial16 beyond stock5 missing14 n/a
LiveCorevs Web RCS
18 full13 partial13 beyond stock8 missing6 n/a
LivePremiervs Web RCS
2 full6 partial2 beyond stock45 missing3 n/a
Midra 4Kvs Web RCS
28 full18 partial3 beyond stock5 missing4 n/a
PLS300vs RCS
18 full7 partial7 beyond stock8 missing18 n/a
stock tool has itstock tool lacks itopenrcs: fullpartialmissingbeyond stockthe platform has no such thing
FeatureMidra Pulse², Eikos², Saphyr, SmartMatriX², QuickMatriX, QuickVuLiveCore Ascender, NeXtage, SmartMatriX UltraLivePremier Aquilon C / RSMidra 4K Pulse 4K, Eikos 4K, QuickMatrix 4K, QuickVu 4KPLS300 Pulse PLS300
RCS²openrcsWeb RCSopenrcsWeb RCSopenrcsWeb RCSopenrcsRCSopenrcs
Access & deployment
Control pathRCS² desktop app (Adobe AIR) on TCP 10500openrcs-server + browser; 562-variable table, proven on a Pulse2Web RCS served by the unit, in AW Browser1014-variable table, proven on a NeXtage 16Web RCS served by the unit over HTTP/HTTPSAWJ on TCP 10606 from the published guide; reads proven on two Aquilon C frames, openrcs's own write path simulator-onlyWeb RCS served by the unitAWJ on TCP 10606 in the Midra 4K / Alta 4K object model, every path read off a Pulse 4K on 3.3.10; openrcs's own surface driven only against the vendor simulatorsRCS desktop app (Windows only) over LAN or RS-232; LAN is off until enabled on the front panelopenrcs-server + browser; the 222-variable table from the published Programmer's Guide, driven only against a table-derived fixture — no PLS300 has answered yet
Works without a discontinued runtimeneeds Adobe AIRone binary or the tray app, any current browserneeds AW Browser for the Flash-era Web RCSsameHTML5, nothing to installparity — nothing to replaceHTML5, nothing to installparity — nothing to replacea Windows-only RCS from the 2009–12 support site, gone from the current oneone binary or the tray app, any current browser
Login, HTTPS, session locknonenone; loopback listen is the defaultnonenonepassword, HTTP/HTTPS, custom certificate, session locknonepassword protection, HTTPSnonenonenone; loopback listen is the default
Offline planning / simulatorpresets 9–64 live on the RCS² computer; no simulatorPlan mode stages a look with no device and pushes it on connect; browser demo against a simulated deviceAW Simulator runs the Web RCS with no unitPlan mode + demoLivePremier Simulatorplan mode: every value set on Screens or Presets is staged in the browser with no processor attached and pushed on connect; triggers are never staged; not the vendor’s simulatorMidra 4K Simulatorplan mode: every value set on any page is staged in the browser with no processor attached, previewed in place and pushed on connect; triggers are never staged; not the vendor’s simulator, which stays the way to rehearse a whole shownone in the RCS; the Axion2 controller had an offline modePlan mode stages a look with no device and pushes it on connect; browser demo against a fixture derived from the table
Touch / front-of-house surfacenoneShow mode: big CUT ALL / TAKE ALL, a take tile per destination, master-memory tilesnonesamemobile Web RCS; RC400T consolemobile Web RCS; RC400T consoleShow mode: every destination in one big column with large take and cut buttons, drawn for a touch screen or a front-of-house table; no phone layout, no consolenoneLive’s TAKE, preset tiles and freeze buttons; no big-button Show page for this family
Appliance use (no keyboard, no shell)type the IP in a desktop appConnection view (keypad or network scan, remembered) and an opt-in Tailnet view gated at the servertype the IP in the browsersametype the IP in the browserConnection + Tailnet views are family-independentConnection + Tailnet views are family-independenttype the IP in a desktop appConnection view (keypad or network scan, remembered) and an opt-in Tailnet view; a scan tells a PLS300 from a Midra by its DEV code
Live operation
Take and Cut, per screen and allTAKE with screen selection, T-barTake / Cut per screen, Take all / Cut all, one take timeTAKE with screen selection, T-bar, FADE TO BLACK, STEP BACKas Midra; on hardware openrcs sweeps the T-bar itself because the device's take verbs stall a group mid-transitionTake, Take Cut, T-bar, Fade In/Out, Step Back, screen transition filter, global take timeTake and Cut per screen with take-up/down times shown; no take-allTake, Take Cut, T-bar, Step Back, TAKE ALLTake / Cut per screen and per auxiliary, the take time typed in seconds, and Take all (one take per destination, as the vendor's own Web RCS does it)TAKE and Stepback buttons, virtual T-barTAKE on the one screen; the unit has no cut verb — each layer runs its own opening and closing effect
T-barGCtba per screenper screen and per destination groupper destination, on the take node's own control; the device reports the endsvirtual T-bar in the RCSNT, the unit’s 0.01 % T-bar, with its enable switch
Step backper screen and per groupthe device's own xStepBack — an edit undo (the last change to layer settings), which is what the vendor manual means by it here; not a return to the previous lookStepback buttonthe previous look copied to next and taken
Preset toggle, auto-take, dynamic fitMisc: preset toggle, autotake, dynamic fit, freeze modesettings reachable only through the InspectorScreens: preset toggle, auto take; Misc: dynamic fit, preview aspectON AIR follows the real program bank; the settings themselves are Inspector-onlyPreset Toggle per screenthe preset toggle (swap) per destination; no auto-take or dynamic fitControl menu: auto-take, preset toggleauto-take and preset toggle on Live; the unit has no dynamic fit
Fade to black / master fadeQuick Frame: an emergency still in front of every layeroutput Black per output (Outputs, Keys); no quick frameFADE TO BLACK, latching, on all layersMaster fade (to black / up) in Live and as a Key action; output BlackFade Out / Fade In on the selected screensQuick Preset → Fade to Blackthe device's own quick preset from the Screens view: fade to black, a library image or a master memory on every covered destination, on and off from one switch[BLACK] clears a layer; output black in the Output menuoutput black for main and preview on Live; a layer goes black by clearing its source
Freezeinput, layer and screen freeze; freeze mode all-or-oneinput freeze (Inputs, Keys), layer freeze, screen freeze and freeze allinput freeze, ribbon shortcutinput freeze in Inputs, Workspace flags, Keysfreeze the layer selection on PGM/PRW, freeze an input from its thumbnaillayer, screen and input freezedestination freeze, per-layer freeze (holds through a take), input freezeFreeze button; freeze mode by input or all inputsper-input freeze and the all-inputs mode, on Live and Inputs
Screen groups / destinationsscreen selection on TAKE onlythe Pulse2 advertises no group model (GCsta)screen selection on TAKE only; no named groupsDestinations: take / cut / T-bar / step-back a screen group, TAKE ALL GROUPS, grouping editor (Plngr, GCupd)screen transition filterTAKE ALL / selectiontick any set of screens and auxiliaries and take, cut or T-bar them as one group, or Take all; each keeps its own take timeone screen
Sequencer / cue listSequence: 16 scenes of master memories with durations; play, pause, stop, loopCues: any length, GO NEXT, per-cue autofollow wait, HOLD, notes; kept in the browserSequencer v2: variable-length cue stack, non-memory cue actions (inputs, frame slots…), keypad mode, loop/rewind/stepCues cover memory recalls; the device's own SEQ_TAKE sequences and non-memory actions are not drivennone in the Web RCS — webrcs-timeline and livepremier-plus fill this in the fleeta cue list over the screen bank: a memory per cue on one screen, Go (to preview, then take), Cut and Arm, per-cue autofollow with a wait, Hold; kept in the browser — the device has no sequencernonea cue list over the memory banks: a master, screen or auxiliary memory per cue, Go (to preview, then take), Cut and Arm, per-cue autofollow with a wait, Hold; kept in the browser — the device has no sequencernone in the RCS; the Axion2 controller had a sequence modeCues is built on the Midra/LiveCore memory verbs, not yet on the preset copy
User keys / macros / quick presetsnone in RCS²Keys: one-tap macros — recall + take, take, freeze, black, master fadeEmergency presets A–D (four master memories); sequencer keypad modeKeys; the emergency-preset slots themselves are not exposedRC400T user keys (hardware); none in the Web RCSQuick Preset on the front panel: fade to black, a library image or a master memorythe device's quick preset — fade to black, a library image or a master memory, on and off from one switch, with the destinations it covers and what it does to audio; the Midra 4K has no user keys or macros beyond itthe six quadravision layouts on the front panelthe six quick layouts and one-tap preset recalls on Live; no macro keys
Timers (clock, countdown, stopwatch)timers as image-slot and multiviewer contentthree timers in the multiviewerthe three timers: type, label, countdown duration, start/pause/stop — the transport verbs are written but the simulator never leaves idle
Input backup / failoverunusable sources are flagged amber with an offer to clear; no automatic switchsameQuick Backup set: Backup 1/2 per input, manual or automatic on failureFrame Alert: a backup input shown when a source dropsthe backup input (FRAME_ALERT) and the signal-less-input lock, on Inputs
UndoSTEP BACKConfidence: a cache-based undo ring, auto-snapshot before every take, one-click revertSTEP BACKsameStep Back; quick overwrite or revert on a memoryStep Back; quick overwrite or revertStep Back (the device's own edit undo, one step) from the Screens view; no revert of a memoryStepbackConfidence in Shows: a cache-based undo ring, auto-snapshot before every take, revert through the show-restore path
Composition
Graphical layer editordrag sources onto layers, drag/resize, wireframe or thumbnail modeLayers and Workspace: drag/resize, snap presets, arm-then-tap for touch, drop onto bare canvassame, with live thumbnails in the layerssameScreens layout editor with box / layer modea table, no layer editingevery screen’s live layers on a canvas at the applied size with the unit’s own pictures — one screen at a time on Layers with the full panel, all of them on Show — drag to move (snapping), corners to resize, twelve layouts, arrow-key nudge, copy and paste; an auxiliary is one background sourceImage tab: a preview window with layer buttons, PIP size, position, zoom, border and transparency by valueLayers: drag and resize on a to-scale canvas of the main output, for any of the seven presets
All screens editable at onceEdit shows one screen's program and previewWorkspace: every active screen, program stacked over preview, each canvas editing its own bank; Stage overviewEdit displays and edits only one screen at a timesameall screens and auxes side by side, resizable, with view memoriesthe Show page: every screen and auxiliary in service side by side, each screen’s program or preview editable on its own canvas, taken alone or all togetherone screen
Layer propertiespos/size, keep aspect, transparency, crop, edge/shadow borders, opening and closing transitions, timing, force transition, smooth move, per-group resetevery per-layer variable the unit advertises (27 leaves), including opening/closing durations and layer freezepos/size (+Z on PL), transparency, crop + aspect override, five border styles, transitions, timing bars, speed, Bézier flying curve, flip, B&W / negative / sepia / solarise, strobe, copy-paste per groupall 40 leaves: nine-point pad, aspect presets, borders, transitions with direction / timing / speed, flying curve, force transition, smooth move, flip, effects, strobesource, pos/size + anchor, keying, Cut & Fill, opacity, aspect/crop, mask, border, smooth border, shadow, colour filter, flip, strobe, transition effect / timing / speedopacity, crop/aspect, mask, border, smooth border, shadow, colour filter, flip, transition effect / timing / speedsource, centre/size, opacity, crop, mask, effects, border, shadow, transitions (type/way), flying curve type, speed type, freeze, fader with fade in/out, plus the background set/colour and the top frame; not the timing bars, flying curve points, speed points or a COLOR layer's coloursize, position, zoom, crop, border, transparency, opening and closing effectsevery PE_* leaf the guide lists: geometry, opacity, crop, border, both transitions with direction and duration, smooth move
Layout presets1–2 PIP layouts, clear or fade the others; Pos. and size shortcutsFill / 2-up / 3-up / Quad / PiP / Stack, plus the unit's own Layout picker1–6 PIP layouts; perspective layouts on PLFill / 2-up / 3-up / Quad / PiP / Stack, dividing the working areaalign set, ratio presets, box modelive-layer layoutstwelve layouts over the fitted layers in slot order — Fill, 2-up, 3-up, Quad, PiP, PiP ×2, 1 + 2, 1 + 3, 3×2, 4×2, Columns, Rows — on Layers and on every Show cardsix quadravision layoutsthe six quick layouts plus Full and quarter snaps
Snap, align, multi-selectalign two or more layers, keep aspect, trap layers on screensnap presets and nine-point pad; no multi-select or alignsnap to grid, snap to layer, alignment guides, multi-select, align, copy layer, raise/lowersnap presets, raise/lower; no grid magnet, multi-select or alignsnap to borders and grid, align set, box vs layer modedrags snap to the canvas edges and centre lines and to the other layers’ edges and centres (Alt to drag free), arrow-key nudge (Shift ×10); no multi-select or align commandssnap presets; no multi-select or align
Native background / background setsBackground Frame layer and background colourbackground frame or colournative background sets (input, frame or colour) with position, transparency, cut or fadebackground set or colour per screenbackground sets per screenbackground setsthe preset's background set (or colour) and opacity, and its top frame with position, on the Layers canvasbackground frame layer; background colour per outputthe frame layer, and the output background colour
Input keyingcolour killer, luma killer, grabber, DSK titlingno keying panel — Inspector only; captured in Show filescolour, luma and CremaTTe, assistant with masks, invert, DSKsamechroma, luma, CremaTTe 3D LUTchroma, lumakeyer mode (off / chroma / luma / cut and fill), the chroma and luma parameters, mask display and the sampling assistant, offered only where the device says the input has a keyer — no simulator input does, so written and read back but never seen keyingluma and chroma key with DSK, colour grabberkeying type, levels, tolerance, invert, DSK background and the grabber, per input
Cut & Filla layer keyed by the next layer's contentthe mnemonics beyond PRmcv are unknownon inputs and layerson odd inputscut-and-fill mode on the inputs the device says can be a fill (the odd ones), with the cut input, sync status and phase it reports; set on the simulator
Perspective / 3D layersAscender 32/48-4K-PL: X/Y/Z, RotX/Y/Z, anchor point, Z mixing, perspective layoutsDepth and Rotate X/Y/Z appear when a screen enables perspective; no anchor point or perspective layouts
Working-area constrainta per-screen region that layouts divide and no drag, typed value or recall can escape; the unit never knowssame; Fit existing layers across every bankthe output AOI serves the need insteadthe output AOI serves the need insteadthe working area is a Midra/LiveCore surface feature; not on this family
Live thumbnailsinput thumbnails are stored stills, not livenone — the unit serves no HTTPlive pictures in layers and the source ribboninputs only, refreshed a few times a minute — the unit serves capture_in_N and 404s everything elsesource, layer and output thumbnailsthe unit’s own pictures of inputs, outputs and the multiviewer, and each screen’s program and preview composed from them on the Show and Layers canvases; the device has no program or preview render of its ownnonenone — the unit serves no HTTP
Memories
Screen memories8 in the unit plus 56 on the RCS² computer (64 slots), labelsthe unit's eight presets: recall, load + take, save, erase, inspect thumbnail; the computer-side slots have no equivalent144 per screen bank: save mode, labels, overview, load filters, saved filters, autoscale144: recall / load + take / save / erase, device labels, inspect thumbnail, preview-or-program target1000, labels, slot colours, reorder, record mask, autoscale, quick overwrite/revertrecall only, paged 50 slots at a time with validity and label; no save, label or erase200 screen + 200 auxrecall, save (from program or preview), label and erase on the 200-slot screen and aux banks, paged 50 at a time, with a red/green mark on the slot each buffer holdsfour user presets, saved from main or preview, loaded to previewthe four presets and the previous look: recall, recall + take, save from current or next, inspect
Master memoriesmaster memories in Live, dragged onto screenson this family the eight unit presets are the master bank144, built from screen memories or from PGM/PRW, carrying confidence memories144: recall / load + take / save / erase, labels, category filter; Show mode tiles500, load at startup, edit50, self-contained or from screen memoriesrecall, save, label and erase on the 50-slot master bank; a save from a buffer writes the bank slots the device would otherwise put in slot 1, and refuses when they are in use; or record the memories the buffers already holdone screen
Layer memoriesbrowser-side layer bank: one layer's 27 properties, applied under the category chips, verified by reading the layer back, carried in a show filesame, 40 properties50 layer memories on the devicenot exposedcopy a layer’s whole property set — source, geometry and every property the panel holds — and paste it onto any layer of any screen or buffer (held in the page, not stored on the device)the browser layer bank is built on the Midra/LiveCore leaves
Recall filters (categories)whole presets onlycategory chips on layer-bank recalls, applied client-sideload filters and filters saved into the memorythe device's twelve-category PMcat on every recall, all three banksrecord mask per memorywhat a save records, as the device models it: the thirteen categories, which live layers, background and top for a screen; four categories for an auxiliary; which destinations and what of each for a master memory — a slot reports the filter it was saved withwhole presets only
Labels, colours, inspectShift-click detail window, preset labeldevice label per slot, inspect thumbnail of the stored layouthover overview, Shift-click label, filter icondevice labels (LBPMe / LBPSe), inspect thumbnaillabels, slot colours, reorder, hidelabels are read, nothing is writtenlabels read and written; no colours, no inspect thumbnailnumbered slotsinspect what a slot holds, drawn to scale; the unit stores no labels
Autoscale on recallnot exposedthe device’s own autoscale-on-load flag per screen, and the multiviewer’s, switched from the Presets and Multiviewer pages
Confidence screens and memoriesprogram outputs as confidence monitors, 14 layouts, 16 confidence memories, in master memoriesCM* / CO* are not exposedaux screens play this role
Aux screens and aux memoriesaux screens with aux layers, memories in the screen bankscreens onlyaux screens, 200 aux memoriesauxiliaries are destinations — take, cut, T-bar, freeze, memory bookkeeping, background source — and the aux bank recalls, saves, labels and erases
Setup
Preconfig: outputs → screens, canvasMode (mixer / matrix), Screens status, setup assistantScreens shows layer capacity and sets a working area; the operating mode is Inspector-onlyassistant: internal rate, link, output resources / dual-link / 4K, rotation, grid and custom-canvas screens, templates, ID pattern, native inputsWall places each screen at its real output position (OSpoh / OSpov, OSupd); screen composition, resource moves and rotation are not surfacedsystem rate, output groups, screens and auxes, grid / free canvas with covering and bezel, rotation, AOI, pitch, input groups, images, backgrounds, AVoIPsystem, screens / aux, canvas, background, audio, quick presettemplate, layer resources (off / seamless / split and their screen), every output’s role and destination, screens and auxiliaries in service, background layer type — from the device’s validity lists — computed and shown against the applied state, applied behind a second tap; each screen’s canvas as a grid of outputs or free placement; background sets, audio and the quick preset on their own pagesmixer or matrix mode from the front panelthe mode has no variable in the guide’s table; the surface draws the mixer layout and says so
Output setupframelock / internal, format, rate, sync type, force DVI, ten patterns, flicker, gamma, HDCPformat / rate, HDCP, black, processing where the unit advertises it; patterns only on the Video outrate, format, timing, type / colour, 4K mode, thirteen patterns, flicker, gamma, brightness, contrast, RGB gain, HDCP, optical plugformat / rate, HDCP, black, brightness / contrast / gamma / RGB gain; no timing, type or patternsformat, signal, manual and LUT correction, patternrole, format from the device’s allowed list applied through its update trigger, plug state, test pattern, picture and gains, area of interest and pitch, HDR and colorimetry, the plug’s HDCP policy, pixel encoding, embedded audio and SDI level, the connected display’s EDIDanalog / DVI type, format, rate, test patternsformat, rate, analog and digital types, sync polarity, patterns, background colour, overscan, HDCP, frame lock
Midra video out (the second output)format, status, pattern, flicker, gamma, overscan, sharpnessplug mode (Recording, mirror out 1, mirror out 2), screen source, a draggable area of interest, format, pattern — verified on a Pulse2, SDI plug watched moving
Area of interest (output crop)only the SD video out cropsthe working area stands inSetup AOI per outputstaged and applied (OSaup); a NeXtage 16's readback never moved, so the panel draws the readback and warnsper output, with pitch compensationthe whole format or a custom area in thousandths with overscan, applied with the device’s trigger and read back from its canvas status; pitch compensation beside it
Custom output formatsCVT or full, check, save / loadInspector onlymemories with label, load-from, validity checkInspector onlysixteen slots named and erased, an editor that takes a size and rate (CVT) or every porch and sync (full), checks it on the device and saves it into a slot; the erase is written but the simulator keeps the sloteight custom computer formatsselectable as Custom 1–8; their timings are not in the guide’s table
Input setupautoset all, plugs, EDID, HDCP, level / contrast / colour / hue / RGB, blanking, aspect / crop / overscan, user format, keyingavailability, active plug, signal status and size, freeze, black, pattern, brightness / contrast / colour / hue / RGB gain, crop; no autoset, keying or user formatplug select, signal type, SD options, enable, label, dual-link / dual-head / 4K, identifier, pattern, black, freeze, HDCP, image, clock / phase, sharpness, deinterlacer, aspect / crop, user format, keyingas Midrasignal, aspect / crop, keying, correction, LUT, pattern, NDI source, backupplug, LUT allocation, signal, correction, aspect, keyingactive plug, label, signal type and HDCP from the device’s lists, HDR mode and nits, picture, sharpness and pulldown, aspect (signal / shown as / in a layer), predefined or typed crop applied with the device’s trigger, crop finder, keyer, EDID; no LUT allocationenable, type, autoset, picture, geometry, aspectenable, type, autoset, picture, geometry, phase, aspect, overscan, pulldown, crop, SD standard
EDIDEDID choice per plugpreferred format per input, the connected display's EDID, and a custom-EDID writer for any resolution and rateEDID manager: output EDIDs, 32-slot library (10 locked), drag to inputs, file upload, factory resetper-input preferred format + store / factory, display readout, custom-EDID writer; no library or file import / exportEDID bank, save from I/O, template and custom formats, import / export, AW EDID Editorsamethe EDID each input plug presents, decoded (make, name, preferred timing, extensions), replaced from the device’s library of 21 factory and 64 saved EDIDs; a connected display’s EDID saved into that library from the Outputs page; no byte editorEDID format and rate per plugpreferred format and rate on the four plugs, written to the input
Stills / image librarycapture logos and frames from main or preview, key before saving; frame and logo slotsStills shows the frame store; Capture grabs a source frame, full or a region100-slot library, upload BMP / JPEG / TIFF / GIF / PNG / ICO, 4 frame + 4 logo slots, 4K and dual frames, live captures, link syncStills grid of the library, Capture into it; no upload from the computer, no slot assignmentlibrary up / download, capture, image slots, timers, downscale to capacitylibrary, background and foreground image slotsthe 50-slot library with names and sizes, erase, a capture of any input/output/multiviewer into it (written, unproven on the simulator), and each screen's frame slots with pictures; no upload from the computersix frames and six logos, recorded from an outputPictures: the twelve slots with their sizes; capture with region and keying; delete
Multiviewer / monitoringa preview output, no multiviewer12 widgets (8 on NeXtage), templates, no-overlap editor, 8 layout memories, fit screen, load a layout in Livedrag / resize designer: up to 12 widgets with source and OSD label, grid presets, fullscreen, apply (MLupd), 8 layout memories (MON_MEM)up to six multiviewers, widgets, timers, preview mode, 50 memories, load at startupone multiviewer, audio monitoring, 20 memoriesdrag/resize designer over the usable widgets on the MTVW output, sources from the device's own list, OSD, grid presets, twenty layout memories with recall/save/erase/label; no audio monitoringa preview output, no multiviewer
Soft edge blendingSaphyr onlythe Midra scalar soft-edge model (SE*) is not modelledcovering with a centering pattern, black levels and curve per edgeper-edge editor: click an edge to feather it into its neighbour, set the black levelcovering in grid and free canvasEikos 4K blend modethe blend on each gap of a grid canvas — enable, gamma or Bézier curve, black level — applied with the device’s soft-edge trigger; written on the Pulse simulator, which has no blend to show (Eikos 4K only)
Audiomodes (top layer, breakaway, routing), per-input gain / pan / level, output pan / gain / level / delayoutput volume, balance, delay, mute; per-input levelsno audio processing on LiveCoreDante / embedded matrix, screen audio follow, custom setsrouting, Dante, VU meters, custom sourcesthe audio layer per preset buffer, every routing point (screens, auxiliaries, outputs, multiviewer, line outs, Dante groups) following a layer, its content, a screen or a widget or routed direct, mutes, the ten custom sources channel by channel, level readings, the clock, the quick preset’s audio; Dante subscriptions are read, not mademain level, delay, mute; per-input level and balanceboth outputs’ volume, mute, stereo and delay; the auxiliary; per-input level, balance and audio map; SDI de-embed picks
GPIO and tallyno GPIO on the Midra seriesGPO free or tally (before / after the take) with polarity, GPI free or takeGPIO view (trigger inputs, tally / relay outputs) and a live Tally grid off the device's tally busGPIO / tallyTSL tally protocol; no GPIOthe device's own on-air lists per input are read and shown; never seen populated on the simulator, so unverified
System, network, health, front panelnetwork, temperature alarms, support, erase memories, factory resetidentity, network, temperature and fan, front-panel lock and brightness; no erase or factory resetnetwork / port / protocol, temperature, hardware info, erase, factory reset, auto-calibrate, dashboardsamedashboard: device, firmware, network, power, hardware, cooling, remote access and controlmodel onlyidentity, network, temperature sensors and fans with alarms, front-panel lock and brightness, reboot; no erase or factory resetControl menu: LAN, lock, brightness, standbyidentity, versions, fitted options, network (read only), lock, brightness, T-bar enable, standby and the display device on RS-232
Firmware updatea separate updater applicationupload updater or USBa separate updater application
Backup / restoreno device export in the manualShows: the writable state to a JSON file, diff-based restore that writes only what differs, import / exportexport / import a backup with config, library, logs, snapshots (400 MB)Shows cover the look, memory banks, input and output setup; the image library is not carriedsave / load configuration, import / exportconfiguration slots, export / import, USBthe two on-device configuration slots: back up every module into one under a label, restore (unpack then apply, the device reboots) or erase behind a second tap; export to a file and import from USB are not offered — restore never fired on the simulatorno device export in the manualShows: the writable state to a JSON file, diff-based restore that writes only what differs
Multi-unit linkAdditive Modularity links two 4U units; library syncCOUPLING (34 variables) not surfacedmulti-unit via link cabling and the RC400Tthe Axion2, Orchestra and TRK-800 controllers drive several units
LUTs, HDR, colour processing3D LUT library, CremaTTe LUT, HDR conversion, colour processingLUT libraries, LUT allocation, HDR conversionHDR mode and nits per input plug and output; the conversion and correction LUT libraries named, erased and allocated to inputs; a conversion and a correction LUT picked per plug and per output from what the device offers; no .cube import — the Web RCS uploads the file
AVoIP and streamingNDI, ST 2110, SDVoE, DanteDante (optional card); RTMP streaming out to a network or a platformRTMP: ten destinations with label, URL and key, the picture source, profile and quality, the audio and its pair, start and stop with the device’s status — the simulator never starts a stream; Dante is shown, not configured
Diagnostics and beyond
Every device variable, raw protocolInspector searches, reads and sets any variable; Console shows the wiresamethe same Inspector: get/set any AWJ path, the wire logInspector: every property read so far, get/set any AWJ path as JSON, and the wire logInspector searches, reads and sets any of the 222 variables; Console shows the wire
Verified writeslayer-bank recalls and source drops are read back — the only way to see a Midra refuse a source with no signalsamepreset recalls read the screen back rather than assuming; a wrong platform pick is named by the processor's own identityevery write reads its target back; recalls read the destination twice because the bookkeeping lands late; a master save is refused rather than allowed to overwrite bank slotsthe unit answers every accepted command with the parameters it changed, so the cache is the readback; nothing re-reads on top of that
Control-surface moduleCrestron and AMX modulescompanion-module-openrcs: take / cut, T-bar, memories, freeze, black, on-air tallyCrestron / AMX drivers, third-party protocolsameAMX / Crestron drivers, REST API, RC400Tnot in the openrcs moduleAMX / Crestron drivers, REST API, RC400Tnot in the openrcs moduleCrestron and AMX; the Bitfocus analogway-pls300 module (fire-and-forget, freezes the input after the one asked for)companion-module-openrcs speaks the Midra/LiveCore verbs; no PLS300 actions yet

Sources — Midra: Pulse² user manual, RCS² chapters 6–7 · LiveCore: LiveCore user manual, Web RCS chapter 7 · LivePremier: Aquilon User Manual v6.2, September 2026 · Midra 4K: Midra 4K User Manual V3.2, May 2026 · PLS300: PLS300 user manual, RCS chapter 5 — openrcs’s column is from the Programmer’s Guide and a table-derived fixture, not a unit. The same cells as one table per family, in the repo:docs/COMPARISON.md."Beyond stock" means the stock tool has no equivalent; it does not mean the openrcsversion wins on every axis.

Help wanted

Help test it on real hardware

openrcs is built against device behaviour and a simulator; the most useful thing right now is time on real switchers.

    The protocol reference the framing and every variable, documented

    Watch it running

    openRCS video thumbnail

    Nothing loads from YouTube until you press play.Watch it there instead