Hey, so I thought I would just create a post on how to create a cheap Thin Client like device which can be used to access Citrix remotely. The latest version of Citrix Workspace App ( previously known as receiver / ica client ) for Linux now contains HDX for Microsoft Teams but does require a couple of dependencies.
Prep the Pi
Teams is Microsoft’s new Skype and Slack-killer. But how well does it go on Citrix? Note – this article is now redundant. For updated information on Teams deployment on Citrix or other VDI/RDSH platforms, please see this series of articles. Oh come sweet asteroid of death. Description The Citrix Workspace app allows for secure, unified access to all of your SaaS apps, web apps, virtual apps, files, and desktops. If your company uses Citrix, simply login with your company credentials to access all of the resources you need to be productive from anywhere.
I have tested this on both the Raspberry Pi 3 and 4 which both worked well. First, we need to do is head over to https://www.raspberrypi.org/downloads/raspberry-pi-os/ and download the desktop image.
Once downloaded, unzip and write to the MicroSD Card with your favourite tool, alternative see the instructions at https://www.raspberrypi.org/documentation/installation/installing-images/ for a guide on how to do it.
Next, we need to boot your new Raspberry Pi OS installation and run through the setup process. Ensure you install the latest updates and reboot as part of the wizzard!!
Once rebooted we will now need to install some bits to get the HDX, WebCam and SaaS working nicely with Citrix. Firstly open the terminal using the shortcut on the taskbar at the top of the screen.
Next, we need to use the package manager to install the required packages.
Download Citrix
Unfortunately due to Citrix's licensing structure, you will not find it in the software centre or via apt. They also make it hard to link directly to packages so we will have to do download the packages manually
Go to https://www.citrix.com/en-gb/downloads/workspace-app/linux/workspace-app-for-linux-latest.html and look for 'Debian packages' under Available Downloads.
Under here select 'Web Packages Only'
And then locate the 'Citrix Workspace app for Linux Web Client (ARM HF)' and click Download file.
Optional - USB Support
If you want USB support then under 'USB Packages' download the ARM HF version as above.
Install Citrix Packages
Once downloaded you will need to open the terminal again.
Then you will need to change to your downloads directory and run the dpkg command
This will now have installed the Citrix client ( and USB support if specified ) to your PI.
Webcam & Mic
There is one last step required to enable WebCam and Microphone to be enabled in your Citrix session. Again from a terminal run
This will open the preference tools, select the 'Mic & Webcam' tab and select the option 'Use my microphone and webcam'
And there you go, you are now ready to use your Pi to access Citrix and use MS Teams with full HDX support :)
Troubleshooting
- If HDX is not working then open a termin and run
this will check that you have all the dependencies installed and flag up any that are not.
- I also found that using my bluetooth headset ( UpRoar Wireless Headphones ) crash the citrix session. Use a USB headset/microphone worked ok.
- If you have issues with sound / speed then perform the usual checks
- Kick the kids off the wifi
- Try going hardwired instead of wifi
- Run a speed test
- Reboot your router
After thoughts
Great, that is good for the Pi but what about my Ubuntu Laptop/Desktop?
Well form the Citrix Debian Packages select x86_64 packages and follow the above.
You will need to install the following package versions on Ubuntu vs the Pi.
Learn how to use Microsoft Teams Optimization for Citrix. Citrix Virtual Apps and Desktops, along with Citrix SD-WAN, can optimize Microsoft Teams and provide a great user experience.
Now organizations can centrally deploy Microsoft Teams within their virtual environments and deliver a fully-featured Microsoft Teams experience, but also giving IT admins the benefits of centralized management.
Citrix delivers optimization for desktop-based Microsoft Teams using Citrix Virtual Apps and Desktops and Citrix Workspace app. By default, we bundle all the necessary components into Citrix Workspace app and the Virtual Delivery Agent (VDA). ( Microsoft Teams Optimization with Citrix )
Our optimization for Microsoft Teams contains VDA-side HDX services and API to interface with the Microsoft Teams hosted app to receive commands. These components open a control virtual channel (CTXMTOP) to the Citrix Workspace app-side media engine. The endpoint decodes and renders the multimedia locally. Reverse seamless snaps-in the local Citrix Workspace app window back into the hosted Microsoft Teams app.
Authentication and signaling occurs natively on the Microsoft Teams-hosted app, just like the other Microsoft Teams services (for example chat or collaboration). Audio/video redirection doesn’t affect them.
CTXMTOP
is a command and control virtual channel. That means that media is not exchanged between the Citrix Workspace app and the VDA.
Microsoft Teams Citrix Support
Only Client-fetch/client-render is available.
Microsoft Teams installation
To start using Microsoft Teams Optimization for Citrix. Citrix recommends you to follow the Microsoft Teams machine-wide installation guidelines and avoid using the .exe installer that installs Teams in Appdata
. Instead, install in C:Program Files (x86)MicrosoftTeams
by using the ALLUSER=1 flag from the command line. In this mode, the Teams application doesn’t auto-update whenever there is a new version. We recommend this mode for non-persistent environments. For more information, see Install Microsoft Teams using MSI (VDI Installation section).
If you have dedicated persistent VDI environments and you want the Teams application to auto-update and would prefer Teams to install per-user under Appdata/Local
, use the .exe installer or the MSI without ALLUSER =1.
If using Citrix App Layering to manage VDA and Microsoft Teams installations in different layers, deploy this registry key on Windows before installing Teams with ALLUSER =1:
HKEY_LOCAL_MACHINESOFTWARECitrix
Or
HKEY_LOCAL_MACHINESOFTWAREWOW6432NodeCitrix
Create an empty registry key named PortICA
(leave the default Name, Type, and Data).
Profile Management recommendations
When the ALLUSER =1
flag is passed to the MSI from the command line, the Teams app installs under C:Program Files
(~300 MB). The app uses AppDataLocal
for logs and AppDataRoamingMicrosoftTeams
for user specific configurations, caching of elements in the user interface, and so forth.
System requirements
Minimum version – Delivery Controller (DDCs) 1906.2:
Supported operating systems:
- Windows Server 2019, 2016, 2012R2 Standard and Datacenter Editions, and with the Server Core option
Minimum version – Virtual Delivery Agents (VDAs) 1906.2:
Supported operating systems:
- Windows 10 64-bit, minimum versions 1607 up to 1909.
- Windows Server 2019, 2016, and 2012 R2 (Standard and Datacenter Editions).
Requirements:
- BCR_x64.msi – the MSI that contains the Microsoft Teams optimization code and starts automatically from the GUI. If you’re using the command line interface for the VDA installation, don’t exclude it.
Recommended version – Citrix Workspace app 2002 for Windows and Minimum version – Citrix Workspace app 1907 for Windows:
- Windows 7, 8, and 10 (32-bit and 64-bit editions, including Embedded editions)
- Windows 10 IoT Enterprise 2016 LTSB (v1607) and 2019 LTSC (v1809)
- Endpoint requirement: Approximately 2.2–2.4 GHz dual core CPU that can support 720p HD resolution during a peer-to-peer video conference call.
- Dual or quad-core CPUs with lower base speeds (~1.5 GHz) equipped with Intel Turbo Boost or AMD Turbo Core that can boost up to at least 2.4 GHz.
- HP Thin Clients verified: t630/t640, t730/t740, mt44/mt45.
- Dell Thin Clients verified: 5070, 5470 Mobile TC.
- 10ZiG Thin Clients verified: 4510 and 5810q.
- For a complete list of verified endpoints, see Thin Clients.
- Citrix Workspace app requires a minimum of 600 MB free disk space and 1 GB RAM.
- Microsoft .NET Framework minimum requirement is version 4.6.2. Citrix Workspace app automatically downloads and installs .NET Framework if it is not present in the system.
Enable optimization of Microsoft Teams
To enable optimization for Microsoft Teams, use the Studio policy described in Microsoft Teams redirection policy (it is ON by default). In addition to this policy being enabled, HDX checks to verify that the version of Citrix Workspace app is equal to or greater than the minimum required version. If you enabled the policy and the Citrix Workspace app version is supported, the HKEY_CURRENT_USERSoftwareCitrixHDXMediaStreamMSTeamsRedirSupport registry key is set to 1 automatically on the VDA. The Microsoft Teams application reads the key to load in VDI mode.
If you click About > Version, the Optimized for Citrix legend displays
If you don’t see Optimized for Citrix, exit Teams by right clicking on the notification area icon and restart.
Citrix HDX Optimization for Microsoft Teams
These components are by default, bundled into Citrix Workspace app and the Virtual Delivery Agent (VDA)
Call Flow
Microsoft Teams Citrix Hdx
- Launch Microsoft Teams.
- Teams authenticates to O365. Tenant policies are pushed down to the Teams client, and relevant TURN and signaling channel information is relayed to the app.
- Teams detects that it is running in a VDA and makes API calls to the Citrix JavaScript API.
- Citrix JavaScript in Teams opens a secure WebSocket connection to WebSocketService.exe running on the VDA (127.0.0.1:9002). WebSocketService.exe runs as a Local System account on session 0. WebSocketService.exe performs TLS termination and user session mapping, and spawns WebSocketAgent.exe, which now runs inside the user session.
- WebSocketAgent.exe instantiates a generic virtual channel by calling into the Citrix HDX Browser Redirection Service (CtxSvcHost.exe).
- Citrix Workspace app’s wfica32.exe (HDX engine) spawns a new process called HdxTeams.exe, which is the new WebRTC engine used for Teams optimization.
- HdxTeams.exe and Teams.exe have a 2-way virtual channel path and can start processing multimedia requests.—–User calls——
- Peer A clicks the call button. Teams.exe communicates with the Teams services in Azure establishing an end-to-end signaling path with Peer B. Teams asks HdxTeams for a series of supported call parameters (codecs, resolutions, and so forth, which is known as a Session Description Protocol (SDP) offer). These call parameters are then relayed using the signaling path to the Teams services in Azure and from there to the other peer.
- The SDP offer/answer (single-pass negotiation) and the Interactive Connectivity Establishment (ICE) connectivity checks (NAT and Firewall traversal using Session Traversal Utilities for NAT (STUN) bind requests) complete. Then, Secure Real-time Transport Protocol (SRTP) media flows directly between HdxTeams.exe and the other peer (or O365 conference servers if it is a Meeting).