Mac in the headset: use the Frame's USB-C network when plugged in; Steam streaming findings

- Plugged into the Mac, the Frame is a USB network device ("Steam Frame",
  usb0 at ~0.9 ms). The tunnel uses it when the Frame's usb0 answers,
  with the usual host key; otherwise the normal path. Interleaved runs:
  content p50 7 vs 10 ms, click to drawn 17 vs 27 ms, scroll p95 23 vs
  31-37 ms. FRAME_MACVIEW_USB=0 turns it off; the card says "over USB-C".
- Bench: --usb, and the route is recorded per run.
- Docs: Steam's own streaming (no SteamVR host on macOS; Remote Play pairs
  but streams games, not windows; test blocked); the Frame's USB network;
  the 2026-09-28 health-check boot-loop recurrence.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
saphidandClaude Opus 5.5 committed 2026-09-28 21:33:31 +10:00
1 parent 1d05f57fbf
commit 4fae62ba14
10 files changed
+2853 -6

No files matched your search

+4 -1
View File
@@ -377,6 +377,7 @@ def run_scenario(args, scenario, agent_port, token, frame_ssh):
tunnel_port = relay.port
tunnel_ssh = list(frame_ssh[:-1]) + args.ssh_opt
mv = LabView(tunnel_ssh, ssh_runner(frame_ssh), frame_ssh[-1], agent_port, token, tunnel_port)
mv.prefer_usb = args.usb # otherwise the path is --host's (or ssh's default)
if args.browser_flag is not None:
mv.browser_flags = [f for f in args.browser_flag if f]
chrome = None
@@ -456,6 +457,7 @@ def run_scenario(args, scenario, agent_port, token, frame_ssh):
result["show_s"] = show_s
result["panel"] = shown.get("panel")
result["src"] = src
result["route"] = mv.route
return result
finally:
try:
@@ -677,6 +679,7 @@ def add_run_args(r):
r.add_argument("--buffer", type=float, default=250, help="bottleneck queue, ms at the current rate")
r.add_argument("--frame", default="frame", help="ssh host of the Frame")
r.add_argument("--host", default="", help="connect to this address instead (e.g. the Frame's LAN IP)")
r.add_argument("--usb", action="store_true", help="use the Frame's USB-C network when plugged in, as Frame Control does")
r.add_argument("--ssh-opt", action="append", default=[], help="extra ssh option for the tunnel, e.g. -oIPQoS=ef")
r.add_argument("--browser-flag", action="append", default=None,
help="Chromium flag for the viewer (replaces Frame Control's defaults; '' for none)")
@@ -742,7 +745,7 @@ def document(args, frame_ssh, results, **extra):
return {
"label": args.label or args.cmd, "date": datetime.datetime.now().isoformat(timespec="seconds"), "commit": commit,
"config": {"quality": args.quality, "mode": args.mode, "net": args.net or "none", "delay_ms": args.delay,
"buffer_ms": args.buffer, "host": args.host or args.frame, "ssh_opts": args.ssh_opt,
"buffer_ms": args.buffer, "host": args.host or args.frame, "usb": args.usb, "ssh_opts": args.ssh_opt,
"encoder": os.environ.get("FRAME_MAC_VIEW_ENCODER", ""), "duration_s": args.duration,
"browser_flags": args.browser_flag if args.browser_flag is not None else frame_macview.BROWSER_FLAGS},
"frame_build": build.strip().partition("=")[2], "mac": platform.mac_ver()[0], "headset": standby[-40:],