Kivy – Modern touch UIs with Python
Create high-performance, multi-touch capable user interfaces directly in Python — without the C++ overhead. With our Ezpire module for Kivy, you take full advantage of the hardware acceleration on our i.MX 8M Plus platforms while comfortably writing your application logic in Python. Save yourself the tedious configuration of display drivers and graphics stacks: We provide a ready-to-run demo implementation and design template on the i.MX 8M Plus that perfectly combines hardware acceleration and touch support out of the box.
What is Kivy?
Kivy is an open-source Python framework for developing multi-touch applications. It is ideally suited for embedded systems because it does not strictly require a heavyweight windowing system (like X11 or Wayland), but can instead render directly to the framebuffer via OpenGL ES 2.0. This enables a smooth, GPU-accelerated UI with minimal resource consumption and maximum design freedom ("Natural User Interfaces") — controlled entirely by simple Python code.
What We Deliver: Python GUI Out of the Box
With Ezpire, we remove the hurdle of bridging Python with hardware acceleration. Our Kivy support includes:
Pre-configured Yocto Image: Start immediately with an image where Python 3, Kivy, and all necessary graphics drivers (GLES, DRM/KMS) are already integrated.
Hardware Acceleration Enabled: We ensure that Kivy utilizes the i.MX 8M Plus GPU (Vivante) instead of burdening the CPU.
Ready-to-Run Demo: Our phytec-kivy-demo image showcases how touch input, widgets, and performance optimization work on our hardware, giving you a rapid start for your project.
Comprehensive Integration Guide: Our documentation guides you step-by-step: from flashing the image and clicking your first "Hello World" button, all the way to building your own Yocto layer using meta-kivy.
More technical details (Expandable)
We didn't just install Kivy; we optimized it for industrial use on the i.MX 8M Plus.
We use and maintain Yocto recipes that seamlessly integrate Kivy into our BSP. We rely on meta-kivy and extend it with PHYTEC-specific adaptations in meta-phytec. In the python3-kivy_%.bbappend recipe, we ensure that the correct EGL and GLES libraries of the i.MX driver are linked so that hardware acceleration successfully takes effect.
On our images, Kivy runs by default in the high-performance EGLFS mode (or directly on DRM/KMS), completely without the overhead of a desktop manager. This enables faster boot times, lower RAM consumption, and direct GPU access. Additionally, we have pre-configured the environment variables (KIVY_BCM_DISPMANX_ID, KIVY_GL_BACKEND) so that multi-touch events from our capacitive displays (phyCAM/Display Kits) are correctly passed through to the Python app.
Our demo application on GitHub is more than just a playground; it serves as a solid architectural template. It:
Demonstrates a clean separation of UI (KV Language) and logic (Python).
Shows how to handle screen managers for multi-page UIs.
Serves as a benchmark to verify that your toolchain is set up correctly.
Recommended Hardware
For Python-based GUIs with Kivy, we recommend powerful platforms with a dedicated GPU, such as our phyBOARD Pollux (i.MX 8M Plus)The integrated NPU and strong GPU of the i.MX 8M Plus make this board ideal for modern HMI applications using Python (e.g., AI-supported image recognition directly within the UI).
Links & Resources / Getting Started
Get started now: Download the ready-to-use image for your phyBOARD-Pollux or build your own distribution.