Remove the rtpMIDI-restart fix for the Lighting PC MIDI

Tested live: restarting rtpMIDIService brought the Lighting PC's Bonjour
advert back but dropped it from the NA Ingest and NA Tracks sessions, and it
did not rejoin them. macOS only exposes the default network session to
scripts, not NA Ingest's named one, so there is no safe automatic reconnect.
MIDI now has no hold fix; the README says how to reconnect by hand.

ssh fixes run with LogLevel=ERROR so warnings stay out of the log.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-08 15:38:16 -04:00
co-authored by Claude Opus 5.5
parent d6f54685bc
commit 340d28263a
4 changed files with 6 additions and 7 deletions
+1 -1
View File
@@ -50,7 +50,7 @@ Row 0 holds the group buttons. Each one shows the first problem in its group, pl
| APPS: VISTA SILENT | starts Vista on the Lighting PC if it is not running. A running Vista is never closed. | | APPS: VISTA SILENT | starts Vista on the Lighting PC if it is not running. A running Vista is never closed. |
| ARENA | starts Resolume Arena on the Lighting PC if it is not running, then reconnects Companion | | ARENA | starts Resolume Arena on the Lighting PC if it is not running, then reconnects Companion |
| OBS | starts OBS on the LiveStream PC if it is not running, then reconnects Companion. If the PC is off, it is woken (Wake-on-LAN) and the button shows WAKING PC; hold again once someone has logged in. | | OBS | starts OBS on the LiveStream PC if it is not running, then reconnects Companion. If the PC is off, it is woken (Wake-on-LAN) and the button shows WAKING PC; hold again once someone has logged in. |
| MIDI: LIGHT PC | restarts rtpMIDI on the Lighting PC; it reconnects to NA Ingest, NA ProP and NA Tracks by itself. Lighting MIDI drops for a few seconds. | | MIDI: LIGHT PC | no automatic fix. Restarting rtpMIDI drops the PC from every MIDI session and it does not rejoin them, and macOS gives scripts no way to reconnect a named session. Reconnect it by hand in rtpMIDI (session "Lighting PC" → Directory → Connect). |
| DANTE: PROP MAC / TRACKS / TRANSL / INGEST GONE | starts Dante Virtual Soundcard's engine on that Mac (`remote-access/mac-dvs-helper.sh`) | | DANTE: PROP MAC / TRACKS / TRANSL / INGEST GONE | starts Dante Virtual Soundcard's engine on that Mac (`remote-access/mac-dvs-helper.sh`) |
| DANTE: any device powered by its switch port (today the four Studio B boxes) | power-cycles the port it is on **now**, found by its MAC on the Netgear Dante switches | | DANTE: any device powered by its switch port (today the four Studio B boxes) | power-cycles the port it is on **now**, found by its MAC on the Netgear Dante switches |
| DANTE: any other device GONE | restarts Companion's Dante module (hardware: if still gone, it is off or unplugged) | | DANTE: any other device GONE | restarts Companion's Dante module (hardware: if still gone, it is off or unplugged) |
+2 -4
View File
@@ -60,8 +60,6 @@
"run": "tasklist /NH /FI \"IMAGENAME eq Arena.exe\" | find /I \"Arena.exe\" >nul || schtasks /Run /TN \"\\StatusPanel\\Start Arena\"" }, "run": "tasklist /NH /FI \"IMAGENAME eq Arena.exe\" | find /I \"Arena.exe\" >nul || schtasks /Run /TN \"\\StatusPanel\\Start Arena\"" },
"vista": { "host": "lighting", "short": "VISTA", "label": "start Vista on the Lighting PC if it is not running (a running Vista is never closed)", "vista": { "host": "lighting", "short": "VISTA", "label": "start Vista on the Lighting PC if it is not running (a running Vista is never closed)",
"run": "tasklist /NH /FI \"IMAGENAME eq Vista.exe\" | find /I \"Vista.exe\" >nul || schtasks /Run /TN \"\\StatusPanel\\Start Vista\"" }, "run": "tasklist /NH /FI \"IMAGENAME eq Vista.exe\" | find /I \"Vista.exe\" >nul || schtasks /Run /TN \"\\StatusPanel\\Start Vista\"" },
"rtpmidi": { "host": "lighting", "short": "RTPMIDI", "label": "restart rtpMIDI on the Lighting PC: it reconnects to NA Ingest, NA ProP and NA Tracks (MIDI drops for a few seconds)",
"run": "powershell -NoProfile -NonInteractive -Command \"Restart-Service rtpMIDIService -Force\"" },
"proddash": { "kind": "local", "short": "PRODDASH", "label": "start ProdDash", "run": "open /Applications/ProdDash.app" }, "proddash": { "kind": "local", "short": "PRODDASH", "label": "start ProdDash", "run": "open /Applications/ProdDash.app" },
"hyperdeck": { "kind": "hyperdeck", "short": "HYPERDECK", "label": "reconnect Companion to the HyperDeck, or reboot the deck only if it is hung" } "hyperdeck": { "kind": "hyperdeck", "short": "HYPERDECK", "label": "reconnect Companion to the HyperDeck, or reboot the deck only if it is hung" }
}, },
@@ -98,9 +96,9 @@
"NA-Tracks": "TRACKS", "FOH-SuperRack-LiveBox": "SUPERRACK", "NA-ProPresenter-Mac": "PROP MAC" } } "NA-Tracks": "TRACKS", "FOH-SuperRack-LiveBox": "SUPERRACK", "NA-ProPresenter-Mac": "PROP MAC" } }
] }, ] },
{ "id": "midi", "label": "MIDI", "pos": [2, 3], "checks": [ { "id": "midi", "label": "MIDI", "pos": [2, 3], "checks": [
{ "type": "midi_peer", "session": "NA Ingest", "peer": "Lighting PC", "tag": "LIGHT PC", "fix": "rtpmidi" }, { "type": "midi_peer", "session": "NA Ingest", "peer": "Lighting PC", "tag": "LIGHT PC" },
{ "type": "midi_peer", "session": "NA Ingest", "peer": "SuperRack-LiveBox", "tag": "SUPERRACK" }, { "type": "midi_peer", "session": "NA Ingest", "peer": "SuperRack-LiveBox", "tag": "SUPERRACK" },
{ "type": "mdns", "instance": "Lighting PC", "name": "LIGHT PC MIDI", "fix": "rtpmidi" }, { "type": "mdns", "instance": "Lighting PC", "name": "LIGHT PC MIDI" },
{ "type": "mdns", "instance": "NA Tracks", "name": "TRACKS MIDI" }, { "type": "mdns", "instance": "NA Tracks", "name": "TRACKS MIDI" },
{ "type": "midi_rx", "source": "Network NA Ingest Listen", "name": "TRACKS IN" } { "type": "midi_rx", "source": "Network NA Ingest Listen", "name": "TRACKS IN" }
] }, ] },
+1 -1
View File
@@ -1138,7 +1138,7 @@ def poll_midi(snap, cfg):
def ssh_cmd(cfg, host): def ssh_cmd(cfg, host):
"""ssh to a machine in config "hosts", with NA Ingest's status-panel key; one shared connection per host.""" """ssh to a machine in config "hosts", with NA Ingest's status-panel key; one shared connection per host."""
return ["/usr/bin/ssh", "-i", os.path.expanduser(cfg.get("ssh_key", "~/.ssh/id_status_panel")), return ["/usr/bin/ssh", "-i", os.path.expanduser(cfg.get("ssh_key", "~/.ssh/id_status_panel")),
"-o", "BatchMode=yes", "-o", "ConnectTimeout=5", "-o", "IdentitiesOnly=yes", "-o", "BatchMode=yes", "-o", "ConnectTimeout=5", "-o", "IdentitiesOnly=yes", "-o", "LogLevel=ERROR",
"-o", "StrictHostKeyChecking=accept-new", "-o", "ControlMaster=auto", "-o", "StrictHostKeyChecking=accept-new", "-o", "ControlMaster=auto",
"-o", "ControlPath=/tmp/status-panel-ssh-%C", "-o", "ControlPersist=120", cfg["hosts"][host]["ssh"]] "-o", "ControlPath=/tmp/status-panel-ssh-%C", "-o", "ControlPersist=120", cfg["hosts"][host]["ssh"]]
+2 -1
View File
@@ -504,7 +504,8 @@ class TestFixes(unittest.TestCase):
self.assertEqual(self.plan("obs"), [("fix", "obs")]) self.assertEqual(self.plan("obs"), [("fix", "obs")])
self.assertEqual(self.plan("arena"), [("fix", "arena")]) self.assertEqual(self.plan("arena"), [("fix", "arena")])
self.assertEqual(self.plan("apps"), [("fix", "vista")]) self.assertEqual(self.plan("apps"), [("fix", "vista")])
self.assertEqual(self.plan("midi"), [("fix", "rtpmidi")]) # two checks, one restart # Restarting rtpMIDI drops every session and it does not rejoin them (2026-10-08): no auto fix.
self.assertEqual(self.plan("midi"), [])
for fix_id in ("obs", "arena", "vista"): # never closes a running app for fix_id in ("obs", "arena", "vista"): # never closes a running app
self.assertTrue(CONFIG["fixes"][fix_id]["run"].startswith("tasklist "), fix_id) self.assertTrue(CONFIG["fixes"][fix_id]["run"].startswith("tasklist "), fix_id)