LVGL and Arm just became official partners! 🎉 More integration with Helium, docs and benchmarks are coming soon!

Features

Make UI development easier with 30+ widgets, anti-aliasing, animations, multi language, Arabic and Persian text, encoder and keypad usage, etc.

Portability

It’s open-source

LVGL is fully open source which has several advantages. First, it gives you control over the library because you can not only see, modify, compile and debug the underlying source code but you can fully obtain it. Once you download it’s yours. This independence from a single provider is a huge value. Besides that open-source encourages collaboration and sharing of knowledge. Developers worldwide contribute to improving the software, making it more reliable and feature-rich to solve real-life problems.

It’s free

LVGL is distributed under the MIT license which allows users to freely use, modify, and distribute the software without imposing complicated restrictions or limitations. It provides flexibility for developers and businesses to incorporate the software into their projects, even for commercial purposes, while maintaining attribution to the original authors.

Minimal requirements

LVGL runs on any modern MCU or MPU.

Architecture: 16, 32 or 64 bit

Clock speed: > 64MHz

RAM:
4kB + 150byte / widget (~48kB for a UI with a few screens)

Flash:
~100kB for LVGL (depends on the enabled features)

Draw buffer: > 1/10 screen size buffer for rendering

Frame buffer:
at least 1 frame buffer in a display controller, internal- or external RAM

Compiler: C99 or higher

Build system:
LVGL has no external dependencies. Just copy it into your project and compile it with the other files of your project

UI Features

Drivers

Displays

To make your display work with LVGL all you need is a function which can copy the rendered image to the display. If you have it you can integrate LVGL in 10 minutes.

You can choose from multiple buffering strategies including partial refreshing, double buffering, and many others.

Other features like rendering on transparent background to create OSD menus, multiple display support, or custom color format handling makes LVGL really versatile and powerful.

Input devices

Input devices can be also integrated via a single “read callback” that LVGL will call to get the state of the given input device.

Beside touch pad and mouse the LVGL UIs can be used with keypad, keyboard (“Tab navigation”) or even a single rotary encoder. External buttons can be integrated to click widgets on the UI directly.