Shadow PC: Support for Ubuntu 21.10

I've had a really bad experience with Support, they make it seem like all versions of Ubuntu are supported on their website and they most definitely are not. You have to be on a really old version to have 'official' support. When I tried to get help using 21.10 they made a token effort with advice for older versions and then told me I couldn't get a refund and had to pay for the service for a month despite being unable to use it.

I did really want to use this service though, so even though support were utterly... unsupportive I spent some time trying to analyse the problem myself. Here is what I found that let me achieve a somewhat working shadow desktop session on Ubuntu 21.10.

With this solution I can connect.. maybe 1 out of 5 times, the other times I get an "L-100" that I haven't found the cause of yet.

With all the recommended libraries installed via apt:

sudo apt install gconf2 libgles2-mesa libubsan1 libuv1 libva-glx2

Note: libubsan1 instead of libubsan0 for Ubuntu 21.10.

And a vainfo on my nvidia setup using Arekinath's patch that has the appropriate H264 entries, ref:

libva info: VA-API version 1.12.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/
libva info: Found init function __vaDriverInit_1_1
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.12 (libva 2.10.0)
vainfo: Driver version: Splitted-Desktop Systems VDPAU backend for VA-API (arekinath) - 0.7.4
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            :    VAEntrypointVLD
      VAProfileMPEG2Main              :    VAEntrypointVLD
      VAProfileMPEG4Simple            :    VAEntrypointVLD
      VAProfileMPEG4AdvancedSimple    :    VAEntrypointVLD
      <unknown profile>               :    VAEntrypointVLD
      VAProfileH264Main               :    VAEntrypointVLD
      VAProfileH264High               :    VAEntrypointVLD
      VAProfileVC1Simple              :    VAEntrypointVLD
      VAProfileVC1Main                :    VAEntrypointVLD
      VAProfileVC1Advanced            :    VAEntrypointVLD

I was getting R-0x7F errors on each connect attempt.

To fix this I:

  • Unpacked the appimage:
./Shadow.AppImage --appimage-extract

This creates a folder called 'squashfs-root' with the contents of the app image inside it. To run the app you can:

cd squashfs-root
  • When I ran the app and used strace to debug it:
sudo strace -s 9999 -f -e trace=execve -p $(ps axfwwwwwl | grep -i shadow | awk '{print $3}' | sort -n | head -1)`

I noticed that the app was constantly looking for a file called 'Shadow' which didn't exist on the app image. 'shadow' (lower case) does exist though. This smells like someone was developing on a Mac with a case insensitive file system to me. Classic developer error.

  • I symlinked 'Shadow' to 'shadow' in squashfs-root with:
ln -s ./shadow ./Shadow
  • I ran ./shadow again


I can connect maybe 1 out of 5 times, the other times I get an L-100 error that I haven't been able to track down yet - but this is a significant improvement over not being able to connect at all.


To the team behind of course, and to the support posts where I pieced together a lot of this approach (such as using strace).