IoT Graphics: Mir Release 1.0

by Alan Griffiths on 21 September 2018

The Mir team is pleased to announce the milestone release of Mir 1.0.0. This is the first major release targeted at IoT device makers and enthusiasts looking to build the next-generation of graphical solutions.

Mir is a display server and is used by other projects to draw graphics on the screen. The Mir team have created mir-kiosk, a fully functional kiosk implementation that satisfies many IoT-related use cases: Running a kiosk on Ubuntu Core showcases a set of Qt applications as examples apps you could run on a kiosk.

The fast, open and secure display server

Whether for building a device or for writing a shell for the desktop, Mir can give you a graphics stack that is fast, light, and secure. The Mir graphical stack works across different graphics platforms and driver models and is easy to integrate into your kiosk, digital signage, or purpose built graphical solution. It was first conceived over 6 years ago as part of an initiative by Canonical to unify the graphical environment across all devices, including desktop, TV, and mobile devices and continues to be developed with new features and modern standards.

Applying Mir to the Internet of Things

Many types of device need to provide some sort of graphical output or display to the user. Some examples include digital signage, interactive kiosks, automotive in-car entertainment gateways, smart meters, and the screens seen on everything from washing machines to smart thermostats. All of these need to output graphics to a display but that it is not always easy in an embedded environment.

Linux is one of the most popular OS choices for manufacturers and solution providers to use in IoT devices and with it there are a few options available for graphical environments. From custom software to drive the display, through direct frame buffer access with toolkits such as Qt, to a full X windowing server.

Mir allows device makers to use a well-defined, efficient, flexible, and secure platform for their graphical environment.

Why Wayland?

Wayland is intended as a simpler replacement for X, easier to develop and maintain…
…Wayland is a protocol for a compositor to talk to its clients as well as a C library implementation of that protocol.

Historically, graphical user interfaces on the Linux platform have been powered by the X windowing system. X has a long and successful history and it has served the purposes of both system level and application level UI well for more than three decades. However, users nowadays expect a more consistent, integrated and secure user experience than is possible to offer on top of the X windowing system.

The X11 protocol (used by X) was not designed with security in mind and a malicious application can obtain information from other running X11 applications. For instance X11 servers do not protect sensitive information like keystrokes between applications using them.

Mir has been designed from the ground-up with security in mind. To meet the needs of today’s users, Mir avoids the X11 protocol and uses Wayland. Each application talks exclusively to the Mir server through its own connection that is both secure and robust against attack. Wayland is the de facto successor to X11 and is designed to address the problems that have proved intractable with the X windowing system.

Applications that can use Wayland directly and will work with Mir include those built with GTK3/4, Qt5 and SDL2.

Using Mir

For more about developing graphical snaps for IoT applications, including tutorials for creating your own snaps, see: mir-kiosk: a project that uses Mir

Developers using Mir will find it packaged and available on Ubuntu, Fedora, Arch and (soon) Debian. The latest Mir release is available for all supported Ubuntu series from the Mir team’s “release PPA”:

sudo apt-add-repository --update ppa:mir-team/release

Mir’s website is:

Newsletter Signup

Related posts

How to make snaps and configuration management tools work together

In environments with large numbers of client machines, configuration management tools are often used to simplify and standardize the target state of each host in a seamless, automated and consistent manner. Software like CFEngine, Chef, Ansible, and others offer a high degree of granular control over software packaging and system configur […]

Stepping Down Gracefully

The Snap Store has been designed to enable upstream developers and enthusiastic community contributors to publish snaps. As with most Linux packaging solutions, the wider community are often responsible for starting and maintaining software packages. This is a double-edged sword, especially for humans with limited life spans and other shi […]

The Expandables – snapcraft extensions and the secret code

If you’re a snap developer, you know that snap development is terribly easy. Or rather complex and difficult. Depending on your application code and requirements, it can take a lot of effort putting together the snapcraft.yaml file from which you will build your snap. One of our goals is to make snap development practically easier […]