.. _intro: 

ICE RemoteWare Prerequisites
+++++++++++++++++++++++++++++++++++++++++++++++

Learn more about the server and client requirements for using the ICE RemoteWare™ 
product. 

About the ICE RemoteWare Software
===============================================

ICE RemoteWare 15.1.1, commit cfc7526700919977724db47cbb1065b56ea36e2e.



Introduction
=====================================

The ICE RemoteWare product is a web server that provides secure, easy remote access
to teams working on Linux, Windows, and MacOS workstations through
standard web browsers, eliminating the need for client-side
installations and changes to firewall policies.

Server Requirements
=====================================

This section describes the hardware and software requirements for the
workstation hosting the ICE RemoteWare server.

Server OS
-------------------------------------

The ICE RemoteWare software is supported and tested on the following 64-bit 
operating systems:

* Rocky Linux 8 and 9
* Windows 10, 11, and Windows Server 2019
* Windows Server 2022 (server-side only)
* MacOS Monterey 12 to MacOS Sonoma 14
* Ubuntu 20, 22 and 24

.. important:: Rocky Linux users: XWayland is not currently supported.
               Please see :ref:`RockyLinuxInstall` for instructions
               on enabling Xorg as the default X server.

.. attention:: There is a known graphics issue with older GNOME 3
               Shell based systems (GNOME 3 and GDM) on machines that
               don't have an attached monitor.  We recommend upgrading
               to GNOME 3.28+ or using the MATE desktop environment
               and LightDM as a workaround.

If you require other versions of Windows, RedHat, and Debian based
flavors of Linux, please contact Penguin Solutions for additional support.

.. _ServerHardware:

Server Hardware
-------------------------------------

We recommend the following CPU, Memory, and GPU:

============================ =======================================
Server-Side                  Recommended
============================ =======================================
CPU                          Intel Core i5, one core per monitor + 1
Memory                       2 GB
GPU                          Any
============================ =======================================

Server Network
-------------------------------------

The server's bandwidth (BW) requirements are the sum of the bandwidth
required by all connected clients.

A client's bandwidth requirements are the sum of the video bandwidth
and the audio bandwidth.  Video bandwidth depends on the display
resolutions, the selected video encoding, and the number of displays.
These bandwidth values can be found in :ref:`ClientRequirements`.
Note that even though multiple clients may be sharing the same
desktop, each client needs its own connection to that screen with its
own bandwidth usage.

By default, audio bandwidth is 1.411 Mbps when it is enabled by the
end-user.  When audio is disabled by the end-user, it consumes no
bandwidth.

To calculate the maximum server bandwidth (BW) requirements, use the
following equations:

``Video BW Per User = Displays per User * BW per Display``

``Audio BW Per User = 1.411 Mbps``

``Max Server BW = Users * (Video BW per User + Audio BW per User)``

For example, if we want to plan for a single user to have video and
audio access to a server that has a single display showing at 1080p
with our normal (lossy) encoding:

``Video BW Per User = 1 display * 6 Mbps = 6 Mbps``

``Audio BW Per User = 1.411 Mbps``

``Max Server BW = 1 user * (6 Mbps + 1.411 Mbps) = 7.411 Mbps``

As a second example, if we want to plan for three users to have video
and audio access to a server that has dual displays showing at 2K
with our normal (lossy) encoding:

``Video BW Per User = 2 displays * 12 Mbps = 24 Mbps``

``Audio BW Per User = 1.411 Mbps``

``Max Server BW = 3 users * (24 Mbps + 1.411 Mbps) = 76.233 Mbps``

.. _Doc.Intro.Resolutions:

Server Screen Resolutions
--------------------------------------

The performance of the remote access is partly dependent on the
server's screen resolution and the client's ability to process that
resolution quickly.

  The ICE RemoteWare software allows system administrators to pick a maximum screen
  resolution width and height in the config file (by default
  2560x1600).  If the user attempts to change the screen resolution
  above this setting, then the video scales down automatically.  This
  can alleviate situations where users set the screen resolution so
  high that their client machine becomes unusable.

For most users, we recommend our default values.  If you'd like to
test higher screen resolutions, we recommend doing so with gradual
increases.

.. warning:: Changing screen resolutions has two known issues:

  #. **Multiple rapid resolution changes may lead to service
     instability.** Changing the screen resolution more than 5 times
     over a few seconds may cause the service to restart or quit.

For more information about changing screen resolutions, see
:ref:`ChangeResolution`.

.. _SetupAudio:

Server Audio
-------------------------------------

The ICE RemoteWare product will stream audio from a remote server if it has a
functional audio device and proper drivers.  In Linux, Pulseaudio is
required and is already installed by default on many Linux systems.

MacOS users must follow the instructions in :ref:`MacOSAudioInstall`
to add MacOS Audio Support.

OpenSSL
--------------------------------------

OpenSSL is an open source implementation of the SSL and TLS protocols
and must be installed on the server host.  Most Linux distributions
have this installed by default, but in Windows this is installed by
the ICE RemoteWare server-side installer.

SSL Certificate
--------------------------------------

An SSL certificate signed by a trusted certificate authority is used
to provide encryption and authentication for a client's HTTPS
connection to the ICE RemoteWare web server.  By default, the ICE RemoteWare product 
comes with a self-signed SSL certificate and private key that should
not be used in secure production environments.

For more information on generating SSL certificates, see :ref:`Setup`.

.. _ClientRequirements:

Client Requirements
=====================================

You can connect to the server using either an HTML5 browser or our
native client (ICE RemoteWare Client).

Client Hardware and Network
-----------------------------------------------

Client-side hardware and network requirements are largely based on the
server's screen resolution and the number of pixels changing on the
screen at a given time.

The table below shows CPU and Network requirements when remoting a
single full screen movie using our normal video encoder at 24-30
frames per second.  Turning on audio streaming will consume an
additional 1.411 Mbps of bandwidth.

.. csv-table:: Normal Video Recommendations
   :header: "Server Resolution", "Network (Mbps)", "CPU, Native Client", "CPU, Chrome"
   :widths: 25, 20, 20, 20

   "1280 x 720", "3", "Intel Core i5", "Intel Core i5"
   "1920 x 1080", "6", "Intel Core i5", "Intel Core i7-3520M"
   "2560 x 1440", "12", "Intel Core i7-3520M", "Intel Core i7-2600K"
   "3840 x 2160", "25", "Intel Core i7-2600K", "Intel Core i7-5775C"

The tables below show recommendations for visually lossless and
lossless video encodings, respectively.  These options are only
accessible with the native client.

.. csv-table:: Visually Lossless Video Recommendations
   :header: "Server Resolution", "Network (Mbps)", "CPU, Native Client"
   :widths: 25, 20, 20

   "1280 x 720", "11", "Intel Core i7-3520M"
   "1920 x 1080", "22", "Intel Core i7-3520M"
   "2560 x 1440", "32", "Intel Core i7-3520M"
   "3840 x 2160", "64", "Intel Core i7-2600K"

.. csv-table:: Lossless Video Recommendations
   :header: "Server Resolution", "Network (Mbps)", "CPU, Native Client"
   :widths: 25, 20, 20

   "1280 x 720", "65", "Intel Core i7-2600K"
   "1920 x 1080", "125", "Intel Core i7-2600K"
   "2560 x 1440", "200", "Intel Core i7-5775C"
   "3840 x 2160", "400", "Intel Core i7-5775C"

.. note:: The ICE RemoteWare Client is more optimized than the Chrome
          Browser so it requires lower CPU resources to achieve the
          same frame rate.

.. note:: Acceptable network latency is application and workflow
          dependent.  In some cases, 150ms may be acceptable.
          Performance may degrade if the client is running background
          applications that consume significant amounts of CPU time,
          memory, or network bandwidth.

.. _Browsers:

Web Browser Support
-------------------------------------

The following web browsers are supported and listed in order of
performance:

* Chrome 59+
* FireFox 56+
* Microsoft Edge Legacy 44.17763.1.0+
* Microsoft Edge 79+
* Safari 7+

.. note:: Chrome provides the best performance and is recommended.

These browsers by default enable TLS 1.2, WebGL and WebSocket features
that are necessary for security and optimal ICE RemoteWare performance.
While WebSocket support is a hard requirement, the ICE RemoteWare software is 
capable of running without WebGL support at reduced performance levels.

The following links can be used to determine if your browser supports
necessary features for an optimal ICE RemoteWare experience:

========================== ==================================================
Browser Feature            Test for Browser Support
========================== ==================================================
Security Protocol TLS 1.2  https://www.ssllabs.com/ssltest/viewMyClient.html
WebGL                      https://get.webgl.org/
WebSockets                 http://websocketstest.com/
========================== ==================================================

.. note:: TLS 1.2 is the current standard used to secure HTTPS
 connections as of the writing of this document.

ICE RemoteWare Client
-------------------------------------

ICE RemoteWare Client is a native client that requires a separate
application installation on the client side.  It is similar
to the web browser, but it includes some additional benefits:

* faster frame rates at higher screen resolutions
* lossless and visually lossless video support
* support for keyboard shortcuts reserved by web browsers (for
  example: ``Ctrl + T``, ``Ctrl + N``, ``Ctrl + W``)

ICE RemoteWare Client is supported and tested on the following 64-bit operating systems:

* Rocky Linux 8 and 9
* Windows 10, 11, and Windows Server 2019
* MacOS Big Sur 11 to MacOS Sonoma 14
* Ubuntu 20, 22 and 24

.. note:: OpenGL 2.1 support is required.

.. note:: New in v11.2: ICE RemoteWare Client can also be launched from URI links
          such as: ``irw://<server>``


Feature Requirements and Setup
=====================================

ICE RemoteWare features are designed to be ready to use across all
platforms that meet the recommended hardware and operating systems
listed above.  Some of these features include:

* Authentication over Active Directory, LDAP, PAM, SCAuth, RHV OAuth2,
  and more
* Secure HTTPs communication
* Video playback up to 4k
* Audio
* Multi-display support
* Text copy & paste
* Quality of Service adaptation
* File up- and download
* Collaboration

Some features have additional requirements.  These are organized by
server-side operating system below:

.. contents::
   :depth: 2
   :local:
   :backlinks: none


All Operating Systems
---------------------------------

.. contents::
   :depth: 1
   :local:
   :backlinks: none

.. _Enable4KVideo:

Enabling 4K Video on all OSes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

1. Set ``Server.Video.MaxWidth`` and ``Server.Video.MaxHeight`` to ``-1`` in
   the XML config file.

2. Connect with the native client instead of a browser for best
   performance.

.. _EnableLosslessVideo:

Enabling Lossless and Visually Lossless Video on all OSes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

1. Connect with the native client instead of a browser.

Rocky Linux
---------------------------------

.. contents::
   :depth: 1
   :local:
   :backlinks: none

.. _EnableUSBForwardingRockyLinux:

Enabling USB Forwarding on Rocky Linux
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

USB devices can be forwarded between native clients and remote servers
that meet the following requirements:

1. The server's license file must have a valid
   'irw' entitlement.  If you do not see this
   entitlement in your license file, please contact Penguin Solutions sales
   for more information.
2. The Server-USB module must be installed on the remote server.  See
   :ref:`RockyLinuxInstallServerUsbModule` for more information on
   this step.
3. The Client-USB module must be installed on the client side.  See
   :ref:`InstallClientUsbModule` for more information on this step.

.. _EnableXorgRockyLinux:

Enabling Xorg X server as the default on Rocky Linux
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

XWayland is not currently supported.  Please see
:ref:`RockyLinuxInstall` for instructions on enabling Xorg as the
default X server.

MacOS
---------------------------------

.. contents::
   :depth: 1
   :local:
   :backlinks: none

.. _EnableAudioMacOS:

Enabling Audio on MacOS
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

1. Download and install BlackHole 0.2.9.  See
   :ref:`MacOSAudioInstall` for more information.

2. Note: Audio is not supported on MacOS Virtual Machines.

.. _UpdateToVirtualHereUniversal:

Re-Enabling USB Forwarding after Updating to MacOS Monterey
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

If you have an existing ICE RemoteWare installation and you've updated
from Big Sur (or earlier) to Monterey (or later), follow these steps
to install 'VirtualHereUniversal' and re-enable USB Forwarding:

1. Use a Finder window to open the Applications folder
2. Right-click on 'ICE RemoteWare' and select 'Show Package Contents'
3. Open 'Contents' and then 'Resources'
4. Open the VirtualHereUniversal dmg by double-clicking on
   'VirtualHereUniversal.dmg'
5. Drag the 'VirtualHereUniversal' application into the Applications folder
6. Move the deprecated 'VirtualHere' application to the Trash

