---
title: Using an alternative graphics userspace
description: Canonical makes open source secure, reliable and easy to use, providing
  support for Ubuntu and a portfolio of enterprise-grade technologies. Founded in
  2004, Canonical operates globally with team members in over 80 countries.
url: https://canonical-com-2950.demos.haus/mir/docs/using-an-alternative-graphics-userspace?format=md
---

*Submit*

# Using an alternative graphics userspace

## The issue

On “desktop” linux installations there are limited options for the graphics stack, and most systems will run with the “open” Mesa graphics drivers and/or Nvidia drivers.

The IoT world is a bit more varied, often with device specific drivers provided by the board manufacturer. [Ubuntu Frame](https://snapcraft.io/ubuntu-frame) is designed to work with graphics stacks that provide KMS, `libgbm` and an EGL supporting [EGL\_WL\_bind\_wayland\_display](https://www.khronos.org/registry/EGL/extensions/WL/EGL_WL_bind_wayland_display.txt).

It does this by using a Snap “content interface”, [graphics-core20](https://canonical-com-2950.demos.haus/mir/docs/the-graphics-core20-snap-interface), that allows alternative drivers providing the facilities to be used. By default, [Ubuntu Frame](https://snapcraft.io/ubuntu-frame) will use the [mesa-core20](https://https:/snapcraft.io/mesa-core20) implementation of this interface which provides the Mesa drivers from the Ubuntu 20.04LTS Archive.

## The example

The default provider can be overridden in a number of ways. Manufacturers will ideally do this through a brand store; but, it can also be done “by hand” on a device and that’s what we will describe here.

First we need an alternative `graphics-core20` provider. As you won’t have access to a brand store we will use a test snap: [kisak-core20](https://snapcraft.io/kisak-core20). This is actually just a backport of a more recent version of Mesa, but it serves the purpose of illustrating this functionality.

Packaging graphics drivers as a snap isn’t something we discuss here. There’s details of the requirements in [The graphics-core20 Snap interface](https://canonical-com-2950.demos.haus/mir/docs/the-graphics-core20-snap-interface), and the [mesa-core20](https://https:/snapcraft.io/mesa-core20) and [kisak-core20](https://snapcraft.io/kisak-core20) snaps can be used as reference examples.

## Setup

For this example, I’m going to show the steps using a desktop Linux installation. If you are working on an Ubuntu Core device it is actually simpler as the snaps involved will be running automatically.

First install the following:

```
snap install ubuntu-frame
snap install wpe-webkit-mir-kiosk
snap connect wpe-webkit-mir-kiosk:wayland
snap install --edge kisak-core20
```

Now (on desktop only) install Frame-it

```
snap install --classic frame-it
```

Frame-it is a utility to make it simpler running Ubuntu Frame from a desktop environment.

## How to

You can see what’s connected to the graphics-core20 interface as follows:

```
snap interfaces | grep graphics-core20
kisak-core20:graphics-core20  -
mesa-core20:graphics-core20   ubuntu-frame,wpe-webkit-mir-kiosk
```

First check that things are working by running:

```
frame-it snap run wpe-webkit-mir-kiosk.cog
```

You can close this.

Next we can change switch the graphics provider:

```
snap disconnect ubuntu-frame:graphics-core20
snap disconnect wpe-webkit-mir-kiosk:graphics-core20
snap connect ubuntu-frame:graphics-core20 kisak-core20
snap connect wpe-webkit-mir-kiosk:graphics-core20 kisak-core20
```

And show the changes:

```
$ snap interfaces | grep graphics-core20
kisak-core20:graphics-core20  ubuntu-frame,wpe-webkit-mir-kiosk
mesa-core20:graphics-core20   -
```

And prove that it still all works:

```
frame-it snap run wpe-webkit-mir-kiosk.cog
```

---

[Previous

How to run your IoT GUI on your desktop](https://canonical-com-2950.demos.haus/mir/docs/howto-run-your-iot-gui-on-your-desktop)
[Next

How to configure Ubuntu Frame for multiple outputs](https://canonical-com-2950.demos.haus/mir/docs/how-to-configure-ubuntu-frame-for-multiple-outputs)

Last updated 4 years ago. [Help improve this document in the forum](https://discourse.ubuntu.com/t/using-an-alternative-graphics-userspace/29861).
