emVNC-Server — Virtual Network Computing for embedded systems
Access and interact with any embedded target device via USB or TCP/IP.
Overview
emVNC-Server (Virtual Network Computing) makes it possible to see the display of, and operate, an embedded system via USB (using SEGGER's emUSB-Device), TCP/IP or any other socket-like transport layer.
emVNC was designed specifically for embedded systems. It provides both the server module for the embedded system and the client application for computers. The PC-side application is multi-platform, for Linux, macOS and Windows, and available for download free of charge.
Key features
- Enables remote and virtual displays even for headless systems
- Supports any communication channel (USB, TCP/IP and other socket-like interfaces)
- VNC/RFB server implementation designed especially for embedded systems
- Very low memory footprint requirement
- Flexible integration with any graphics and communication libraries, such as emWin
- Works with any physical or virtual display
- Standard protocol features for user authentication and reduced network throughput
- Free VNC Client with VNC over USB support for Windows, Linux, and macOS available
- No extra hardware required
Virtual display
For an embedded system that has a display, this display can be mirrored on the remote computer. For an embedded system without a display, the virtual display content can be shown. It can even be used as a console/terminal for text only, if desired.
Connection
VNC over anything
Due to its abstract programming interface, the VNC protocol of the emVNC-Server can be transferred via any socket-like transport layer. emVNC supports TCP/IP using SEGGER's emNet and VNC over USB using SEGGER's emUSB-Device, other transport protocols can be easily added.
Connection via USB
Being able to connect via USB is very cost effective and opens a vast array of options. And since USB is already widely used, emVNC can be implemented very easily just by plugging into an existing interface.
There is no extra hardware cost and very little memory is required - in flash and RAM - meaning emVNC can even be used in small embedded systems with limited memory.
RFB
The connection is established via the standard Remote Framebuffer Protocol (RFB), which also enables the use of other VNC clients on devices such as PCs, tablets or smartphones.
emVNC can also be used in parallel with existing functionality.
GUI-independent
The emVNC-Server is GUI-independent. It works seamlessly with SEGGER’s emUSB Device plus a graphics library, such as SEGGER’s emWin. This makes it uniquely suitable for use on embedded devices as there are no limitations on the display hardware.
Use with emWin is highly recommended for high performance and resource efficiency.
emVNC comes with examples for use with and without emWin.
Supported clients
The emVNC-Server supports all standard VNC clients. This protocol implementation has been tested so far to work with the following VNC clients:
- SEGGER VNC Client
- gvncviewer
- SSVNC
- Remmina
- RealVNC
- TightVNC
User authentication
The emVNC-Server provides password protection. Once predefined, users can access the target device by simply entering this password.
Use case
Remote support for maintenance services
VNC connections are mainly used in cases of remote maintenance. This allows adjustment and maintenance of, for example, heating systems without the need to check the display or control the system at the customer's site. With emVNC, it is possible to integrate the emVNC-Server module into the firmware of the heating system. This ensures that the radiator can be controlled both via its display and via the network.
In the case of a malfunction report, for instance, it is possible to access the radiator via the network on which it resides, to read out log files and to fix errors remotely without the need to send maintenance workers out to the customer.
Setup display for headless devices such as a printer
VNC over USB could be used to create a “headless” printer. In many cases, the display of a printer is used once, to connect to wifi, and then never again. From then on, wifi is used to send information to the printer and to receive information from the scanner. The display is superfluous.
By using VNC over USB, a simple, cost-efficient USB interface could replace the printer display completely.
The first time the printer is used, the connection to the computer (or phone or tablet etc.) is established via USB. Once the wifi setup is complete all interaction can be remote.
Removing the physical display would simplify the design and reduce cost while also making interaction friendlier and more convenient.
System requirements
- Multi-tasking: The VNC Server needs to run as a separate thread. Therefore a multi-tasking system is required to use the emVNC-Server. We suggest embOS.
- When using TCP/IP as the transfer method an IP stack like emNet is required.
- When using USB as the transfer method a USB device software like emUSB-Device is required.
Memory footprint
RAM usage starts below 400 bytes
The memory consumption of emVNC-Server itself in RAM is below 400 bytes. The total RAM usage depends significantly on the size of the frame buffer. The frame buffer itself depends on the colour depth and size in pixels. If a graphical user interface software such as emWin is used, emVNC can directly access the frame buffer of the GUI software.
Memory consumption in detail
The following table shows the approximate ROM and RAM requirements of emVNC:
Component | ROM | RAM | Notes |
---|---|---|---|
emVNC-Server | 6.3 KByte | 0.3 KByte | + transfer buffer size (the size of the transfer buffer is user-configurable and can be as low as 64 bytes) + size of the USB device software |
Additionally a frame buffer is required to hold the virtual display, this depends entirely on the color configuration and the size of the virtual display.
The calculation is as follows: <bits per pixel> * <virtual display width> * <virtual display height> / 8.
For example for a 320x240 display with 32 bits per pixel you need 320 * 240 * 32 / 8 = 307200 bytes (300 KByte)
For a monochrome display of the same size you need 320 * 240 * 1 / 8 = 9600 bytes (9.3 KByte)
For a minimal configuration with a monochrome display of size 100x32 you need as little as 100 * 32 * 1 / 8 = 400 bytes.
When using a graphical library (like emWin), the graphical library normally already provides a frame buffer which can be used by emVNC.
Licensing
emVNC is available under various Embedded Software License models and delivered in source code packages. With a wide range of licensing options, emVNC can fulfill commercial requirements as well as technical requirements. All licenses are one-time payments. emVNC is royalty-free and not subscription-based. This makes the software a part of the equipment expenses, keeping the costs static.
The emVNC licenses include:
- 6 months of updates and support by SEGGER's Embedded Experts.