A Home Assistant dashboard on an e-paper panel usually means rebuilding it in ESPHome's display lambdas or rendering screenshots on a server. ESPHome now has a third route. A new vnc component, written by Petar Petrov and merged into the development branch on 22 October 2026, connects to a VNC server and draws its screen on the device's display. A browser runs on another machine at the size of the panel, and the ESP32 only receives the picture. The component and its documentation are in the dev and next branches, so they should arrive with ESPHome 2026.11.

The basic setup

The minimal configuration is a host address:

vnc:
  host: 192.168.1.20

The port defaults to 5900. The client connects at boot and reconnects on its own, waiting 5 seconds after a failure and doubling that up to 60 seconds. The picture is not scaled, so the server's screen has to match the display size after rotation; a larger server shows only its top-left part. The component draws every pixel, which means the display cannot have its own lambda or pages and cannot be shared with LVGL.

The author tested it on an M5Paper (IT8951 controller, 540x960 in portrait) against the Home Assistant VNC Web Browser add-on, which runs TightVNC. The documentation also lists E-Paper SPI and LCD drivers such as ILI9xxx. The mipi_spi, mipi_rgb and mipi_dsi drivers are not supported yet, and the older Waveshare E-Paper driver should be swapped for E-Paper SPI.

Fewer refreshes on e-paper

The display refreshes only after the picture has been still for update_delay (200 ms by default), or at the latest after max_update_delay (1 s). An animation therefore ends as one refresh showing its final frame.

A second pull request, merged the same day, adds the Hextile encoding. With Raw, a full screen is about 1 MB, which makes the first frame slow; Hextile brings a dashboard down to tens of kilobytes. The client also keeps a fingerprint of each 16x16 tile and skips tiles the server sends again unchanged. TightVNC resends the whole window whenever Chromium repaints, so without this an e-paper panel would refresh for nothing. On a 960x540 display the table takes about 8 KB. The same change adds a vnc.refresh action and a pixel_format option, where rgb565 shows all 16 grey levels of an e-paper panel and rgb332 halves the data but shows about 8.

The documentation advises against content that never stops changing, such as clocks with seconds, spinners and moving backgrounds. The Home Assistant login page has one, so the device should show a logged-in dashboard.

Limits of the first version

This version is view-only and works only with servers that need no password. Password authentication and touchscreen input are open as separate pull requests. The documentation also warns that VNC sends the picture unencrypted, so it belongs on a trusted network.