How to use remote assistance with Ubuntu Frame


This document describes how to use the remote assistance function in Ubuntu Frame.

Version: This feature is only available from Ubuntu Frame 67-mir2.8.0+dev350 onward (currently on the edge channel).

The ubuntu-frame-vnc snap

The remote assistance feature of Ubuntu Frame is provided by the ubuntu-frame-vnc snap. It is a distribution of wayvnc built and configured to work with Ubuntu Frame.

You can install the snap from the edge channel:

$ snap install ubuntu-frame-vnc --edge

Using as a daemon

The default on Ubuntu Core, using as a daemon allows you to always have the remote access enabled. To turn the daemon feature on or off, use:

$ sudo snap set ubuntu-frame-vnc daemon=true
# or
$ sudo snap set ubuntu-frame-vnc daemon=false

Running manually

To run the server manually, just issue:

$ ubuntu-frame-vnc
# Ctrl+C to stop

NB: If you’re running Frame on a Wayland desktop, by default this will try and connect to your desktop rather than Frame. On Ubuntu 22.04, for example, the symptom is:

$ ubuntu-frame-vnc 
wl_registry@2: error 0: invalid version for global wl_output (5): have 2, wanted 3
ERROR: Compositor doesn't support screencopy! Exiting.
ERROR: Failed to initialise wayland

To make sure you’re using the same WAYLAND_DISPLAY, run all the components with the same value of the variable:

$ WAYLAND_DISPLAY=wayland-99 ubuntu-frame
# in another terminal
$ WAYLAND_DISPLAY=wayland-99 ubuntu-frame-vnc

Configuring the server

There are two means of modifying the behaviour of the server - the command line, and a configuration file.

The configuration file

The locations of the config file are, for running manually and as a daemon, respectively:

See wayvnc documentation for the available options.

When running as a daemon, restart to pick up the new configuration:

$ sudo snap restart ubuntu-frame-vnc

The command line

On the command line, the available options are:

$ ubuntu-frame-vnc --help
Usage: wayvnc [options] [address [port]]

    -C,--config=<path>                        Select a config file.
    -o,--output=<name>                        Select output to capture.
    -k,--keyboard=<layout>[-<variant>]        Select keyboard layout with an
                                              optional variant.
    -s,--seat=<name>                          Select seat by name.
    -r,--render-cursor                        Enable overlay cursor rendering.
    -f,--max-fps=<fps>                        Set the rate limit (default 0).
    -p,--show-performance                     Show performance counters.
    -u,--unix-socket                          Create a UNIX domain socket
                                              instead of TCP.
    -d,--disable-input                        Disable all remote input
    -V,--version                              Show version info.
    -h,--help                                 Get help (this text).

Input: Remote input is not currently supported (it’s being worked on), hence --disable-input is always passed.

You can pass any of those straight on the command line when running manually.

When running as a daemon, you’ll need to use a systemd override:

$ sudo systemctl edit snap.ubuntu-frame-vnc.daemon

For example, to limit the number of frames per second:

ExecStart=/usr/bin/snap run ubuntu-frame-vnc.daemon --max-fps=10
1 Like