Embedded Linux Support
LVGL runs as a native Linux application and supports a wide range of display backends, input systems, rendering accelerators, and Linux distributions out of the box.
Overview
LVGL supports Linux as a first-class target, running as a standard Linux application without requiring an RTOS. It integrates with the display and input infrastructure available on your platform through a modular set of drivers and rendering backends, giving you the flexibility to target anything from a minimal framebuffer setup to a fully GPU-accelerated Wayland compositor.
The recommended way to get started is the lv_port_linux reference project. It provides a ready-to-build CMake project with the most common drivers pre-configured, and is the fastest path to a running LVGL application on Linux hardware.
Choosing a Display Driver
Pick the driver from what your system already has, not from what sounds fastest. On Linux there is usually exactly one right answer.
| What you have | Use | Why |
|---|---|---|
| A modern kernel with DRM/KMS, no compositor | DRM | The production default. Real modesetting, and an EGL backend when there is a GPU. |
Only /dev/fb, no DRM | fbdev | Simplest possible path. No libraries, no GPU, no modesetting. |
| A Wayland compositor already running | Wayland | SHM everywhere, EGL for the GPU, G2D on NXP i.MX. |
| An X11 desktop, for development | X11 | Window on your dev machine. CPU-only, no rotation. |
| A dev machine, want a window fast | SDL or GLFW | Cross-platform. GLFW brings an OpenGL context with it. |
| An OpenGL context you already own | OpenGL Driver | Renders into a texture for embedding in your own GL application. |
| No display at all — CI, thumbnails, servers | EGL pbuffer | The only way to get GPU-rendered frames with no display server. |
Then decide whether you want GPU rendering on top: see Rendering acceleration below. Enabling a driver's EGL backend without a GPU draw unit is valid — LVGL renders in software and uses OpenGL only to present the result.
What LVGL supports
Display and input drivers
LVGL provides drivers for the most common Linux display and input interfaces:
- Framebuffer (fbdev): the simplest option, works on virtually any Linux system with no compositor required
- DRM/KMS: modern direct rendering, recommended for production embedded targets
- Wayland: suitable for systems running a Wayland compositor, with SHM, EGL, and G2D backends. Also useful for development
- X11: useful for development and desktop simulation
- EGL: the OpenGL ES layer under the DRM, Wayland and SDL hardware-accelerated backends, and the way to render off-screen with no display server
- evdev / libinput: touchscreen, mouse, and keyboard input
- GLFW: cross-platform windowing, primarily for development
Each driver page carries a Support table listing what it can and cannot do — rotation, runtime resolution and color format changes, multiple displays, hardware acceleration and input. The driver index collects the highlights into one comparison table.
Rendering acceleration
Beyond the CPU-based software renderer, LVGL supports GPU-accelerated draw units on Linux:
- NanoVG (
draw_nanovg): GPU-accelerated vector graphics including 3D/glTF support via OpenGL; the recommended default for most use cases, supports all LVGL features - OpenGL (
draw_opengl): direct OpenGL ES rendering, including 3D/glTF support - SDL (
draw_sdl): SDL2-based rendering
A draw unit needs a driver that provides an OpenGL context, see OpenGL Overview for which drivers do.
3D and glTF content requires one of the GPU draw units; the software renderer cannot draw it at all.
OS and distribution support
LVGL works with standard Linux distributions and embedded build systems. Dedicated integration guides are available for:
- Ubuntu: prebuilt LVGL packages, installable with
apt - Buildroot: minimal embedded Linux images
- Yocto: layer-based embedded Linux build system
- Torizon: container-based embedded Linux platform by Toradex
Building and dependencies
Enabling a driver's config symbol is also what pulls its libraries into the build — LVGL resolves them with
find_package, then pkg-config, then by fetching sources where that is possible. See
Dependency Management rather than installing packages by hand.
Multimedia
LVGL supports hardware-accelerated video playback on Linux through:
Sections
Explore topics within this section.
Last updated on