This document describes what are the requirements for running Ubuntu Frame.
Ubuntu Frame is a snap designed to provide a graphical shell on Linux based devices for a single application.
We recommend Ubuntu Core for a lot of purposes, but you should be able to use Ubuntu Frame on any Linux system with snapd installed and with “suitable graphics”.
Ubuntu Frame is based on Mir which supports a range of graphics options. The current iteration of Ubuntu Frame does not support all of these, just “gbm-kms”.
In general, this means that Ubuntu Frame can work with any driver providing KMS,
libgbm and an EGL supporting EGL_WL_bind_wayland_display .
A default installation of Ubuntu Frame will install the open-source Mesa drivers (via the
mesa-core20 snap). Mesa provides gbm-kms support across a wide range of hardware.
Ubuntu Frame requires the graphics userspace to be supplied via the
graphics-core20 Snap interface.
We’ve done some “proof of concept” work with non-mesa drivers, but we are not currently in a position to provide these as snaps.
Strictly speaking Ubuntu Frame itself does not require hardware graphics. Mir will use hardware graphics if available, but will “fall back” to software rendering.
However, for most applications on the typical IoT devices that Ubuntu Frame targets hardware graphics will be needed to achieve acceptable performance.
Ubuntu Frame should work on hardware that:
- has a Mesa driver; and,
- has the corresponding kernel drivers enabled
If you find there are problems on such a system then it is worth filing a bug.
Because different drivers and hardware work differently we can only test and, if necessary, debug on systems to which we have access.
These are some systems where we have automated testing in place:
|Device||Mesa driver||Video acceleration|
Note on RPi3 with Ubuntu Server 21.10
Ubuntu Frame fails to start when run on RPi3 with Ubuntu Server 21.10 in a default configuration (ref. issue #39). This can be fixed by changing the kernel device tree overlay to one with
In Impish Release notes I’ve followed the suggestion to change the
dtoverlay=dwc2and changed it to
dtoverlay=vc4-fkms-v3d, and now it displays.