Optimization for Microsoft Teams

Optimization for desktop-based Microsoft Teams using Citrix Virtual Apps and Desktops or Citrix DaaS and Citrix Workspace app. Optimization for Microsoft Teams is similar to HDX RealTime Optimization for Microsoft Skype for Business. The difference is that we bundle all the necessary components for Microsoft Teams optimization into the VDA and the Citrix Workspace app for Linux.

Citrix Workspace app for Linux supports audio, video, and screen-sharing features with Microsoft Teams optimization.


  • Microsoft Teams optimization is supported only on Ubuntu 20.04 or later.
  • Microsoft optimization is supported in both Citrix Virtual Apps and Desktops and Citrix DaaS.
  • For Thin Clients that use Dell Wyse, use the Citrix Configuration Editor to edit any parameter in the /var/.config/citrix/hdx_rtc_engine/config.json file. For more information see the Dell documentation.

For information on how to enable log collection, follow the steps mentioned under Log collection for Microsoft Teams.

For information on system requirements, see Microsoft Teams optimization requirements.

For more information, see Optimization for Microsoft Teams and Microsoft Teams redirection.

Enhancement to audio configuration

If Microsoft Teams configures auto gain control and noise suppression options, Citrix-redirected Microsoft Teams honors the values as configured. Otherwise, these options are enabled by default. However, starting from Citrix Workspace app 2104, the echo cancellation option is disabled by default. The examples for audio issues include robotic voice, high CPU causing choppy audio, and so on. Starting from Citrix Workspace app 2112, admins can change the default settings to troubleshoot Audio issues by doing the following:

  1. Navigate to the /var/.config/citrix/hdx_rtc_engine/config.json file.
  2. Set the following options:
    • EnableAEC value to 1 to enable and 0 to disable echo cancellation
    • EnableAGC value to 1 to enable and 0 to disable auto gain control
    • EnableNS value to 1 to enable and 0 to disable noise suppression
mkdir -p /var/.config/citrix/hdx_rtc_engine

vim /var/.config/citrix/hdx_rtc_engine/config.json




After the call is established, monitor the webrpc log (/tmp/webrpc/<current date>/) for the following entries to verify that the changes took effect:

/tmp/webrpc/Wed_Feb__2_14_56_33_2022/webrpc.log:[040.025] Feb 02 14:57:13.220 webrtcapi.NavigatorUserMedia Info: getUserMedia. audio constraints, aec=1, agc=1, ns=1

Encoder performance estimator for Microsoft Teams

The HdxRtcEngine is the WebRTC media engine embedded in Citrix Workspace app that handles Microsoft Teams redirection. The HdxRtcEngine.exe can estimate the best outgoing video (encoding) resolution that the endpoint’s CPU can sustain without overloading. Possible values are 240p, 360p, 720p, and 1080p.

The performance estimation process uses macroblock code to determine the best resolution that can be achieved with the particular endpoint. The Codec negotiation during a call setup includes the highest possible resolution. The Codec negotiation can be between the peers, or between the peer and the conference server.

The following table lists the four performance categories for endpoints that have its own maximum available resolution:

Endpoint performance Maximum resolution Registry key value
Fast 1080p (1920x1080 16:9 @ 30 fps) 3
Medium 720p (1280x720 16:9 @ 30 fps) 2
Slow 360p (either 640x360 16:9 @ 30 fps, or 640x480 4:3 @ 30 fps) 1
Very slow 240p (either 320x180 16:9 @ 30 fps, or 320x240 4:3 @ 30 fps) 0

To set the outgoing video (encoding) resolution value, for example to 360p, run the following command from the terminal:

mkdir -p /var/.config/citrix/hdx_rtc_engine

vim /var/.config/citrix/hdx_rtc_engine/config.json




Log collection for Microsoft Teams

To enable log collection for Microsoft Teams:

  1. Navigate to the /opt/Citrix/ICAClient/debug.ini file.
  2. Modify the [HDXTeams] section as follows:

    ; Retail logging for HDXTeams 0/1 = disabled/enabled
    HDXTeamsLogSwitch = 1
    ; Debug logging; , It is in decreasing order
    ; LS_NONE = 4, LS_ERROR = 3, LS_WARNING = 2, LS_INFO = 1, LS_VERBOSE = 0
    WebrtcLogLevel = 0
    ; None = 5, Info = 4, Warning = 3, Error = 2, Debug = 1, Trace = 0
    WebrpcLogLevel = 0

Log collection can also be enabled by adding the following line to the config.json file:

"WebrpcLogLevel": 0,"WebrtcLogLevel": 0

Adding the libunwind-12 library dependency for llvm-12

Starting with the 2111 release, a new dependency called the libunwind-12 library is added for llvm-12. However, by default, it does not exist in the original repository. Install the libunwind-12 library manually in the repository using the following steps:

  1. Open the terminal.
  2. Enter the following line to install the llvm repository key file:

     wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add
  3. Enter the following line to configure the llvm repository source list:

     sudo vim /etc/apt/sources.list
  4. Add the following line:

    deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-12 main
    deb-src http://apt.llvm.org/bionic/ llvm-toolchain-bionic-12 main
  5. Run the following command to install the libunwind-12 library:

    sudo apt-get update -y
    sudo apt-get install libunwind-12

Configuring a preferred network interface

Starting with the Citrix Workspace app 2303 version, you can now configure a preferred network interface for media traffic. With this enhancement, if you have multiple network connections and the performance of the default one is not good, you can change to another network. To enable this enhancement:

  1. Navigate to /var/.config/citrix/hdx_rtc_engine/config.json file.
  2. Go to the following section:

           mkdir -p /var/.config/citrix/hdx_rtc_engine
            vim /var/.config/citrix/hdx_rtc_engine/config.json
  3. Update the “NetworkPreference:” value with one of the following values as required:

    • 1: Ethernet
    • 2: Wi-Fi
    • 3: Cellular
    • 4: VPN
    • 5: Loopback
    • 6: Any

By default and if no value is set, the WebRTC media engine chooses the best available route.

Configure UDP port range for Microsoft Teams optimization

With the 2402 release, you can specify the minimum and maximum range of UDP ports for Microsoft Teams optimization. If the UDP Port cannot be allocated for any reason, the WebRTC falls back to TCP. To enable this feature, add the following two new configuration items to the /var/.config/citrix/hdx_rtc_engine/config.json configuration file on the client device:

  • PortRangeMin stands for minimum UDP port
  • PortRangeMax stands for maximum UDP port

Ensure that the following two conditions are met for this feature to take effect:

  • You must set the minimum and maximum UDP port.
  • The minimum port must be 10 numbers smaller than the maximum port.

To enable this feature, do the following on the client device:

  1. Navigate to the /var/.config/citrix/hdx_rtc_engine/config.json config file.
  2. Add the PortRangeMin and PortRangeMax numbers.

    // config file /var/.config/citrix/hdx_rtc_engine/config.json
        "PortRangeMin" : 30000,
        "PortRangeMax" : 31000

Enhancements to Microsoft Teams optimization

  • Starting with version 2101 for Citrix Workspace app:
    • The Citrix Workspace app installer is packaged with the Microsoft Teams ringtones.
    • Audio output switches automatically to newly plugged-in audio devices, and an appropriate audio volume is set.
    • HTTP proxy support for anonymous authentication.
  • Starting with version 2103 for Citrix Workspace app, the VP9 video codec is disabled by default.

  • Starting with version 2104 for Citrix Workspace app, the echo cancellation feature is disabled by default. We recommend that you do not use your built-in speakers and microphone for calls. Use headphones instead. This fix aims to address choppy audio issues noticed on thin clients

  • Starting with version 2106 for Citrix Workspace app:

    • Previously, when you clicked Screen sharing, preview of a default or main monitor was only available for screen sharing.

      With this version, a preview of all screens is displayed on the screen picker menu. You can select any screen for screen sharing in the VDA environment. A red square appears on the selected monitor and a small picture of the selected screen content appears on the screen picker menu.

      In seamless mode, you can select one from all screens to share. When the Desktop Viewer changes the window mode (maximized, restore, or minimize), the screen share stops.

  • Starting with version 2112 for Citrix Workspace app:


    The following features are available only after the roll-out of a future update from Microsoft Teams. When the update is rolled-out by Microsoft, you can check CTX253754 for the documentation update and the announcement.

    • Request control in Microsoft Teams

      With this release, you can request control during a Microsoft Teams call when a participant is sharing the screen. Once you have control, you can make selections, edits, or other modifications to the shared screen.

      To take control when a screen is being shared, click Request control at the top of the Microsoft Teams screen. The meeting participant who’s sharing the screen can either allow or deny your request.

      While you have control, you can make selections, edits, and other modifications to the shared screen. When you’re done, click Release control.


      • Users on a Linux client cannot Give control to other users. In other words, after the user on the Linux client starts sharing content, the option Give control is not present in the sharing toolbar. This is a Microsoft limitation.
      • The Request Control option is not available during the peer-to-peer call between an optimized user and a user on the native Microsoft Teams desktop client that is running on the endpoint. As a workaround, users can join a meeting to get the Request Control option.
    • Support for dynamic e911

      With this release, Citrix Workspace app supports dynamic emergency calling. When used in Microsoft Calling Plans, Operator Connect, and Direct Routing, it provides the capability to:

      • configure and route emergency calls
      • notify security personnel

      The notification is provided based on the current location of the Citrix Workspace app that runs on the endpoint, instead of the Microsoft Teams client that runs on the VDA. Ray Baum’s law requires the 911 caller’s dispatchable location to be transmitted to the appropriate Public Safety Answering Point (PSAP). Starting from Citrix Workspace app 2112 for Linux, Microsoft Teams Optimization with HDX is compliant with Ray Baum’s law. To support this feature, the LLDP library must be included in the Operating System distribution of the Thin Client.

  • Starting with version 2203 for Citrix Workspace app:

    Multi-window chat and meetings for Microsoft Teams

    With this release, you can use multiple windows for chat and meetings in Microsoft Teams, when optimized by HDX in Citrix Virtual Apps and Desktops 2112 or higher. You can pop out the conversations or meetings in various ways. For details about the pop-out window feature, see Microsoft Teams Pop-Out Windows for Chats and Meetings.

    If you’re running an older version of Citrix Workspace app or Virtual Delivery Agent (VDA), remember that Microsoft will deprecate the single-window code in the future. However, you will have a minimum of nine months after this feature is GA to upgrade to a version of the VDA or Citrix Workspace app that supports multiple windows (2203 and greater).


    This feature is available only after the roll-out of a future update from Microsoft Teams. When the update is rolled-out by Microsoft, you can check CTX253754 for the documentation update and the announcement.

  • Starting with version 2207 for Citrix Workspace app:

    • App sharing enabled: Starting with Citrix Workspace app 2209 for Linux and Citrix Virtual Apps and Desktops 2109, you can share an app using the Screen sharing feature in Microsoft Teams.
    • Enhancements to high DPI support: When the high DPI feature is enabled and you’re using 4K monitors, Microsoft Teams video overlays are in the desired position and of the correct size. Irrespective of your display settings such as single or multi-monitor arrangements, overlays always appear correctly and aren’t scaled up or appear in an undesired position. To enable this enhancement, ensure that the DPIMatchingEnabled parameter in the wfclient.ini configuration file is set to True. For more information, see Support for DPI matching.
    • WebRTC SDK upgrade: The version of the WebRTC SDK that is used for the optimized Microsoft Teams is upgraded to version M98.
  • Starting with version 2305 for Citrix Workspace app:

    • Enhancement to sleep mode for optimized Microsoft Teams call

      Previously, when you are in an optimized Microsoft Teams meeting, if there is no mouse or keyboard interaction, Citrix Workspace app or the optimized Microsoft Teams screen might go into sleep mode.

      Starting with the 2305 release, Citrix Workspace app or the optimized Microsoft Teams screen doesn’t go into sleep mode even if there is no mouse or keyboard interaction during an optimized Microsoft Teams meeting.

    • Improved experience for optimized Microsoft Teams video conference calls

      Starting with the 2305 release, by default simulcast support is enabled for optimized Microsoft Teams video conference calls. With this support, the quality and experience of video conference calls across different endpoints are improved by adapting to the proper resolution for the best call experience for all callers.

      With this improved experience, each user might deliver multiple video streams in different resolutions (for example, 720p, 360p, and so on) depending on several factors that include endpoint capability, network conditions, and so on. The receiving endpoint then requests the maximum quality resolution that it can handle thus giving all users the optimum video experience.

  • Starting with version 2307 for Citrix Workspace app:

     **Background blurring and replacement for Citrix Optimized Microsoft Teams**
     Ensure that you have installed the `wget`.
     Starting with version 2307 for Citrix Workspace app, Citrix Optimized Microsoft Teams in Citrix Workspace app for Linux now supports background blurring and background replacement. You can use this feature by selecting **More** > **Apply Background Effects** when you are in a meeting or in a P2P call.
     For more information, see [Background blurring and background effects](/en-us/citrix-virtual-apps-desktops/multimedia/opt-ms-teams#background-blurring-and-background-effects).
  • Starting with version 2308 for Citrix Workspace app:

    • Support for secondary ringer

      You can use the Secondary ringer feature to select a secondary device on which you want to get the incoming call notification in an optimized Microsoft Teams. For example, consider that you have set a speaker as the Secondary ringer and your endpoint is connected to the headphone. In this case, Microsoft Teams sends the incoming call signal to the speaker even though your headphones are the primary peripheral for the audio call itself. You can’t set a secondary ringer in the following cases:

      • When you aren’t connected to more than one audio device
      • When the peripheral is not available (for example, a Bluetooth headset)
    • Added support for playing short tones in optimized Microsoft Teams

      Earlier, short tunes, short tones such as beeps or notifications were playing repeatedly. For example, the tone that was played when a guest joins the Microsoft Teams meeting was repeated. The only workaround was to quit and restart Microsoft Teams. This issue resulted in a poor end-user experience.

      Starting with the 2308 release, Citrix Workspace app supports playing the short tones as desired. This support also enables the secondary ringtone feature.


      Update to the latest version of Microsoft Teams.

Optimization for Microsoft Teams