Why The Raspberry Pi?
In working with my customers over the years, end point management is something most struggle with to this day. Some choose to still provide their end users with fat clients, having to figure out how to manage the operating system and applications while making sure the device is secure. This tends to be a daunting challenge both from an operational and financial perspective. Others choose to leverage thin clients when possible but struggle in deciding what the right device is from a price and functionality pespective. A lot of times, they spend upwards of $500 on these thin clients, which still run a Windows Embedded OS that still needs to be managed and in some ways defeats the purpose of a thin client. While this is not true in every case, I would say that the end point management dillema is one of the biggest factors in virtualization initiatives stalling at my enterprise customers.
Over the past couple of weeks, I have been taking a closer look at the Rapsberry Pi. For those of you not familiar with the Raspberry Pi, I would highly recommend you check this out. While the use cases for the Pi are immense, what peaked my curiosity were recent blogs by Martin Rowan and Trond Eirik Haavarstein around how they leveraged the Pi as a thin client replacement for Citrix workloads.
Now before we go further, its important to understand why this was interest to me. First off, the device can be made highly secure by running stripped down Linux OS. Secondly, a Raspberry Pi 2 costs roughly $35. Tack on a case and adequate storage, the device is still under $50. So if there was a way to effectively deliver Citrix workloads leveraging this device, this would be the cheapest thin client out there! Not to mention a simple support and maintenance strategy, GET A NEW ONE! 🙂
How Does One Get Started?
I decided to get myself a Raspberry Pi 2 and give it a test run. I ordered the Vilros Raspberry Pi 2 Complete Starter Kit off of Amazon for around $55 (its around $70 now but price fluctuates). I would highly recommend going for a starter kit, either the one I got or the even more popular Canakit as these include everything you’ll need including wi fi adapter, case, hdmi cable, heat sinks, storage, power adapter etc. I also ordered a couple of additional micro SD cards. I wanted to have different OS builds on each of the cards, making it easy for me to showcase different solutions by just switching the micro SD cards on the Pi.
I looked at ThinLinx, Raspian Jessie and the Raspberry Pi Thin Client Project as potential options, but decided to start with ThinLinx and Raspbian Jessie. Before you get started, I highly recommend you read the this blog by Eric on Running Citrix workloads on ThinLinx and this blog by Martin Rowan on configuring and optimizing Citrix Receiver on Raspbian Jessie.
Approach 1: ThinLinx
Lets start with the ThinLinx build. ThinLinx OS (TLXOS) helps make effective thin clients out of old PC’s, Intel Compute Stick, Intel NUC and Raspberry Pi. TLXOS supports various protocols including Citrix HDX, RemoteFX 8.1, RDP. Intel showcased their NUC devices running ThinLinx at Citrix Summit this year. Check out the video. In addition Rachel Berry wrote an excellent blog about how Citrix leveraged Intel NUCs running ThinLinx for our Demos and Labs at Citrix Synergy 2015.
The process is as follows:
- Go to this website and download the TLXOS Installer for Raspberry Pi.
- Connect your micro SD card to your PC and run the TLXOS installer. This will format your micro SD card and copy the TLXOS image on the card.
- From the same website mentioned above, download the ThinLinx Management Software (TMS) and install the software on a windows test machine. This is fairly lightweight software and can run on a VM as well.
- Insert the micro SD card with TLXOS into the Raspberry PI and start it up.
- Run the TMS app on your PC, which will detect the PI running TLXOS. You can configure the PI running through the management software.
- In my case, I used TMS to make sure Citrix HDX is selected under the “Protocol” section. You could also choose “Web” and run in Kiosk mode if you’d like user to connect in that manner. You can also speficy a name for the device, upgrade software on the device, push SSL certs (required if your backend resources are running internal certs) etc.
- On the PI, specify the Native Receiver URL. You will then be prompted for your credentials. Once thats set, you are good to go! You should see your apps and desktops, which you can then launch.
Video showcasing Citrix on a Raspberry Pi 2 running TLXOS
My Thoughts on the ThinLinx Option.
ThinLinx adds about $10 to the cost of the solution, bringing it to $69 in my case. However that is still a lot cheaper than your main stream thin clients. In addition, you get complete management capabilities which is absolutely necessary in an Enterprise environment. TLXOS was extremely easy to get going and the functionality was superb both for regular compute and for multimedia. The Citrix HDX protocol on TLXOS supports H264 decode upto 30 fps at 1080p resolution. There was no tinkering to get receiver to work. It just worked! I did notice some artifacts with the mouse cursor (as you might notice in the video) but not all the time. Overall I was very pleased with the simplicity of the solution and the overall performance of Citrix Workloads on TLXOS.
Approach 2: Raspbian Jessie
Raspbian OS is based off of Debian Linux. Jessie is the current version. There are two versions available for the PI – a full desktop image and a minimal image. I went with the full image for my tests. The Raspbian Jessie solution that I tested was unmanaged, unlike ThinLinx. So I had to install the OS, install receiver, tweak parameters to optimize performance etc. Nonetheless, the end result was a great performing thin client. I followed Martin Rowan’s blog for the various tweaks. I will try and outline them once again but wanted to call out that the tweaks were from his blog. So here are the steps:
- Download the Raspbian Jessie full desktop image from this link.
- Download Win32DiskImager and install on your system
- Extract the Raspbian Jessie Image from the zip file
- Connect your micro SD card to your PC
- Run Win32DiskImager and use the extracted image as your source and the micro SD as your destination. This will format and copy the Raspian Jessie image on the SD card.
- At this point, remove the SD card from your PC and plug it into the Pi and boot the Pi.
- Run the following optimization commands in Raspbian Jessie. Once again, read Martin’s blog for more details.
- Expand Filesystem
sudo raspi-configand select option “1 Expand Filesystem“. Reboot the Pi.
sudo raspi-configand select option “4 Wait for Network at Boot“, then select the option for “Slow Wait for network connection before completing boot“.
- Expand Filesystem
- Install Citrix Receiver for ARM
- Download Citrix Receiver for ARM (ARMHF) from the following link (under Debian packages)
- Also download the USB Support package (ARMHF)
- Install the Receiver:
sudo gdebi icaclient_22.214.171.1242243_armhf.deb
- Install the USB Support package:
sudo gdebi ctxusb_2.5.322243_armhf.deb
- Further Optimizations (Optional)
- Increase Frame Buffer – Section 2.1 in Martin’s blog
- Switch to using libjpeg62-turbo – Section 2.2 in Martin’s blog
- Disable H264 Graphics – Section 2.3 in Martin’s blog
- Disable Mulimedia (HDX Mediastream redirection) – Section 2.4 on Martin’s blog.
- Overclock your Pi – Run raspi-config to overclock your Pi and get some additional juice.
- Start Receiver and specify URL to connect to your Citrix Storefront server. At this point you will be prompted for credentials.
- Now you will have access to your desktops and apps.
- I did run into an issue with Audio being routed over HDMI and not the headphone jack. To switch this back to the headphone jack, follow the instructions here
Video showcasing Citrix on a Raspberry Pi 2 running Raspian Jessie
Thoughts on Raspbian Jessie
My experience so far with Raspbian Jessie has been good. A little more tweaking and hacking as compared to ThinLinx, which worked out of the box. You get to install the latest receiver though. General performance for productivity apps was great and on par with ThinLinx. The boot was a lot faster than ThinLinx (<10 seconds).
Final thoughts based on testing so far
Is the Rasperry Pi a good solution for all use cases at the moment? Probably not. Does it fit a majority of the use cases? I would say so based on the testing so far. There are definitely some gaps, like having a power button perhaps (hopefully in Raspberry Pi 3), multi montor support to name a couple. Another major requirement for most organizations out there is Unified Communications, and in most cases, its Skype For Business. Citrix has excelled in supporting Lync and now Skype for Business in a virtualized environment while offering a native-like user experience with out of band peer to peer communication as far as voice and video traffic goes. Watch this video which compares the native vs optimized user experience side by side. One of the pieces that makes this possible is the Real Time Media Engine (RTME) which is installed on the client. Today, there is no RTME client for the ARM processor. You can still support Sype but all the processing will occur on the backend servers. I am sure an ARM based RTME client is on the list of good to have’s for Citrix and its probably just a matter of time, especially with the rapid popularity of ARM based devices like the Pi and Intel Compute Sticks. Hoping my friend and fellow citrite Scott Lane will work some magic to make this happen 🙂 Read this blog by Chris Fleck on why he believes the Raspberry Pi could totally disrupt the PC industry. I tend to agree with Chris.
I will soon be testing the Raspberry Pi Thin Client Project, specifically the 1.99 release which has Citrix Receiver 13.3 bundled in. I hope to have a follow up blog on this. On the fun side, I plan to build an Arcade Machine for my kids based on the Pi and perhaps even a media center, although I really love my Roku 🙂 Check out some of the fun projects out there based on the Pi. As always I look forward to everyone’s feedback and do comment if you have ideas on future blog topics.