Citrix Virtual Apps and Desktops

Optimization for Microsoft Teams

Important:

Optimization for Microsoft Teams requires a minimum of Microsoft Teams version 1.2.00.31357.

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 the Citrix Workspace app and the Virtual Delivery Agent (VDA).

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.

Only Client-fetch/client-render is available.

This video demo gives you an idea of how Microsoft Teams works in a Citrix virtual environment.

Optimization for Microsoft Teams demo

Microsoft Teams installation

Note:

We recommend installing the VDA before installing Teams in the golden image. This installation order is necessary for the ALLUSER=1 flag to take effect. If the virtual machine had Teams installed before the VDA was installed, uninstall and reinstall Teams. If you are using App Layering, see the App Layering instructions at the end of this section for more details.

We recommend you 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)\Microsoft\Teams by using the ALLUSER=1 flag from the command line.

msiexec /i <path_to_msi> /l*v <install_logfile_name> ALLUSER=1 ALLUSERS=1

This example also uses the ALLUSERS=1 parameter. When you set this parameter, the Teams Machine-Wide Installer appears in Programs and Features in the Control Panel and in Apps & features in Windows Settings for all users of the computer. All users can then uninstall Teams if they have administrator credentials. It’s important to understand the difference between ALLUSERS=1 and ALLUSER=1. You can use the ALLUSERS=1 parameter in non-VDI and VDI environments. Use the ALLUSER=1 parameter only in VDI environments to specify a per-machine installation.

In ALLUSER=1 mode, the Teams application doesn’t auto-update whenever there is a new version. We recommend this mode for non-persistent environments. For example, hosted shared apps or desktops out of a Windows Server or Windows 10 random/pooled catalogs. For more information, see Install Microsoft Teams using MSI (VDI Installation section).

You have Windows 10 dedicated persistent VDI environments. 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.

For App Layering:

WARNING:

Editing the registry incorrectly can cause serious problems that might require you to reinstall your operating system. Citrix cannot guarantee that problems resulting from the incorrect use of Registry Editor can be solved. Use Registry Editor at your own risk. Be sure to back up the registry before you edit it. Create an empty registry key named PortICA (leave the default Name, Type, and Data).

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_MACHINE\SOFTWARE\Citrix

Or

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Citrix

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 AppData\Local for logs and AppData\Roaming\Microsoft\Teams 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, versions 1607 and higher.
  • 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 2006.1 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)
  • Processor (CPU) architectures supported: x86 and x64 (ARM is not supported)
  • 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.

Minimum version - Citrix Workspace app 2006 for Linux:

For more information, see Optimization for Microsoft Teams in What’s new in 2006.

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 the 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_USER\Software\Citrix\HDXMediaStream\MSTeamsRedirSupport registry key is set to 1 automatically on the VDA. The Microsoft Teams application reads the key to load in VDI mode.

Note:

If you are using version 1906.2 VDAs or higher with older Controller versions (for example, version 7.15), which do not have the policy available in Studio, you can still be optimized because HDX optimization for Microsoft Teams is enabled by default in the VDA.

If you click About > Version, the Citrix HDX Optimized legend displays:

Optimized for Citrix legend

If you see Citrix HDX Not Connected instead, the Citrix API is loaded in Teams (which is the first step towards redirection), but there was an error in the subsequent parts of the stack. The error is most likely in the VDA services or the Citrix Workspace app).

Not optimized for Citrix legend

If you don’t see any legend, Teams failed to load the Citrix API. Exit Teams by right-clicking on the notification area icon and restart. Make sure the Studio policy is not set to Prohibited, and that the Citrix Workspace app version is supported.

No Citrix legend

Network requirements

Microsoft Teams relies on Media Processor servers in Office 365 for meetings or multiparty calls. Microsoft Teams relies on Office 365 Transport Relays for these scenarios:

  • Two peers in a point-to-point call do not have direct connectivity
  • A participant does not have direct connectivity to the media processor.

Therefore, the network health between the peer and the Office 365 cloud determines the performance of the call.

We recommend evaluating your environment to identify any risks and requirements that can influence your overall cloud voice and video deployment. Use the Skype for Business Network Assessment Tool to test if your network is ready for Microsoft Teams. For support information, see Support section.

Summary of key network recommendations for Real Time Protocol (RTP) traffic:

  • Connect to the Office 365 network as directly as possible from the branch office.
  • If you must use any of the following at the branch office, ensure that RTP/UDP Teams traffic is unhindered. HdxTeams.exe doesn’t honor explicit proxies configured on the endpoint.
    • Bypass proxy servers
    • Network SSL intercept
    • Deep packet inspection devices
    • VPN hairpins (use split tunneling if possible)
  • Plan and provide sufficient bandwidth.
  • Check each branch office for network connectivity and quality.

The WebRTC media engine in the Workspace app (HdxTeams.exe) uses the Secure Real-time Transport Protocol (SRTP) for multimedia streams that are offloaded to the client. SRTP provides confidentiality and authentication to RTP by using symmetric keys (128 bit) to encrypt media and control messages, and uses the AES encryption cipher in counter mode.

The following metrics are recommended for guaranteeing a positive user experience:

Metric Endpoint to Office 365
Latency (one way) < 50 msec
Latency (RTT) < 100 msec
Packet Loss <1% during any 15s interval
Packet inter-arrival jitter <30ms during any 15s interval

For more information, see Prepare your organization’s network for Microsoft Teams.

In terms of bandwidth requirements, optimization for Microsoft Teams can use a wide variety of codecs for audio (OPUS/G.722/PCM G711) and video (H264/VP9).

The peers negotiate these codecs during the call establishment process using the Session Description Protocol (SDP) Offer/Answer. Citrix minimum recommendations are:

Type Bandwidth Codec
Audio (each way) ~ 90 kbps G.722
Audio (each way) ~ 60 kbps Opus*
Video (each way) ~ 700 kbps H264 360p @ 30 fps 16:9
Video (each way) ~ 2,500 kbps VP9 720p @ 30 fps 16:9
Screen sharing ~ 300 kbps H264 1080p @ 15 fps

* Opus supports constant and variable bitrate encoding from 6 kbps up to 510 kbps.

Opus and VP9 are the preferred codecs for peer-to-peer calls between two optimized VDI users.

G.722 and H264 are the preferred codecs for a VDI user joining a meeting.

Call establishment and media flow paths

When possible, the HDX media engine in the Citrix Workspace app (HdxTeams.exe) tries to establish a direct network Secure Real-time Transport Protocol (SRTP) connection over User Datagram Protocol (UDP) in a peer-to-peer call. If the UDP ports are blocked, the media engine falls back to TCP 443.

The HDX media engine supports ICE, Session Traversal Utilities for NAT (STUN), and Traversal Using Relays around NAT (TURN) for candidate discovery and connection establishment.

If there is no direct path between the two peers or between a peer and a conference server (if the user is joining a multi-party call or meeting), HdxTeams.exe uses a Microsoft Teams transport relay server in Office 365 to reach the other peer or the media processor (where meetings are hosted). The user’s client machine must have access to two Office 365 subnet IP address ranges and 4 UDP ports. For more information, see the Architecture diagram in the “Call setup” section further down and Office 365 URLs and IP address ranges ID 11.

ID Category Addresses Destination Ports
11 Optimize required 13.107.64.0/18, 52.112.0.0/14, 52.120.0.0/14 UDP: 3478, 3479, 3480, 3481, TCP: 443 (fallback)

These ranges contain both Transport Relays and media processors. The Teams Transport Relays provide STUN and TURN functionality, but they are not ICE endpoints. Also, the Teams Transport Relays do not terminate media nor perform any transcoding. They can bridge TCP (if HdxTeams.exe uses TCP) to UDP when they forward traffic to other peers or media processors.

HdxTeams.exe contacts the closest Microsoft Teams Transport Relay in the Office 365 cloud. HdxTeams.exe uses anycast IP and port 3478–3481 UDP (different UDP ports per workload, though multiplexing can happen) or 443 TCP TLSv1.2 for fallbacks. Call quality depends on the underlying network protocol. Because UDP is always recommended over TCP, we advise you to design your networks to accommodate UDP traffic in the branch office.

If Teams loaded in optimized mode and HdxTeams.exe is running on the endpoint, Interactive Connectivity Establishment (ICE) failures might cause a call setup failure or one-way-only audio/video. When a call cannot be completed or media streams are not full duplex, check the Wireshark trace on the endpoint first. For more information about the ICE candidate gathering process, see “Collecting logs” in the Support section.

Note:

If the endpoints don’t have internet access, it might still be possible for the user to make a peer-to-peer call only if they are on the same LAN. Meetings fail. In this case, there is a 30 second timeout before the call setup begins.

Call setup

Use this architecture diagram as a visual reference for the call flow sequence. The corresponding steps are indicated in the diagram.

Architecture:

How optimization for Microsoft Teams works

  1. Launch Microsoft Teams.
  2. 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.
  3. Teams detects that it is running in a VDA and makes API calls to the Citrix JavaScript API.
  4. Citrix JavaScript in Teams opens a secure WebSocket connection to WebSocketService.exe running on the VDA (127.0.0.1:9002), which spawns WebSocketAgent.exe inside the user session.
  5. WebSocketAgent.exe instantiates a generic virtual channel by calling into the Citrix HDX Teams Redirection Service (CtxSvcHost.exe).
  6. 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.
  7. HdxTeams.exe and Teams.exe have a 2-way virtual channel path and can start processing multimedia requests.

    —–User calls——

  8. Peer A clicks the call button. Teams.exe communicates with the Teams services in Office 365 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 Office 365 and from there to the other peer.
  9. The SDP offer/answer (single-pass negotiation) takes place through the signaling channel, and the 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 Office 365 conference servers if it is a meeting).

Microsoft Phone System

Phone System is Microsoft’s technology that enables call control and PBX capabilities in the Office 365 cloud with Microsoft Teams. Optimization for Microsoft Teams supports Phone System, using Office 365 Calling Plans or Direct Routing. With Direct Routing, you connect your own supported session border controller to the Microsoft Phone System directly without any additional on-premises software.

Firewall considerations

When users initiate an optimized call using the Microsoft Teams client for the first time, they might notice a warning with the Windows firewall settings. The warning asks for users to allow communication for HdxTeams.exe (HDX Overlay Teams).

Firewall warning

The following four entries are added under Inbound Rules in the Windows Defender Firewall > Advanced Security console. You can apply more restrictive rules if desired.

Firewall inbound rules

Microsoft Teams and Skype for Business Coexistence

You can deploy Microsoft Teams and Skype for Business side by side, as two separate solutions with overlapping capabilities. For more information, see Understand Microsoft Teams and Skype for Business coexistence and interoperability.

Citrix RealTime Optimization Pack and HDX optimization for Teams multimedia engines then honor whatever configuration is set in your environment (for example, island modes, Skype for Business with Teams collaboration, Skype for Business with Teams collaboration and meetings).

Peripheral access can be granted only to a single application at the time. For example, webcam access by the RealTime Media Engine during a call locks the imaging device during a call. When the device is released, it becomes available for Teams.

Teams and Skype coexistence

Citrix SD-WAN: optimized network connectivity for Microsoft Teams

Optimal audio and video quality require a network connection to the Office 365 cloud that has low latency, low jitter, and low packet loss. Backhauling of Microsoft Teams audio-video RTP traffic from Citrix Workspace app users at branch office locations to a data center before going to the internet can add excessive latency and might also cause congestion on WAN links. Citrix SD-WAN optimizes connectivity for Microsoft Teams following Microsoft Office 365 network connectivity principles. Citrix SD-WAN uses the Microsoft REST-based Office 365 IP address and web service and proximate DNS to identify, categorize, and steer Microsoft Teams traffic.

Business broadband internet connections in many areas suffer from intermittent packet loss, periods of excessive jitter, and outages.

Citrix SD-WAN offers two solutions to preserve Microsoft Teams audio-video quality when network health is variable or degraded.

  • If you use Microsoft Azure, a Citrix SD-WAN virtual appliance (VPX) deployed in the Azure VNET provides advanced connectivity optimizations. These optimizations include seamless link failover and audio packet racing.
  • Alternatively, Citrix SD-WAN customers can connect to Office 365 through the Citrix Cloud Direct service. This service provides reliable and secure delivery for all internet-bound traffic.

If the quality of the branch office internet connection is not a concern, it might be sufficient to minimize latency by steering Microsoft Teams traffic directly from the Citrix SD-WAN branch appliance to the nearest Office 365 front door. For more information, see Citrix SD-WAN Office 365 optimization.

Citrix SD-WAN

Only a single incoming video stream is supported in meetings or group calls. When there are multiple participants sending their video, only the dominant speaker’s video is shown at any time. There might be one- or two-seconds delay between the time a speaker is detected as active and the time the video feed displays.

Screen sharing in Microsoft Teams

Microsoft Teams relies on video-based screen sharing (VBSS), effectively encoding the desktop being shared with video codecs like H264 and creating a high-definition stream. With HDX optimization, incoming screen sharing is treated as a video stream. Therefore, if you are in the middle of a video call and the other peer starts to share the desktop, that original camera video feed is paused. Instead, the screen sharing video feed displays. The peer must then manually resume the camera sharing.

Important:

You can use screen sharing only when you have an audio or video call active, and not directly from a chat window that doesn’t have audio or video.

Outgoing screen sharing is also optimized and offloaded to the Citrix Workspace app (version 1907 or higher). In this case, HdxTeams.exe captures and transmits only the Citrix Desktop Viewer (CDViewer.exe) window. If you want to share a local application running in your client machine, you can overlay it on top of CDViewer and it is also captured.

Multi-monitor: In cases where CDViewer is in full screen mode and spanning across multi-monitor setups, only the primary monitor is shared. Users must drag the application of interest inside the virtual desktop to the primary monitor for the other peer on the call to see it.

Screen sharing

Note:

If you are publishing Teams as a stand-alone seamless application, screen sharing captures the local desktop of your physical endpoint in Citrix Workspace app minimum version 1909.

Peripherals in Microsoft Teams

When optimization for Microsoft Teams is active, the Citrix Workspace app accesses the peripherals (headset, microphone, cameras, speakers, and so forth). Then the peripherals are properly enumerated in the Microsoft Teams UI (Settings > Devices).

Optimization mode for Microsoft Teams

Microsoft Teams does not access the devices directly. Instead, it relies on HdxTeams.exe for acquiring, capturing, and processing the media. Microsoft Teams lists the devices for the user to select.

Recommendations:

  • Microsoft Teams certified headsets with built-in echo cancellation. In setups with multiple peripherals, where microphone and speakers are on separate devices an echo might be present. For example, a webcam with a built-in microphone, and a monitor with speakers. When using external speakers, place them as far as possible from the microphone and from any surface that might refract the sound into the microphone.
  • Microsoft Teams certified cameras, although Skype for Business certified peripherals are compatible with Microsoft Teams.
  • HdxTeams.exe cannot take advantage of CPU offloading with webcams that perform on-board H.264 encoding -UVC 1.1 and 1.5.

Note:

HdxTeams.exe supports only these specific audio device formats (channels, bit depth, and sample rate):

  • Playback Devices: up to 2 channels, 16 bit, frequencies up to 96,000 Hz
  • Recording Devices: up to 4 channels, 16 bit, frequencies up to 96,000 Hz

Even if one speaker or microphone does not match the expected settings, device enumeration in Teams fails and None displays under Settings > Devices.

Webrpc logs in HdxTeams.exe show this type of information:

Mar 27 20:58:22.885 webrtcapi.WebRTCEngine Info: init. initializing...

Mar 27 20:58:23.190 webrtcapi.WebRTCEngine Error: init. couldn't create audio module!

As a workaround, open the Sound Control Panel (mmsys.cpl), select the playback or recording device, go to Properties > Advanced and change the settings to a supported mode. Alternatively, disable the specific device.

Fallback mode

If Microsoft Teams fails to load in optimized VDI mode, the VDA uses legacy HDX technologies like Webcam redirection and client audio and microphone redirection. In the unoptimized mode, the peripherals are mapped to the VDA. The peripherals appear to the Microsoft Teams app as if they were locally attached to the virtual desktop.

To determine if you are in optimized or unoptimized mode when looking at the Settings > Devices tab in Teams, the most significant difference is the camera name. If Microsoft Teams loaded in unoptimized mode, legacy HDX technologies launch. The webcam name has the Citrix HDX suffix as shown in the following graphic. The speaker and microphone device names might be slightly different (or truncated) when compared to the optimized mode.

Unoptimization mode for Microsoft Teams

When legacy HDX technologies are used, Microsoft Teams doesn’t offload audio, video, and screen sharing processing to the endpoint’s Citrix Workspace app WebRTC media engine. Instead, HDX technologies use server-side rendering. Expect high CPU consumption on the VDA when you turn on video. Real time audio performance might not be optimal.

Known limitations

Limitations Comments
Screen sharing - An active call is required to share your screen. Screen sharing from a chat window is not supported. Teams dependency – Contact Microsoft
Pop out chat is not supported. Citrix and Microsoft limitation
Gallery view - Active speaker only. Teams dependency – Contact Microsoft for when to expect Gallery View (2x2)
HID buttons - Answer and end call not supported. Volume up and down are supported. Citrix Workspace app limitation
When switching the peripheral input or output in Settings > Devices in the middle of the call, you might experience a one second audio glitch.  
When doing screen sharing in multi-monitor setups, only the main monitor is shared. Citrix Workspace app limitation
When you configure the Citrix Workspace app High DPI setting to No, use the native resolution, the redirected video window appears out place when the monitor’s DPI scaling factor is set to anything above 100%. Citrix Workspace app limitation
We don’t support Dual Tone Multi Frequency (DTMF) interaction with telephony systems. Citrix Workspace app limitation
When doing screen sharing, the option include system audio is not available. Citrix and Microsoft limitation
Interoperability with Skype for Business is limited to audio calls, no video modality. Microsoft limitation
Incoming and outgoing video stream maximum resolution is 720p. Teams dependency – contact Microsoft for when to expect 1080p
We support only one video stream from an incoming camera or screen share stream. When there’s an incoming screen share, that screen share is shown it instead of the video of the dominant speaker. Teams dependency – contact Microsoft
Outgoing screen sharing: Application sharing is not supported. Citrix Workspace app and VDA limitation
We don’t support live events. Citrix and Teams limitation
Give control and take control: Not supported during a screen sharing or application sharing session and supported during a PowerPoint sharing session. Teams dependency – contact Microsoft
In outgoing screen sharing, the mouse pointer is not captured Citrix limitation
Secondary ringer (Teams > Settings > Devices) is not supported Citrix limitation
During a call, if a user opens a file shared through Microsoft Teams, the call might disconnect. Microsoft limitation
PSTN call ringback tone is not supported Teams dependency – Contact Microsoft
The Call Quality Dashboard for Microsoft Teams does not display data for VDI users Teams limitation – Contact Microsoft

Monitor Teams

This section provides guidelines for monitoring Microsoft Teams optimization with HDX. If the user is running in optimized mode and HdxTeams.exe is running on the client machine, there is a process in the VDA called WebSocketAgent.exe running in the session. Use the Activity Manager in Director to see the application.

Monitor Teams in Activity Manager

With the VDA minimum version 1912, you can monitor active Teams calls using the Citrix HDX Monitor (minimum version 3.11). The Citrix Virtual Apps and Desktops product ISO contains the latest hdxmonitor.msi in the folder layout\image-full\Support\HDX Monitor.

For more information, see Monitoring in the Knowledge Center article CTX253754.

Troubleshoot

This section provides troubleshooting tips for issues that you might encounter when using optimization for Microsoft Teams. Further information can be found in CTX253754.

On the Virtual Delivery Agent

There are four services installed by BCR_x64.msi. Only two are responsible for Microsoft Teams redirection in the VDA.

Four services installed by browser content redirection

  • Citrix HDX Teams Redirection Service establishes the virtual channel used in Microsoft Teams. The service relies on CtxSvcHost.exe.

  • Citrix HDX HTML5 Video Redirection Service runs as WebSocketService.exe listening on 127.0.0.1:9002 TCP. WebSocketService.exe performs two main functions:

    i. TLS termination for secure WebSockets receives a secure WebSocket connection from vdiCitrixPeerConnection.js, which is a component inside the Microsoft Teams app. You can track it with the Process Monitor. For more information about certificates, see the section “TLS and HTML5 video redirection, and browser content redirection” under Communication between Controller and VDA.

    Some antivirus and desktop security software interferes with the proper functioning of WebSocketService.exe and its certificates. While the Citrix HDX HTML5 Video Redirection service might be running in the services.msc console, the localhost 127.0.0.1:9002 TCP socket is never in listening mode as seen in netstat. Trying to restart the service causes it to hang (“Stopping…”). Ensure you apply the proper exclusions for the WebScoketService.exe process.

    Process Monitor

    ii. User session mapping. When the Microsoft Teams application starts, WebSocketService.exe starts the WebSocketAgent.exe process in the user’s session in the VDA. WebSocketService.exe runs in Session 0 as a LocalSystem account.

    WebSocketAgent.exe service

    You can use netstat to check if the WebSocketService.exe service is in an active listening state in the VDA.

    Run netstat -anob -p tcp from an elevated command prompt window:

    Run netstat example

    On a successful connection, the state changes to ESTABLISHED:

    Successful netstat example

Important:

WebSocketService.exe listens in two TCP sockets, 127.0.0.1:9001 and 127.0.0.1:9002. Port 9001 is used for browser content redirection and HTML5 video redirection. Port 9002 is used for Microsoft Teams redirection. Ensure that you don’t have any proxy configurations in the Windows OS of the VDA that can prevent a direct communication between Teams.exe and WebSocketService.exe. Sometimes, when you configure an explicit proxy in Internet Explorer 11 (Internet Options > Connections > LAN settings > Proxy Server), connections might flow through an assigned proxy server. Verify that Bypass proxy server for local addresses is checked when using a manual and explicit proxy setting.

Services locations and descriptions

Service Path to executable in Windows Server OS Log on as Description
Citrix HTML5 Video Redirection Service “C:\Program Files (x86)\Citrix\System32\WebSocketService.exe” /service Local System account Provides multiple HDX Multimedia services with the initial framework required to perform media redirection between the virtual desktop and the endpoint device.
Citrix HDX Browser Redirection Service “C:\Program Files (x86)\Citrix\System32\CtxSvcHost.exe” -g BrowserRedirSvcs This account (local service) Provides browser content redirection between the endpoint device and the virtual desktop.
Citrix Port Forwarding Service “C:\Program Files (x86)\Citrix\System32\CtxSvcHost.exe” -g PortFwdSvcs This account (local service) Provides port forwarding between the endpoint device and the virtual desktop for browser content redirection.
Citrix HDX Teams Redirection Service “C:\Program Files (x86)\Citrix\System32\CtxSvcHost.exe” -g TeamsSvcs Local System account Provides Microsoft Teams redirection between the endpoint device and the virtual desktop.

Citrix Workspace app

On the user’s endpoint, the Citrix Workspace app for Windows instantiates a new service called HdxTeams.exe. It does so when Microsoft Teams launches in the VDA and the user tries to call or access peripherals in self-preview. If you don’t see this service, check the following:

  1. Ensure that you installed as a minimum the Workspace App version 1905 for Windows. Do you see HdxTeams.exe and the webrpc.dll binaries in the Workspace app installation path?
  2. If you validated step1, do the following to check if HdxTeams.exe is getting launched.
    1. Exit Microsoft Teams on the VDA.
    2. Start services.msc on VDA.
    3. Stop the Citrix HDX Teams Redirection Service.
    4. Disconnect the ICA session.
    5. Connect the ICA session.
    6. Start the Citrix HDX Teams Redirection Service.
    7. Restart the Citrix HDX HTML5 Video Redirection Service.
    8. Launch Microsoft Teams on the VDA.
  3. If you still don’t see HdxTeams.exe being launched on the client endpoint, do the following:
    1. Restart the VDA.
    2. Restart the client endpoint.

Support

Citrix and Microsoft jointly support the delivery of Microsoft Teams from Citrix Virtual Apps and Desktops using optimization for Microsoft Teams. This joint support is the result of close collaboration between the two companies. If you have valid support contracts and you experience an issue with this solution, open a support ticket with the vendor whose code you suspect to be causing the issue. That is, Microsoft for Teams or Citrix for the optimization components.

Citrix or Microsoft receives the ticket, triages the issue, and escalates as appropriate. There is no need for you to contact each company’s support team.

When you have a problem, we recommend you click Help > Report a Problem in the Teams UI. VDA-side logs are automatically shared between Citrix and Microsoft to resolve technical issues faster.

Collecting logs

HDXTeams.exe logs can be found on the user’s machine at %TEMP% inside the HDXTeams folder (AppData/Local/Temp/HDXTeams). Look for a .txt file called webrpc_Day_Month_timestamp_Year.txt.

When establishing a call, these four ICE phases are required:

  • Candidate gathering
  • candidate exchange
  • Connectivity checks (STUN bind requests)
  • Candidate promotion

In the HdxTeams.exe logs, the following entries are the relevant Interactive Connectivity Establishment (ICE) entries. These entries must be there for a call set-up to succeed (see this sample snippet for the gathering stage):

RPCStubs Info: -> device id = \\?\display#int3470#4&1835d135&0&uid13424#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\{bf89b5a5-61f7-4127-a279-e187013d7caf} label = Microsoft Camera Front groupId =

webrtcapi.RTCPeerConnection Info: createOffer. audio = 1 video = 1
webrtcapi.RTCPeerConnection Info: setLocalDescription.
>>> begin:sdp
[…]

webrtcapi.RTCPeerConnection Info: OnSignalingChange. signaling state = HaveLocalOffer

webrtcapi.RTCPeerConnection Info: OnIceGatheringChange. state = Gathering

[…]
>>> begin:sdp
candidate:840548147 1 udp 2122194687 10.108.124.215 56927 typ host generation 0 ufrag oVk6 network-id 1
<<< end:sdp
[…]
>>> begin:sdp
candidate:1938109490 1 udp 24911871 52.114.xxx.xxx 52786 typ relay raddr 73.205.xxx.x rport 25651 generation 0 ufrag dDML network-id 1 network-cost 10
<<< end:sdp
[…]
>>> begin:sdp
candidate:4271145120 1 udp 1685987071 66.xxx.xxx.xxx 55839 typ srflx raddr 10.108.124.215 rport 55839 generation 0 ufrag uAVH network-id 1
<<< end:sdp
[…]

webrtcapi.RTCPeerConnection Info: OnIceGatheringChange. state = Complete webrtcapi.RTCPeerConnection Info: setRemoteDescription.
>>> begin:sdp
[…]

webrtcapi.RTCPeerConnection Info: OnSignalingChange. signaling state = HaveRemotelOffer

If there are multiple ICE candidates, the order of preference is:

  1. host
  2. peer reflexive
  3. server reflexive
  4. transport relay

If you encounter an issue and can reproduce it consistently, we recommend clicking Help > Report a problem in Teams. Logs are shared between Citrix and Microsoft to resolve technical issues if you opened a case with Microsoft. Capturing CDF traces before contacting Citrix Support is also beneficial. For more information, see the Knowledge Center article CDFcontrol.

For recommendations for collecting CDF Traces, see the Knowledge Center article Recommendations for Collecting the CDF Traces.

VDA side CDF traces - Enable the following CDF trace providers:

VDA side CDF traces

Workspace App side CDF traces - Enable the following CDF trace providers:

Workspace App side CDF traces