In this blog I’m discussing multiple options to use an Raspberry Pi 4 as a VMware Horizon View 8 Thin Client. What works, what doesn’t.
Due to the COVID restrictions, and the push for working from home, I’ve been at home for the last 18 months. The customer for whom I work at the moment uses a VMware Horizon VDI infrastructure, so working from home is basically the same as working from the office, bar the co-workers.
But why? Don’t you have a PC or laptop for that?
Sure I do, but my primary PC has some issue when running the Horizon View and the Microsoft Teams clients, it gets unstable. Don’t know why, haven’t found anything, PC just freezes, leaving no trace of any issue in any log/eventlog. It just locks up (I’ve got alot of stuff, including VM’s running on the background, so probably my own fault). But that is not the topic of this post.
I needed to find a reasonable alternative, I don’t want to have yet another PC on my desk only for some remote desktop stuff. I do have a bunch of Raspberry Pi 4’s stacked, which I use for either Kubernetes or ESXi on ARM. I decided that I could use one of them to test if using a Raspberry Pi 4B (4GB) for work was feasible.
Short story short: Yes the Horizon Client works on a Raspberry Pi! But not how you may think. It will not do PC over IP on a Raspberry Pi running Linux. It does when running Windows or Android on the Raspberry Pi.
To keep the story as short as needed, use these links to jump to each section:
- Raspberry Pi OS Installation
- Installing Snap and Microsoft Teams on Raspberry Pi OS
- Manual Installation of VMware Horizon View on Raspberry Pi OS
- Creating shortcuts on Raspberry Pi OS
- Add certificates on Raspberry Pi OS
- Commercial ThinClient Offerings: ThinLinx TLXOS & Stratodesk NoTouch OS
- Windows 11 Installation
- Installing Teams and Horizon View on Windows 11
- Android 11
Setup and criteria
My setup consists of 2 LG 27UL500-W 27″ 4K screens I just bought from Amazon, they weren’t that expensive to begin with and by choosing the returned items (both were advertised with having minor scratches on the front bezels (rated ‘good’ by Amazon)). But I haven’t yet found any! (Your experience may vary) but for now, I’ve gotten an 15% discount on them just because they were returned. Since I’m located in the EU, they are covered with a 2 year warranty, and I’m able to return them without question within two weeks and just get my money back if the scratches are really an eyesore. But as stated earlier, I don’t see any! I’ve got an Larmtek 1080p USB webcam attached, also from Amazon, keyboard and mouse are an old Logitech wireless desktop set, connected over the included USB dongle. My headset is a Jabra Evolve2 headset connected over USB-A. All of this connected to an Raspberry Pi 4B 4 GB (with the older BCM2711 B0-stepping). I need to acquire a 8GB model with the C0 stepping, to see if that feels like it runs better with Windows or at higher clock speeds. But that’s for later. When do I consider the setup feasible? When I could recommend it to my co-workers. Who may have reservations about using their gaming rig for the desktop work, consuming some hundreds of Watts just for doing their work, especially now with the incredible rise off energy prices. So the setup must be able to run VMware Horizon View Client 8.0 (2006) or higher and run Microsoft Teams outside of the VDI. An added requirement is that Horizon works using Teradici’s PC over IP protocol. Since that is what my current customer uses. No Blast sadly.
PC over IP support is sparse!
The Linux (armhf/32-bit) version of the client does not support PC over IP (PCoIP), and that is the only protocol the customer allows, since they use Teradici hardware based Zero Clients at the office. And this is partly the reason for this post and probably why this has come up in your Google search. It cannot do PCoIP, and wont give any helpful error either: (from
blastSocket SSL: syscall error 104: Connection reset by peer blastSocket SOCKET 6 (31) Could not negotiate SSL blastSocket blastSocket SOCKET 6 (31) Cannot verify target host.
It seems to point to a certificate / SSL issue, especially when you Google error 104, it’s an error raised by OpenSSL. But it appears that it is raised when the connection couldn’t be made because the display protocol can’t connect. All messages are prefixed with blastSocket indicating that it is the Blast protocol connection that is attempted to be established.
Only by resorting to ThinLinx TLXOS a warning was shown, prompting me to change my Google searches. Still I couldn’t find a definitive VMware documentation source that states that PCoIP is not possible on the Linux ARM Client. Only that connecting to a Linux Agent requires Blast. And PCoIP should just work on the x86_64/AMD64 Linux clients.
There is a script included in the Horizon Client bundle,
vmware-view-lib-scan, that raised an error on the PCoIP installation, it’s missing a file
vmware-remotemks-container which is not included in any of the armhf archives. I even checked the Android 32-bit ARM files, but those didn’t contain the file either. I saw some posts dating back to version 4, and something about an HP ThinClient update package that should contain a working PCoIP connection. But since that version is just ancient, I didn’t explore that path.
However if your setup does allows for Blast, and you want to use a standard Raspberry Pi 4B to use as a thin client, I’ve written this how to, since (and this is for me a common experience with anything Linux related) guides are not easy to come by or don’t elaborate enough and maybe the most common, they assume a lot of background knowledge of the reader. I try to explain the steps taken as much as I can, to hopefully make it easy to follow, and if anything changes in the future, and they will (!), maybe make it understandable how to update your steps.
Because both the Microsoft Teams app (3rd party webapp wrapper app) and the Horizon View client are only available for armhf and not ARM64 or aarch64, I used Raspberry OS in this example. I’ve tried the 64bit version of Ubuntu 21.04, and couldn’t install the Teams app, which for my use case/experiment was a requirement. Sadly Microsoft doesn’t supply a 64bit ARM version of Teams nor VMware an ARM64 version of Horizon View. Both have 64bit Linux support (at the time of writing) but only x86_64 / AMD64. The armhf Teams app is from a 3rd party developer who sadly stopped development. So no ARM64 version of that is to be expected. The last resort for Teams is the webapp, and the same goes for Horizon, but the HTML5 version still requires Blast. To at least test if Blast is working, I build a basic Horizon View 8.3 setup in my homelab.
The servers in my homelab do not have any hardware graphics acceleration. To test if Blast H.264/HVEC decoding works, I tested Big Buck Bunny 4K over YouTube, and 360p video in the VDI is choppy. Without the Blast acceleration, even 360p was unwatchable, chucks missing or no change between keyframes. The same video directly in Chromium on the Raspberry allowed for a choppy but watchable 720p resolution.
I did not try any of the central management options of ThinLinx or StratoDesk This was not the aim of this test. Both come with an free (!) management appliance. For more information on these appliances, check the websites of each vendor..
If PC-over-IP is a requirement, the clear winner is Android. It’s quick, has great hardware and app support, sadly no dual screen. If using it for Blast, the best hardware support comes with Raspberry Pi OS, StatoDesk NoTouch OS comes with a nicer interface (Windows inspired) and ThinLinx TLXOS sports a clean minimalistic approach. Windows 11, to be able to run x86_64 apps on a Raspberry Pi is just awesome. Most of all I just love the fact that almost any major OS runs on a such an underpowered cheap device as a Raspberry and quite workable at that. As far as I know it is not yet possible to get MacOS running on a Raspberry Pi, but when some one manages to do so, Apple will still catagoricaly refuse to allow MacOS to run on any non Apple hardware. It most likely will allways be a EULA violation. That said, Windows has not been officially released for the Raspberry Pi, and as far as I know the ARM version is OEM only. But that may change in the future. (Bootcamp on M1 Macs? More ARM SoCs (other than Qualcomm) in the laptop/desktop space, who knows)