Mir-kiosk on a raspberry pi3 with Ubuntu Server 18.04

Good morning, I hope not to repeat a thread here.

I want to install mir-kiosk and the chromium-mir-kiosk on a raspberry pi3 with “Ubuntu Server 18.04” operating system, is there a problem with that? I have read some forums but I have not been lucky.

With ubuntu core it worked out well.

All comments are welcome.

1 Like

Well, it isn’t the usual thing to do, but I don’t see why there would be a problem.

  1. Ubuntu Server comes with no graphics support: You’ll need to add the mesa kernel drivers (and maybe other stuff).
  2. You’ll need to configure mir-kiosk to run as a daemon.
  3. chromium-mir-kiosk is deprecated in favour of wpe-webkit-mir-kiosk

Good luck!

Edit: @menarcarlos, once you’ve worked out what graphics packages you need to add to Ubuntu Server could you document it here for the next guy that asks?

the kernel is identical on core an server, it should ship everything needed by default …

the server installer is sadly differently set up to ubuntu core though, my assumption is that @menarcarlos will need to edit the config.txt file (in the first partition) to contain dtoverlay=vc4-kms-v3d … to enable KMS support in the kernel as i think this is not enabled by default on server systems.

1 Like


I installed the mesa-utils libraries via apt. also add “dtoverlay = vc4-kms-v3d” to the config.txt file and other functions to enable the frequency on a screen via HDMI and the GPU memory destined to 512.

By running mir-kiosk I get the orange screen and then in black, however nothing is seen.

I have this:

ubuntu@ubuntu:~$ sudo mir-kiosk

  • mkdir -p /root/snap/mir-kiosk/2551/.config/

  • grep -vE (^vt=|^console-provider=vt|^display-layout=) /var/snap/mir-kiosk/2551/miral-kiosk.config

  • exec /snap/mir-kiosk/2551/bin/run-miral
    [2019-10-15 03:01:53.491970] mirserver: Starting
    [2019-10-15 03:01:53.654934] < - debug - > mirserver: Not using logind for session management: Failed to connect to DBus system bus: Could not connect: Permission denied
    [2019-10-15 03:01:53.657211] < - debug - > mirserver: Using Linux VT subsystem for session management
    [2019-10-15 03:01:53.657867] mircommon: Loading modules from: /snap/mir-kiosk/2551/usr/lib/aarch64-linux-gnu/mir/server-platform
    [2019-10-15 03:01:53.658197] mircommon: Loading module: /snap/mir-kiosk/2551/usr/lib/aarch64-linux-gnu/mir/server-platform/graphics-mesa-kms.so.16
    [2019-10-15 03:01:53.658345] mircommon: Loading module: /snap/mir-kiosk/2551/usr/lib/aarch64-linux-gnu/mir/server-platform/server-mesa-x11.so.16
    [2019-10-15 03:01:53.658432] mircommon: Loading module: /snap/mir-kiosk/2551/usr/lib/aarch64-linux-gnu/mir/server-platform/input-evdev.so.7
    [2019-10-15 03:01:53.668997] mesa-kms: EGL platform does not support EGL_KHR_platform_gbm extension
    [2019-10-15 03:01:53.670005] < -warning- > mesa-kms: Failed to detect whether device /dev/dri/card0 supports KMS, continuing with lower confidence
    [2019-10-15 03:01:58.201644] mirplatform: Found graphics driver: mir:mesa-kms (version 1.5.0) Support priority: 128
    [2019-10-15 03:01:58.287249] mirplatform: Found graphics driver: mir:mesa-x11 (version 1.5.0) Support priority: 0
    [2019-10-15 03:01:58.321004] mirserver: Selected driver: mir:mesa-kms (version 1.5.0)
    [2019-10-15 03:01:58.323776] < -warning- > mesa-kms: Failed to detect whether device /dev/dri/card0 supports KMS, but continuing anyway
    [2019-10-15 03:01:58.323974] mesa-kms: Using DRM device /dev/dri/card0
    [2019-10-15 03:01:58.456388] < -warning- > mesa-kms: Unable to determine the current display mode.
    [2019-10-15 03:01:58.456962] < -warning- > mesa-kms: Unable to determine the current display mode.
    [2019-10-15 03:01:58.465400] mesa-kms: DRM device details:
    [2019-10-15 03:01:58.465874] mesa-kms: /dev/dri/card0: using driver vc4 [Broadcom VC4 graphics] (version: 0.0.0 driver date: 20140616)
    [2019-10-15 03:01:58.506673] mesa-kms: Output: HDMI-A-1 (connected)
    [2019-10-15 03:01:58.506873] mesa-kms: Mode: 1920×1080@60.00
    [2019-10-15 03:01:58.506963] mesa-kms: Mode: 1920×1080@59.94
    [2019-10-15 03:01:58.507052] mesa-kms: Mode: 1920×1080@30.00
    [2019-10-15 03:01:58.507132] mesa-kms: Mode: 1920×1080@29.97
    [2019-10-15 03:01:58.507209] mesa-kms: Mode: 1920×1080@30.00
    [2019-10-15 03:01:58.507290] mesa-kms: Mode: 1920×1080@29.97
    [2019-10-15 03:01:58.507367] mesa-kms: Mode: 1920×1080@24.00
    [2019-10-15 03:01:58.507444] mesa-kms: Mode: 1920×1080@23.97
    [2019-10-15 03:01:58.507521] mesa-kms: Mode: 1280×1024@60.01
    [2019-10-15 03:01:58.507603] mesa-kms: Mode: 1280×720@60.00
    [2019-10-15 03:01:58.507681] mesa-kms: Mode: 1280×720@59.94
    [2019-10-15 03:01:58.507757] mesa-kms: Mode: 1280×720@30.00
    [2019-10-15 03:01:58.507887] mesa-kms: Mode: 1280×720@29.97
    [2019-10-15 03:01:58.507977] mesa-kms: Mode: 1280×720@24.00
    [2019-10-15 03:01:58.508054] mesa-kms: Mode: 1280×720@23.97
    [2019-10-15 03:01:58.508181] mesa-kms: Mode: 1024×768@60.00
    [2019-10-15 03:01:58.508260] mesa-kms: Mode: 1440×480@29.97
    [2019-10-15 03:01:58.508335] mesa-kms: Mode: 800×600@60.31
    [2019-10-15 03:01:58.508410] mesa-kms: Mode: 720×480@60.00
    [2019-10-15 03:01:58.508486] mesa-kms: Mode: 720×480@59.94
    [2019-10-15 03:01:58.508701] mesa-kms: Mode: 720×480@30.00
    [2019-10-15 03:01:58.508805] mesa-kms: Mode: 720×480@29.97
    [2019-10-15 03:01:58.508882] mesa-kms: Mode: 640×480@60.00
    [2019-10-15 03:01:58.508957] mesa-kms: Mode: 640×480@59.94
    [2019-10-15 03:01:58.509451] mesa-kms: Output: Composite-1 (UNKNOWN)
    [2019-10-15 03:01:58.509547] mesa-kms: Mode: 720×480@31.34
    [2019-10-15 03:01:58.509738] < - debug - > miral: Display config using layout: ‘default’
    [2019-10-15 03:01:58.529305] miral: Display config:
    8>< ---------------------------------------------------
    keys here are layout labels (used for atomically switching between them)
    when enabling displays, surfaces should be matched in reverse recency order

    default: # the default layout

    a list of cards (currently matched by card-id)

    • card-id: 0
      This output supports the following modes: 1920x1080@60.0, 1920x1080@59.9,
      1920x1080@30.0, 1920x1080@30.0, 1920x1080@30.0, 1920x1080@30.0, 1920x1080@24.0,
      1920x1080@24.0, 1280x1024@60.0, 1280x720@60.0, 1280x720@59.9, 1280x720@30.0,
      1280x720@30.0, 1280x720@24.0, 1280x720@24.0, 1024x768@60.0, 1440x480@30.0,
      800x600@60.3, 720x480@60.0, 720x480@59.9, 720x480@30.0, 720x480@30.0,
      640x480@60.0, 640x480@59.9

      Uncomment the following to enforce the selected configuration.
      Or amend as desired.

      state: enabled # {enabled, disabled}, defaults to enabled
      mode: 1920x1080@60.0 # Defaults to preferred mode
      position: [0, 0] # Defaults to [0, 0]
      orientation: normal # {normal, left, right, inverted}, defaults to normal

      8>< ---------------------------------------------------
      [2019-10-15 03:01:58.568717] < -warning- > mesa-kms: drmModeCrtcSetGamma failed: Invalid argument
      [2019-10-15 03:01:58.692447] mesa-kms: Detected single-GPU DisplayBuffer. Rendering will be sent directly to output
      [2019-10-15 03:01:58.877538] mirserver: Using hardware cursor
      [2019-10-15 03:01:59.039769] mesa-buffer-allocator: Bound WaylandAllocator display
      [2019-10-15 03:01:59.039942] < -warning- > mirserver: Cannot set Wayland protocol filter: wl_display_set_global_filter() is unavailable in libwayland-dev 1.12.0
      [2019-10-15 03:01:59.074022] mircommon: Loading modules from: /snap/mir-kiosk/2551/usr/lib/aarch64-linux-gnu/mir/server-platform
      [2019-10-15 03:01:59.074575] mircommon: Loading module: /snap/mir-kiosk/2551/usr/lib/aarch64-linux-gnu/mir/server-platform/graphics-mesa-kms.so.16
      [2019-10-15 03:01:59.075026] mircommon: Loading module: /snap/mir-kiosk/2551/usr/lib/aarch64-linux-gnu/mir/server-platform/server-mesa-x11.so.16
      [2019-10-15 03:01:59.075177] mircommon: Loading module: /snap/mir-kiosk/2551/usr/lib/aarch64-linux-gnu/mir/server-platform/input-evdev.so.7
      [2019-10-15 03:01:59.193102] mirserver: Selected input driver: mir:evdev-input (version: 1.5.0)
      [2019-10-15 03:01:59.194258] mirserver: Mir version 1.5.0
      [2019-10-15 03:01:59.356882] GLRenderer: EGL vendor: Mesa Project
      [2019-10-15 03:01:59.385602] GLRenderer: EGL version: 1.4 (DRI2)
      [2019-10-15 03:01:59.385767] GLRenderer: EGL client APIs: OpenGL OpenGL_ES
      [2019-10-15 03:01:59.385822] GLRenderer: EGL extensions: EGL_EXT_buffer_age EGL_EXT_image_dma_buf_import EGL_EXT_image_dma_buf_import_modifiers EGL_KHR_cl_event2 EGL_KHR_config_attribs EGL_KHR_create_context EGL_KHR_create_context_no_error EGL_KHR_fence_sync EGL_KHR_get_all_proc_addresses EGL_KHR_gl_colorspace EGL_KHR_gl_renderbuffer_image EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap EGL_KHR_no_config_context EGL_KHR_reusable_sync EGL_KHR_surfaceless_context EGL_EXT_pixel_format_float EGL_KHR_wait_sync EGL_MESA_configless_context EGL_MESA_drm_image EGL_MESA_image_dma_buf_export EGL_WL_bind_wayland_display
      [2019-10-15 03:01:59.386046] GLRenderer: GL vendor: Broadcom
      [2019-10-15 03:01:59.386110] GLRenderer: GL renderer: VC4 V3D 2.1
      [2019-10-15 03:01:59.386153] GLRenderer: GL version: OpenGL ES 2.0 Mesa 18.0.5
      [2019-10-15 03:01:59.386209] GLRenderer: GLSL version: OpenGL ES GLSL ES 1.0.16
      [2019-10-15 03:01:59.386521] GLRenderer: GL extensions: GL_APPLE_texture_max_level GL_EXT_blend_minmax GL_EXT_compressed_ETC1_RGB8_sub_texture GL_EXT_discard_framebuffer GL_EXT_draw_buffers GL_EXT_draw_elements_base_vertex GL_EXT_frag_depth GL_EXT_map_buffer_range GL_EXT_multi_draw_arrays GL_EXT_occlusion_query_boolean GL_EXT_read_format_bgra GL_EXT_separate_shader_objects GL_EXT_texture_border_clamp GL_EXT_texture_format_BGRA8888 GL_EXT_unpack_subimage GL_KHR_context_flush_control GL_KHR_debug GL_KHR_no_error GL_MESA_tile_raster_order GL_NV_draw_buffers GL_NV_fbo_color_attachments GL_NV_read_buffer GL_NV_read_depth GL_NV_read_depth_stencil GL_NV_read_stencil GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_sync GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth24 GL_OES_depth_texture GL_OES_draw_elements_base_vertex GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_get_program_binary GL_OES_mapbuffer GL_OES_packed_depth_stencil GL_OES_required_internalformat GL_OES_rgb8_rgba8 GL_OES_stencil8 GL_OES_surfaceless_context GL_OES_texture_3D GL_OES_texture_border_clamp GL_OES_texture_npot GL_OES_vertex_array_object GL_OES_vertex_half_float
      [2019-10-15 03:01:59.386670] GLRenderer: GL max texture size = 2048
      [2019-10-15 03:01:59.386752] GLRenderer: GL framebuffer bits: RGBA=8880, depth=0, stencil=0
      [2019-10-15 03:01:59.599167] mirserver: Initial display configuration:
      [2019-10-15 03:01:59.599369] mirserver: * Output 1: HDMI-A connected, used
      [2019-10-15 03:01:59.599452] mirserver: . |_ EDID monitor name: SONY TV
      [2019-10-15 03:01:59.599504] mirserver: . |_ EDID manufacturer: SNY
      [2019-10-15 03:01:59.599569] mirserver: . |_ EDID product code: 5635
      [2019-10-15 03:01:59.599635] mirserver: . |_ Physical size 72.3" 1600x900mm
      [2019-10-15 03:01:59.599690] mirserver: . |_ Power is on
      [2019-10-15 03:01:59.599738] mirserver: . |_ Current mode 1920x1080 60.00Hz
      [2019-10-15 03:01:59.599784] mirserver: . |_ Preferred mode 1920x1080 60.00Hz
      [2019-10-15 03:01:59.599896] mirserver: . |_ Orientation normal
      [2019-10-15 03:01:59.599949] mirserver: . |_ Logical size 1920x1080
      [2019-10-15 03:01:59.599999] mirserver: . |_ Logical position +0+0
      [2019-10-15 03:01:59.600138] mirserver: . |_ Scaling factor: 1.00
      [2019-10-15 03:01:59.600213] mirserver: * Output 2: Composite disconnected
      [2019-10-15 03:02:00.287005] < -warning- > mirserver: WaylandSurfaceObserver::input_consumed() got non-input event type 11

@menarcarlos that orange and black means mir-kiosk is running fine, are you starting any client that suggests something is a problem?

Why are you doing this?

exec /snap/mir-kiosk/2551/bin/run-miral

Doing this you circumvent the snap’s confinement.

1 Like

Excellent. You have the graphics stack working. Next:

After that, install whichever web kiosk snap you prefer. I would recommend wpe-webkit-mir-kiosk, but you asked about chromium-mir-kiosk.

1 Like

Agreed, it seems likely that “not seeing anything” is a problem with the client. Either it is not installed, or it runs as a daemon and failed to start because mir-kiosk wasn’t available at the time.

The unfortunate formatting hides it, but that is a command run by the snap’s scripting. The user command being run is:

Everything after that is normal mir-kiosk startup. This isn’t the recommended way to start mir-kiosk, but it suffices to show that the graphics stack is working.

1 Like

Hi to all, still not working.
I will do a clean installation from ubuntu server.

Some captures and logs are:

ubuntu@ubuntu:~$ sudo snap connections
Interface Plug
Slot Notes
browser-support chromium-mir-kiosk:browser-sandbox
:browser-support -
desktop chromium-mir-kiosk:desktop
:desktop -
gsettings chromium-mir-kiosk:gsettings
:gsettings -
home chromium-mir-kiosk:home
:home -
home pulseaudio:home
:home -
network chromium-mir-kiosk:network
:network -
network pulseaudio:network
:network -
opengl chromium-mir-kiosk:opengl
:opengl -
opengl mir-kiosk:opengl
:opengl -
pulseaudio chromium-mir-kiosk:pulseaudio
:pulseaudio -
screen-inhibit-control chromium-mir-kiosk:screen-inhibit-control
:screen-inhibit-control -
wayland chromium-mir-kiosk:wayland
mir-kiosk:wayland manual
x11 chromium-mir-kiosk:x11-plug
chromium-mir-kiosk:x11 manual
x11 mir-kiosk:x11
:x11 -

ubuntu@ubuntu:~$ sudo snap logs chromium-mir-kiosk
2019-10-17T02:51:23Z chromium-mir-kiosk.chromium-mir-kiosk[12232]:
[12419:12419:1017/025123.249808:ERROR:zygote_linux.cc(278)] Unexpected
real PID message from browser
2019-10-17T03:12:27Z chromium-mir-kiosk.chromium-mir-kiosk[2593]:
glamor: EGL version 1.4 (DRI2):
2019-10-17T03:13:35Z chromium-mir-kiosk.chromium-mir-kiosk[2593]:
[2813:3091:1017/031334.900751:ERROR:bus.cc(394)] Failed to connect to
the bus: Could not parse server address: Unknown address type
(examples of valid types are “tcp” and on UNIX “unix”)
2019-10-17T03:13:53Z chromium-mir-kiosk.chromium-mir-kiosk[2593]: (EE)
2019-10-17T03:13:53Z chromium-mir-kiosk.chromium-mir-kiosk[2593]:
Fatal server error:
2019-10-17T03:13:53Z chromium-mir-kiosk.chromium-mir-kiosk[2593]: (EE)
failed to dispatch Wayland events: Broken pipe
2019-10-17T03:13:53Z chromium-mir-kiosk.chromium-mir-kiosk[2593]: (EE)
2019-10-17T03:14:07Z chromium-mir-kiosk.chromium-mir-kiosk[2593]: i3:
Cannot open display
2019-10-17T03:14:12Z chromium-mir-kiosk.chromium-mir-kiosk[2593]:
Using basic (unencrypted) store for password storage. See
for more information about password storage options.
2019-10-17T03:14:23Z chromium-mir-kiosk.chromium-mir-kiosk[2593]:
X IO error received (X server probably went away)

ubuntu@ubuntu:~$ sudo snap logs mir-kiosk
2019-10-17T03:28:01Z mir-kiosk.daemon[4290]: [2019-10-17
03:28:01.623071] mirserver: . |_ Physical size 72.3"
2019-10-17T03:28:01Z mir-kiosk.daemon[4290]: [2019-10-17
03:28:01.623110] mirserver: . |_ Power is on
2019-10-17T03:28:01Z mir-kiosk.daemon[4290]: [2019-10-17
03:28:01.623289] mirserver: . |_ Current mode 1920x1080
2019-10-17T03:28:01Z mir-kiosk.daemon[4290]: [2019-10-17
03:28:01.623343] mirserver: . |_ Preferred mode
1920x1080 60.00Hz
2019-10-17T03:28:01Z mir-kiosk.daemon[4290]: [2019-10-17
03:28:01.623381] mirserver: . |_ Orientation normal
2019-10-17T03:28:01Z mir-kiosk.daemon[4290]: [2019-10-17
03:28:01.623440] mirserver: . |_ Logical size 1920x1080
2019-10-17T03:28:01Z mir-kiosk.daemon[4290]: [2019-10-17
03:28:01.623478] mirserver: . |_ Logical position +0+0
2019-10-17T03:28:01Z mir-kiosk.daemon[4290]: [2019-10-17
03:28:01.623516] mirserver: . |_ Scaling factor: 1.00
2019-10-17T03:28:01Z mir-kiosk.daemon[4290]: [2019-10-17
03:28:01.623584] mirserver: * Output 2: Composite
2019-10-17T03:28:01Z mir-kiosk.daemon[4290]: [2019-10-17
03:28:01.934282] < -warning- > mirserver:
WaylandSurfaceObserver::input_consumed() got non-input event type 11

ubuntu@ubuntu:~$ sudo snap get mir-kiosk
Key Value
cursor auto
daemon true
display-layout default
vt 4

Why reinstall?

It appears mir-kiosk is working but chromium-mir-kiosk has an error. That’s what you need to fix (or avoid by using something else).

I think it is for some parameter in the chromium version, is there another way to install “chromium-mir-kiosk” similar to “snap install chromium-mir-kiosk” or should I try wpe-webkit-mir-kiosk.

Thanks @alan_g

Thank you all, it works!
In the next post I will document it.

I just have a question, for how long the chromium-mir-kiosk snap will be available in the store?

1 Like

It basically is unmaintained already, we unlisted it from the store and recommending transition to wpe-webkit-mir-kiosk, maintained by the community. We never supported chromium-mir-kiosk, it is a proof of concept and an experiment.

1 Like

which would also have been easy to guess by the channels it was published in (edge and beta… never stable) :wink:

Hi @menarcarlos,

I tried several times to run the mir-kiosk snap on a pi3 running ubuntu server 64-bit, without success :frowning_face: . Obviously i’ve used “dtoverlay = vc4-kms-v3d”, i have set the GPU memory to 512 and i have installed the mesa-utils libraries.

Can you report here the full process to get it working, please ?



pleased to hear you’re trying mir-kiosk and sorry that you’re having difficulties. But you’ll have to provide some more information before I can help.

You’ve clearly seen the changes needed to enable kernel graphics, but for Mir to run as a daemon on classic systems…


After that you should see the “orange flash” indicating that Mir has started successfully.

If that’s not what you’re seeing then the logs may provide a clue:


Got it working!!

I am going to report here clearly how to set it up:
-install, sudo apt update, sudo apt upgrade.

  • place :

inside the file usrcfg.txt and then reboot.

  • sudo snap install mir-kiosk --devmode
  • sudo snap set mir-kiosk daemon=true

Now, this SD card should work on any PI3 rigth? also PI3b+ or 3A

I’ve tried the same procedure with a PI4 but the OpenGL acceleration seems not working yet on it :cry:

Anyway thank you, i think that i was doing some king of stupid error somewhere.

1 Like

Great that you have it working!

Just one thing…

…there is no need for devmode in this scenario.

Hi @maumx2

Sorry for late response, i’m glad you made it work!!
It is not really difficult when you have the help of @alan_g


It’s true, @alan_g thank you very much! i am going to place the snap with the right confinement.

Now i do have another small problem maybe @dot-tobias can help me: i have done the same procedure for the raspberry PI4 and now i have the mir-kiosk snap working (orange blink and then black screen with cursor). wpe-webkit-mir-kiosk fails to start with this log:

sudo snap logs wpe-webkit-mir-kiosk
2020-04-04T22:21:23Z -[4543]: Renderer process terminated and failed to recover within 1000ms
2020-04-04T22:21:23Z -[4543]: <URL(changed)> Crash!: The renderer process crashed. Reloading the page may fix intermittent failures.
2020-04-04T22:21:23Z -[4543]: <URL(changed)> Crash!: The renderer process crashed. Reloading the page may fix intermittent failures.
2020-04-04T22:21:23Z wpe-webkit-mir-kiosk.browser[4385]: EGLDisplay Initialization failed: EGL_NOT_INITIALIZED
2020-04-04T22:21:24Z -[4543]: Renderer process terminated and failed to recover within 1000ms
2020-04-04T22:21:24Z -[4543]: <URL(changed)> Crash!: The renderer process crashed. Reloading the page may fix intermittent failures.
2020-04-04T22:21:24Z -[4543]: <URL(changed)> Crash!: The renderer process crashed. Reloading the page may fix intermittent failures.
2020-04-04T22:21:24Z wpe-webkit-mir-kiosk.browser[4385]: EGLDisplay Initialization failed: EGL_NOT_INITIALIZED
2020-04-04T22:21:24Z -[4543]: Renderer process terminated and failed to recover within 1000ms
2020-04-04T22:21:24Z -[4543]: <URL(changed)> Crash!: The renderer process crashed. Reloading the page may fix intermittent failures.

is there somethin i am missing?

nope, you are not … accelerated GL is not properly working yet on the Pi4 (@raof is working on it) XWayland clients fail in general currently … see:

Raspberry Pi 4 - chromium-mir-kiosk - #9 by RAOF - device - snapcraft.io