1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
|
// Copyright (C) 2021 The Qt Company Ltd.
// Copyright (C) 2019 Luxoft Sweden AB
// Copyright (C) 2018 Pelagicore AG
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\page troubleshoot.html
\ingroup qtappman
\title Troubleshooting
\brief Lists possible issues you may encounter while using QtApplicationManager and how to solve them.
This section lists possible issues you may encounter while using QtApplicationManager and how to
solve them.
\table
\header
\li Possible Issues or questions.
\row
\li \l{ts-cmake-wayland}{What does \c{Unknown CMake command "qt_am_add_systemui_wrapper"} mean?}
\row
\li \l{How do I check whether my application manager instance is running in multi-process mode?}
\row
\li \l{How do I find out why my application manager instance doesn't support multi-process mode?}
\row
\li \l{My applications are running slowly within the application manager. What are some possible solutions?}
\row
\li \l{How do I find out if my applications use hardware acceleration?}
\row
\li \l{How do I enable hardware acceleration?}
\row
\li \l{My applications are crashing immediately within the application manager. What are some possible solutions?}
\row
\li \l{Why does the appman-controller not see any of my appman instances?}
\endtable
\target ts-cmake-wayland
\section1 What does \c{Unknown CMake command "qt_am_add_systemui_wrapper"} mean?
The most common reason for this error message is that you installed the application manager via the
Qt Installer, but your Linux system is lacking the \c libwayland-dev development package.
See \l {wayland-dev-packages}{here for more information}.
\section1 How do I check whether my application manager instance is running in multi-process mode?
Start the Application manager with the \c --verbose argument and verify that you see
\c{WindowManager: running in Wayland mode} in the output. Alternatively, start an application and
make sure that you can see at least one \c appman-launcher-qml process running.
\section1 How do I find out why my application manager instance doesn't support multi-process mode?
Check the "Application Manager configuration" summary, which is visible at the end of the
configuration step. It's possible that your Qt installation doesn't come with the \c QtCompositor
module.
\section1 My applications are running slowly within the application manager. What are some possible solutions?
Verify if your applications are running with hardware acceleration.
\section1 How do I find out if my applications use hardware acceleration?
Run the \c appman, with the environment variable \c QSG_INFO=1. When you start an application, you
should see a similar output:
\badcode
[DBG | qt.scenegraph.general | c.p.music] Using sg animation driver
[DBG | qt.scenegraph.general | c.p.music] Animation Driver: using vsync: 16.95 ms
[DBG | qt.scenegraph.general | c.p.music] texture atlas dimensions: 1024x1024
[DBG | qt.scenegraph.general | c.p.music] R/G/B/A Buffers: 8 8 8 8
[DBG | qt.scenegraph.general | c.p.music] Depth Buffer: 24
[DBG | qt.scenegraph.general | c.p.music] Stencil Buffer: 8
[DBG | qt.scenegraph.general | c.p.music] Samples: 0
[DBG | qt.scenegraph.general | c.p.music] GL_VENDOR: VMware, Inc.
[DBG | qt.scenegraph.general | c.p.music] GL_RENDERER: llvmpipe (LLVM 5.0, 256 bits)
[DBG | qt.scenegraph.general | c.p.music] GL_VERSION: 3.0 Mesa 17.3.0
\endcode
If \c GL_RENDERER is \c llvmpipe, you're using software rendering for your Wayland clients.
\note This information is also available for the System UI itself, based on the application's ID in
the prefix. In the example above, \c{com.pelagicore.music} is truncated to \c{c.p.music}.
\section1 How do I enable hardware acceleration?
This depends on your hardware and operating system:
You need to make sure that you have the correct drivers installed:
\list
\li For NVIDIA on Ubuntu or Debian you need \c nvidia-egl-wayland-icd
\li For Intel on Ubuntu or Debian you need \c libwayland-egl1-mesa
\endlist
On desktop systems, make sure your Qt is configured to use at least OpenGL ES2/ES3 instead of
Desktop OpenGL. In Qt's configure summary, verify that you see the following line:
\badcode
OpenGL ES 2.0 ........................ yes
\endcode
You can force Qt to use OpenGL ES2 by using the \c --opengl es2 configure option.
Additionally, you also need to make sure that the \c wayland-egl integration plugin is built. If
the plugin built successfully, you should have the following file:
\e <QT_DIR>/plugins/wayland-graphics-integration-client/libqt-plugin-wayland-egl.so
If that file isn't available, check QtWayland's configure summary and make sure this plugin is
built.
\section1 My applications are crashing immediately within the application manager. What are some possible solutions?
Your system setup might not allow Wayland clients to use OpenGL. In this case both the application
manager and the QML application launcher output a critical log message if hardware accelerated
rendering is not possible for applications.
Make sure to enable hardware acceleration.
You can also force software rendering by setting the environment variable \c $QT_QUICK_BACKEND to
\c software, but only if your applications aren't using OpenGL features explicitly.
For example, shaders.
\section1 Why does the appman-controller not see any of my appman instances?
Most likely your appman-controller and the appman instances are running under different Unix user
accounts on your target device. If your shell user is \c root, but the appman is running under an
unpriviledged account, you can use this setup: rename the \c appman-controller executable to
\c appman-controller.bin and save the following script as \c appman-controller in place of the
original executable. Don't forget to replace \c <your-appman-user> with the actual user name.
\badcode
#!/bin/sh
APPMAN_USER="<your-appman-user>"
APPMAN_CONTROLLER="`dirname $0`/appman-controller.bin"
CURRENT_UID=`id -u`
APPMAN_UID=`id -u $APPMAN_USER`
if [ "$CURRENT_UID" = "$APPMAN_UID" ]; then
"$APPMAN_CONTROLLER" "$@"
elif [ "$CURRENT_UID" = "0" ]; then
su "$APPMAN_USER" -s "$APPMAN_CONTROLLER" -- "$@"
else
echo >&2 "The current user (`id -un`) is neither the appman user ($APPMAN_USER) nor root."
exit 2
fi
\endcode
*/
|