Woodland X11 brings Linux applications to an ESP32-S3 display over Wi-Fi

Woodland X11 brings Linux applications to an ESP32-S3 display over Wi-Fi

An ESP32-S3 with PSRAM can display windows from xclock, xcalc and xeyes without running Linux on the board itself. The experimental Woodland X11 project, developed by Sergey Zorin, implements an X Window System server on the microcontroller and receives connections over Wi-Fi from applications running on a Linux computer. The touchscreen also acts as a pointing device.

The demonstration has been tested on a 4.3-inch Elecrow CrowPanel Advance with a resolution of 800 × 480. In the video, the programs appear under the Motif Window Manager (mwm), and their windows respond to touch on the panel. This is not a display that simply mirrors a remote image: the board implements the X11 protocol needed for Linux clients to connect to it as a graphics server.

An X11 server implemented for a microcontroller

Zorin has not ported Xorg to the ESP32-S3 or built a VNC-style viewer. According to the project description, he wrote an implementation of the X11 core protocol based on its specification and without extensions. The firmware is based on ESP-IDF and uses LovyanGFX to control the display; this combination lets it manage memory and rendering directly.

The distinction matters for understanding what the board does. The programs are not compiled or run on the microcontroller: they continue to run on a Linux host system. That computer starts the X11 clients; the board receives the communication and displays the windows. The ESP32-S3 provides the graphics server and touch surface, not a complete Linux environment.

The connection can be wireless, over Wi-Fi, or via SPI from a Raspberry Pi. In both cases, the display acts as the target for X11 applications. Touch interaction completes the loop: the panel not only displays the content, but also sends the corresponding input events so the applications can respond.

Real applications on the touchscreen

The demonstration with xclock, xcalc and xeyes shows that Woodland X11 can already work with real graphical programs and mwm. Their windows are drawn on the panel and respond to touch input. It is therefore not a sample interface drawn solely by the firmware, although protocol support is not yet complete.

This distinction defines the current state of the work: the system has moved beyond a purely visual test, but remains experimental. Compatibility depends on the X11 operations implemented, and the developer had to test applications and the window manager to identify missing operations. The published material does not provide a complete list of these gaps or present the project as a finished implementation.

The tested setup combines the ESP32-S3 with a 4.3-inch display, 800 × 480 resolution and PSRAM. The specific board is the Elecrow CrowPanel Advance. The description does not specify the cost of the setup, power consumption, refresh rate or performance conditions; the demonstration focuses on the connection between the embedded server, Linux clients and touch interaction.

Memory, drawing, timing and touch events

According to Zorin, the most demanding problems have been managing X11 clients, resources and drawing operations within the memory available on a microcontroller. On top of that, real applications and mwm must be made to work while determining which parts of the protocol are missing. In a resource-constrained system, the server must coordinate all this work without relying on the infrastructure of a desktop graphics server.

The display presents another challenge: maintaining stable LCD timing and avoiding unnecessary redraws. The firmware must not only receive messages from clients, but also convert their drawing operations into panel updates. At the same time, it must translate touches into X11 input events and remain responsive enough for the interface to be usable.

The SPI connection to Raspberry Pi also prompted a review of how activity is detected. The initial strategy relied on constant polling; replacing that polling with a GPIO interrupt substantially reduced idle CPU usage on the Raspberry Pi. The description does not quantify the reduction, but it does identify the change in mechanism and the observed effect on the host.

An experiment with Apache-2.0 code

Woodland X11 is still experimental, and its protocol compatibility is incomplete. Even so, it already runs real X11 applications from Linux and displays them on a screen connected to an ESP32-S3. The code is released under the Apache-2.0 license, and the developer is preparing a first release. The project has its own website, woodlandx11.dev.

The proposal offers an alternative to integrating a complete Linux computer into a small display or using it as a remote image receiver. Rather than moving application execution to the microcontroller, Woodland X11 leaves that task to the host computer and brings the server that displays their windows to the ESP32-S3. One suggested practical use is a wireless status or control display for a Linux computer, although the project is still being tested.

For now, the described tests use the CrowPanel Advance and clients such as xclock, xcalc and xeyes under mwm. The first public release is in preparation; no release date has been announced. It also remains to be seen which X11 operations will be added to broaden compatibility beyond the applications shown.

Source: CircuitDigest