Skip to content

vnc: built-in VNC server, and screen, pointer and keyboard commands - #352

Merged
techomancer merged 1 commit into
mainfrom
vnc
Oct 29, 2026
Merged

techomancer merged 1 commit into
mainfrom
vnc

Conversation

@techomancer

Copy link
Copy Markdown
Owner

An optional RFB 3.8 server in the iris binary (--vnc [ADDR], [vnc] listen), for every board, windowed or under --ci. It reads only the frame each board has already composed and finds damage by diffing 64x64 tiles, so no drawing code is touched. Raw and ZRLE, DesktopSize and the QEMU extended key event; no authentication, loopback by default. While a viewer is connected Newport uses the software compositor.

The guest mouse is relative and X accelerates it, so pointer moves are steered in a closed loop on each board's hardware cursor (VC2, VC1, VC3, GBE), with hotspots learned by pinning the pointer in a corner.

The same machinery backs new monitor commands (screen, ptr, key) and MCP tools (screenshot, click, drag, type_text, press_key, wait_screen), and iris-ci screenshot now works on every board.

Also:

  • ip22: a read from an empty GIO slot is a bus error once the PROM sets CPUCTRL1.ABORT_EN, so the PROM no longer takes it for a Newport and polls it 200,000 times on headless boots.
  • o2: the GBE cursor position is 12-bit signed; the cursor no longer vanishes at the top and left edges.

An optional RFB 3.8 server in the iris binary (--vnc [ADDR], [vnc]
listen), for every board, windowed or under --ci. It reads only the frame
each board has already composed and finds damage by diffing 64x64 tiles,
so no drawing code is touched. Raw and ZRLE, DesktopSize and the QEMU
extended key event; no authentication, loopback by default. While a
viewer is connected Newport uses the software compositor.

The guest mouse is relative and X accelerates it, so pointer moves are
steered in a closed loop on each board's hardware cursor (VC2, VC1, VC3,
GBE), with hotspots learned by pinning the pointer in a corner.

The same machinery backs new monitor commands (screen, ptr, key) and MCP
tools (screenshot, click, drag, type_text, press_key, wait_screen), and
iris-ci screenshot now works on every board.

Also:
- ip22: a read from an empty GIO slot is a bus error once the PROM sets
  CPUCTRL1.ABORT_EN, so the PROM no longer takes it for a Newport and
  polls it 200,000 times on headless boots.
- o2: the GBE cursor position is 12-bit signed; the cursor no longer
  vanishes at the top and left edges.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@techomancer
techomancer merged commit 13d4cc5 into main Oct 29, 2026
6 of 7 checks passed
@techomancer
techomancer deleted the vnc branch October 29, 2026 15:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant