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.

Edit on GitHub

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 haveUseWhy
A modern kernel with DRM/KMS, no compositorDRMThe production default. Real modesetting, and an EGL backend when there is a GPU.
Only /dev/fb, no DRMfbdevSimplest possible path. No libraries, no GPU, no modesetting.
A Wayland compositor already runningWaylandSHM everywhere, EGL for the GPU, G2D on NXP i.MX.
An X11 desktop, for developmentX11Window on your dev machine. CPU-only, no rotation.
A dev machine, want a window fastSDL or GLFWCross-platform. GLFW brings an OpenGL context with it.
An OpenGL context you already ownOpenGL DriverRenders into a texture for embedding in your own GL application.
No display at all — CI, thumbnails, serversEGL pbufferThe 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.

Input is separate

Only the Wayland, X11, SDL and GLFW drivers come with input. With DRM or fbdev you pair a display driver with an input driver yourself — evdev for the simple case, libinput when you need full keyboard layouts or device quirks.

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:

  • FFmpeg — video decoding and playback
  • GStreamer — pipeline-based multimedia framework

Pages

Individual pages in this section.

Last updated on

On this page