Summary of TINY THIN CLIENT IS SMALL BUT COMPATIBLE
This article analyzes a compact VNC thin client project by moononournation. Using an ESP32 microcontroller with Arduino software, the device implements the RFB protocol for remote desktop access. The creator optimized performance for an 800×480 display by switching to a 16-bit parallel interface and improving compression, overcoming the low frame rates of original code. While the current I2C keyboard is small, it can be easily modified or replaced.
Parts used in the Tiny Thin Client:
- ESP32 microcontroller
- Arduino software
- VNC RFB protocol implementation
- 800×480 display
- 16-bit parallel interface
- I2C keyboard
We were impressed with [moononournation’s] tiny thin client project. It claims to use an Arduino, but as you might guess it is using the Arduino software along with a network-enabled microcontroller like an ESP32. The impressive part is that it is standards-compliant and implements VNC’s RFB protocol.

The original coding for RFB on Arduino is from [Links2004] and armed with that, the thin client is probably easier to create than you would guess. However, this project wanted to use a larger screen and found that it led to certain problems. In particular, the original code had a 320×240 display. This project was to use an 800×480 display, but with the limits on the ESP32, the frame rate possible would be under 7 frames per second. The answer was to combine a 16-bit parallel interface with better compression back to the VNC server.
The little keyboard is probably not very practical, but it is compact. That would be another easy thing to modify. Currently, the keyboard uses I2C, but it would be straightforward to change things up. This would be a worthy base to build a bigger project on top. A 3D printed enclosure would be nice, too.
We’ve seen a number of projects built around commercial thin clients. Some from defunct businesses are good sources for obscure parts, too.
Source: TINY THIN CLIENT IS SMALL BUT COMPATIBLE
- What microcontroller does the project use?
The project uses an ESP32 network-enabled microcontroller. - How did the author solve the low frame rate issue?
The author combined a 16-bit parallel interface with better compression back to the VNC server. - Does the project support standard VNC protocols?
Yes, it is standards-compliant and implements VNC's RFB protocol. - Can the keyboard interface be changed?
Yes, the I2C keyboard setup would be straightforward to change. - What was the screen resolution limit of the original code?
The original code had a 320×240 display limit. - Is a 3D printed enclosure required for the project?
No, a 3D printed enclosure is suggested as a nice addition but not required. - What software platform powers the device?
The project uses the Arduino software along with the ESP32.
