Skip to content

Installation Instructions

About This Manual

This manual describes the following:

Software Installation

The method used to install XRT differs depending on the system that you are using. Where possible, XRT is delivered using the standard packaging system for a distribution; if this is not possible, standard compressed TAR or ZIP files are used.

Note

IOTech recommends that all installations are done as root. The installation instructions in this document, with the exception of the Debian-based installation instructions, provide the commands for installations done as root.

The following table shows which systems and architectures support XRT, and provides a direct link to the appropriate installation instructions:

System AMD64 ARM64 ARM32 Instructions
Debian 9,10,11 Yes Yes Yes Link
Alpine Linux 3.12, 3.13, 3.14 Yes Yes Yes Link
Ubuntu 20.04, 18.04, 16.04 Yes Yes Yes Link
Fedora 34 Yes Yes No Link
OpenSUSE 15.3 Yes Yes Yes Link
Photon 4.0 Yes Yes No Link
ClearLinux Yes No No Link
Zephyr 2.3 Yes No No Link
AzureSphere No No Yes Link

The core XRT framework requires support for the standard C library and Portable Operating System Interface (POSIX) API. This means that it can be ported to any real-time operating system (RTOS) that supports these features.

Note

Some individual XRT components may have more restrictive API requirements and, therefore, not all XRT component modules are supported on all platforms.

Dependencies

IOTech provides dependent libraries as packages on all supported platforms. The dependencies are managed by the package manager, when possible. If this behavior is not supported, instructions for installing the dependencies manually are included in the relevant section of this document.

Install on Debian-based Systems

This method uses deb packages to install XRT. It is used for all systems that are based on the Debian packaging mechanism such as Debian and Ubuntu. To install XRT using .deb packages, complete the following steps:

  1. Install required installation packages:

    sudo apt-get install lsb-release apt-transport-https curl gnupg
    

  2. Add the key for the IOTech repository:

    curl -fsSL https://iotech.jfrog.io/artifactory/api/gpg/key/public | sudo apt-key add -
    

  3. Register the IOTech repository:

    echo "deb https://iotech.jfrog.io/iotech/debian-release $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/iotech.list
    

  4. Update repositories:

    sudo apt-get update
    

  5. Install XRT:

    sudo apt-get install iotech-xrt
    

Install on RPM-based Systems

RPM-based systems, such as Fedora, SUSE and CentOS, do not all use the same package management system or support the same packages. This means that the installation instructions for RPM-based systems are specific to the system. You can install XRT on the following RPM-based systems:

Install on CentOS 8

To install XRT on CentOS 8 as root, complete the following steps:

  1. Download and install the iotech.repo repository access file from the IOTech support portal:

    cp iotech.repo /etc/yum.repos.d/
    

  2. Add EPEL and PowerTools repository support:

    dnf install -y 'dnf-command(config-manager)'
    dnf config-manager --set-enabled powertools
    dnf install -y epel-release
    

  3. Install the build packages:

    dnf -y install git cmake make gcc openssl-devel libcurl-devel mbedtls-devel lua-devel
    

  4. Install XRT:

    dnf install iotech-xrt
    

Install on Fedora 34

To install XRT on Fedora 34 as root, complete the following steps:

  1. Download and install the iotech.repo repository access file from the IOTech support portal:

    cp iotech.repo /etc/yum.repos.d/
    

  2. Install the build packages:

    yum install git cmake 3 make gcc openssl-devel libcurl-devel mbedtls-devel lua-devel
    

  3. Install XRT:

    yum install iotech-xrt
    

Install on OpenSUSE Leap 15.3

To install XRT on OpenSUSE Leap 15.3 as root, complete the following steps:

  1. Install the build packages, using the following command:

    zypper install git gcc cmake make curl libressl-devel mbedtls-devel libcurl-devel lua-devel libjansson-devel
    

  2. Obtain an account name and password from the IOTech support portal

    Note

    In the following commands, replace and with the account name and password obtained in step 2. You must also replace with the relevant architecture (x86_ 64 , aarch64, or armv7hl).

  3. Download the IoT C Utilities .rpm package from the IOTech repository:

    curl -L -u "<user>:<password>" -O "https://iotech.jfrog.io/artifactory/rpm-opensuse-15.2-release/iotech-iot-1.2.1.<arch>.rpm"
    

  4. Download the IOTech Thrift .rpm package from the IOTech repository:

    curl -L -u "<user>:<password>" -O "https://iotech.jfrog.io/artifactory/rpm-opensuse-15.2-release/iotech-thrift-1.0.1.<arch>.rpm"
    

  5. Download the XRT .rpm package from the IOTech repository:

    curl -L -u "<user>:<password>" -O "https://iotech.jfrog.io/artifactory/rpm-opensuse-15.2-release/iotech-xrt-1.2.0.<arch>.rpm"
    

  6. Download the Paho MQTT RPM package from the IOTech repository. For OpenSUSE, this must be done manually, as follows:

    curl -L -u "<user>:<password>" -O "https://iotech.jfrog.io/artifactory/rpm-opensuse-15.3-release/paho-c-1.3.8-1.<arch>.rpm" 
    

  7. Download the libmodbus RPM package from the IOTech repository. For OpenSUSE, this must be done manually, as follows:

    curl -L -u "<user>:<password>" -O "https://iotech.jfrog.io/artifactory/rpm-opensuse-15.2-release/modbus-3.1.6-1.<arch>.rpm"
    

  8. Download the ethernet-ip RPM package from the IOTech repository. For OpenSUSE, this must be done manually, as follows:

    curl -L -u "<user>:<password>" -O "https://iotech.jfrog.io/artifactory/rpm-opensuse-15.2-release/ethernet-ip-2.9.0-1.<arch>.rpm"
    

  9. Download the soem RPM package from the IOTech repository. For OpenSUSE, this must be done manually, as follows:

    curl -L -u "<user>:<password>" -O "https://iotech.jfrog.io/artifactory/rpm-opensuse-15.2-release/soem-1.3.3-1.<arch>.rpm"
    

  10. Download the opc-ua RPM package from the IOTech repository. For OpenSUSE, this must be done manually, as follows:

    curl -L -u "<user>:<password>" -O "https://iotech.jfrog.io/artifactory/rpm-opensuse-15.2-release/opc-ua-1.0.0-1.<arch>.rpm"
    

  11. Download the aziot-sdk RPM package from the IOTech repository. For OpenSUSE, this must be done manually, as follows:

    curl -L -u "<user>:<password>" -O "https://iotech.jfrog.io/artifactory/rpm-opensuse-15.2-release/aziot-sdk-1.6.0-1.<arch>.rpm"
    

  12. Download the JWT RPM package from the IOTech repository. For OpenSUSE, this must be done manually, as follows:

    curl -L -u "<user>:<password>" -O "https://iotech.jfrog.io/artifactory/rpm-opensuse-15.2-release/jwt-1.12.1-1.<arch>.rpm"
    

  13. Install the downloaded packages:

    rpm -i paho-c*.rpm modbus*.rpm ethernet-ip*.rpm soem*.rpm opc-ua*.rpm aziot-sdk*.rpm jwt*.rpm iotech*.rpm
    

Install on Photon 4

To install XRT on Photon 4.0 as root, complete the following steps:

  1. Install the build packages:

    tdnf remove -y toybox
    tdnf install -y rpm gcc glibc-devel linux-api-headers binutils make git cmake go rpm-build openssl-devel curl-devel findutils sed lua-devel jansson-devel
    

  2. Obtain an account name and password from the IOTech support portal

    Note

    In the following commands, replace and with the account name and password obtained in step 2. You must also replace with the relevant architecture (x86_ 64 , aarch64, or armv7l).

  3. Download the IoT C Utilities .rpm package from the IOTech repository:

    curl -L -u "<user>:<password>" -O "https://iotech.jfrog.io/artifactory/rpm-photon-30-release/iotech-iot-1.2.1.<arch>.rpm"
    

  4. Download the IOTech Thrift .rpm package from the IOTech repository:

    curl -L -u "<user>:<password>" -O "https://iotech.jfrog.io/artifactory/rpm-photon-30-release/iotech-thrift-1.0.1.<arch>.rpm"
    

  5. Download the XRT .rpm package from the IOTech repository:

    curl -L -u "<user>:<password>" -O "https://iotech.jfrog.io/artifactory/rpm-photon-30-release/iotech-xrt-1.2.0.<arch>.rpm"
    

  6. Download the Paho MQTT RPM package from the IOTech repository. For Photon, this must be done manually, as follows:

    curl -L -u "<user>:<password>" -O "https://iotech.jfrog.io/artifactory/rpm-photon-30-release/paho-c-1.3.8-1.<arch>.rpm"
    

  7. Download the libmodbus RPM package from the IOTech repository. For Photon, this must be done manually, as follows:

    curl -L -u "<user>:<password>" -O "https://iotech.jfrog.io/artifactory/rpm-photon-30-release/modbus-3.1.6-1.<arch>.rpm"
    

  8. Download the ethernet-ip RPM package from the IOTech repository. For Photon, this must be done manually, as follows:

    curl -L -u "<user>:<password>" -O "https://iotech.jfrog.io/artifactory/rpm-photon-30-release/ethernet-ip-2.9.0-1.<arch>.rpm"
    

  9. Download the soem RPM package from the IOTech repository. For Photon, this must be done manually, as follows:

    curl -L -u "<user>:<password>" -O "https://iotech.jfrog.io/artifactory/rpm-photon-30-release/soem-1.3.3-1.<arch>.rpm"
    

  10. Download the mbedtls RPM package from the IOTech repository. For Photon, this must be done manually, as follows:

    curl -L -u "<user>:<password>" -O "https://iotech.jfrog.io/artifactory/rpm-photon-30-release/mbedtls-2.16.8-1.<arch>.rpm"
    

  11. Download the opc-ua RPM package from the IOTech repository. For Photon, this must be done manually, as follows:

    curl -L -u "<user>:<password>" -O "https://iotech.jfrog.io/artifactory/rpm-photon-30-release/opc-ua-1.0.0-1.<arch>.rpm"
    

  12. Download the aziot-sdk RPM package from the IOTech repository. For Photon, this must be done manually, as follows:

    curl -L -u "<user>:<password>" -O "https://iotech.jfrog.io/artifactory/rpm-photon-30-release/aziot-sdk-1.6.0-1.<arch>.rpm"
    

  13. Download the jwt-sdk RPM package from the IOTech repository. For Photon, this must be done manually, as follows:

    curl -L -u "<user>:<password>" -O "https://iotech.jfrog.io/artifactory/rpm-photon-30-release/jwt-1.12.1-1.<arch>.rpm"
    

  14. Install the downloaded packages:

    rpm -i --nodeps paho-c*.rpm modbus*.rpm ethernet-ip*.rpm soem*.rpm opc-ua*.rpm aziot-sdk*.rpm jwt*.rpm iotech*.rpm
    

Install on Alpine Linux-based Systems

To install XRT on Alpine Linux Systems as root, complete the following steps:

  1. Install the IOTech repository key:

    wget https://iotech.jfrog.io/artifactory/api/security/keypair/public/repositories/alpine-release -O /etc/apk/keys/alpine.dev.rsa.pub
    

  2. Add the IOTech repository:

    echo "https://iotech.jfrog.io/artifactory/alpine-release/v3.14/main" >> /etc/apk/repositories
    apk update
    

    Note

    If not using Alpine 3.14, replace v3.14 in this command with the correct version.

  3. Install XRT:

    apk add iotech-xrt
    

Install on ClearLinux-based Systems

To install XRT on ClearLinux as root, complete the following steps:

  1. Install the build packages:
    swupd bundle-add dev-utils devpkg-openssl devpkg-curl devpkg-lua devpkg-paho-mqtt-c wget doxygen graphviz devpkg-sqlite-autoconf devpkg-jansson
    
  2. Obtain an account name and password from the IOTech support portal

    Note

    In the following commands, replace and with the account name and password obtained in step 2.

  3. Download the IoT C Utilities tar ball from the IOTech repository:

    curl -L -u "<user>:<password>" -O "https://iotech.jfrog.io/artifactory/generic-release/clearlinux/iotech-iot-1.2.1_x86_64.tar.gz"
    

  4. Download the IOTech Thrift tar ball from the IOTech repository:

    curl -L -u "<user>:<password>" -O "https://iotech.jfrog.io/artifactory/generic-release/clearlinux/iotech-thrift-1.0.1_x86_64.tar.gz"
    

  5. Download the XRT tar ball from the IOTech repository:

    curl -L -u "<user>:<password>" -O "https://iotech.jfrog.io/artifactory/generic-release/clearlinux/iotech-xrt-1.2.0_x86_64.tar.gz"
    

  6. Download the libmodbus tar ball from the IOTech repository. For ClearLinux, this must be done manually, as follows:

    curl -L -u "<user>:<password>" -O "https://iotech.jfrog.io/artifactory/generic-release/clearlinux/modbus-3.1.6_x86_64.tar.gz"
    

  7. Download the ethernet-ip tar ball from the IOTech repository. For ClearLinux, this must be done manually, as follows:

    curl -L -u "<user>:<password>" -O "https://iotech.jfrog.io/artifactory/generic-release/clearlinux/ethernet-ip-2.9.0_x86_64.tar.gz"
    

  8. Download the soem tar ball from the IOTech repository. For ClearLinux, this must be done manually, as follows:

    curl -L -u "<user>:<password>" -O "https://iotech.jfrog.io/artifactory/generic-release/clearlinux/soem-1.3.3_x86_64.tar.gz"
    

  9. Download the mdedtls tar ball from the IOTech repository. For ClearLinux, this must be done manually, as follows:

    curl -L -u "<user>:<password>" -O "https://iotech.jfrog.io/artifactory/generic-release/clearlinux/mbedtls-2.16.8_x86_64.tar.gz"
    

  10. Download the opc-ua tar ball from the IOTech repository. For ClearLinux, this must be done manually, as follows:

    curl -L -u "<user>:<password>" -O "https://iotech.jfrog.io/artifactory/generic-release/clearlinux/opc-ua-1.0.0_x86_64.tar.gz"
    

  11. Download the jwt tar ball from the IOTech repository. For ClearLinux, this must be done manually, as follows:

    curl -L -u "<user>:<password>" -O "https://iotech.jfrog.io/artifactory/generic-release/clearlinux/jwt-1.12.1_x86_64.tar.gz"
    

  12. Install the dependent modules, using the following commands from the folder to which the packages were downloaded:

    tar -xz -C / -f ethernet-ip*.tar.gz
    tar -xz -C / -f jwt*.tar.gz
    tar -xz -C / -f mbedtls*.tar.gz
    tar -xz -C / -f modbus*.tar.gz
    tar -xz -C / -f opc-ua*.tar.gz
    tar -xz -C / -f soem*.tar.gz
    

  13. Install the IOTech tar balls:

    mkdir -p /opt/iotech
    tar -xz -C /opt/iotech -f /iotech-iot-*.tar.gz
    tar -xz -C /opt/iotech -f /iotech-thrift-*.tar.gz
    tar -xz -C /opt/iotech -f /iotech-xrt-*.tar.gz
    mv /opt/iotech/iotech-iot* /opt/iotech/iot
    mv /opt/iotech/iotech-thrift* /opt/iotech/thrift
    mv /opt/iotech/iotech-xrt* /opt/iotech/xrt
    

  14. Ensure that the shared library cache is up to date:

    ldconfig
    

Install for Zephyr RTOS

Zephyr projects are built for a specific target platform, architecture and set of features. This means that each project requires a custom build.

IOTech can support evaluation builds for QEMU, ACRN, and the ARM NXP FRDM-K64F board. For further information contact IOTech Support.

Install for Azure Sphere

XRT is supported on micro-controllers running Microsoft Azure Sphere.

Azure Sphere applications are cross-compiled on either Ubuntu or Windows hosts, so XRT for Azure Sphere must also be installed on the development host.

Note

As all XRT Azure Sphere applications must be compiled on the development host, there is not a separate development package. The currently supported development hosts are Ubuntu 20.04 and Windows 10.

For further information on building, deploying and integrating XRT with the Azure Cloud, refer to the XRT for Azure Sphere Guide.

Install on Ubuntu Development Host

To install XRT Azure Sphere, complete the following steps:

  1. Install the Azure Sphere SDK. For further information on installing the Azure Sphere SDK on Ubuntu, refer to the Linux installation quickstart section of the Azure Sphere documentation

  2. Install the packages, using the following command:

    apt-get install lsb-release apt-transport-https curl gnupg
    

  3. Add the key for the IOTech repository, using the following command:

    curl -fsSL https://iotech.jfrog.io/artifactory/api/gpg/key/public | apt-key add -
    

  4. Register the IOTech repository:

    echo "deb https://iotech.jfrog.io/iotech/debian-release $(lsb_release -cs) main" | tee -a /etc/apt/sources.list.d/iotech.list
    

  5. Update the repositories:

    apt update
    

  6. Install XRT:

    apt-get install iotech-xrt-azsphere11
    

Install on Windows 10 Development Host

To install XRT Azure Sphere, as root, complete the following steps:

  1. Install the Azure Sphere SDK. For further information on installing the Azure SDK on Windows 10, refer to the Windows installation quickstart section of the Azure Sphere documentation

  2. Download the XRT .zip package from the IOTech repository:

    curl -L -O https://iotech.jfrog.io/artifactory/windows-release/azuresphere-11/iotech-xrt-dev-azsphere11-1.1-latest.zip
    

  3. Open Windows File Explorer

  4. Select the downloaded .zip package and extract the files to the following location:

    C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\11
    

License Installation

You must obtain a license for XRT before you can use or test any XRT component, as XRT checks for licensing permission before instantiating any component.

Note

If running XRT on Microsoft Azure Sphere, you do not need to obtain a license for XRT.
To obtain an XRT license, which is a file called Xrt_license.lic , contact IoT Support.

When you have obtained the XRT license file you must ensure that XRT can locate the license in one of the following ways:

  1. Set the XRT_LICENSE_FILE environment variable to the absolute path to the license file, using the following command, where <path> is the full path to your license file:

    export XRT_LICENSE_FILE=<path>/Xrt_license.lic
    

  2. Copy the license file to the config directory used in your test and rename the file from Xrt_license.lic to license.json.

  3. Place the license file in the default installation location; that is, the /opt/iotech/xrt directory. Rename the file from Xrt_license.lic to license.json

Installation Test

Before testing an installation, do the following:

  1. Copy the examples from the distribution

  2. If using the iotech-xrt-dev package and you have modified the example, build the example

  3. Obtain and install the license, as described previously.

As different systems install packages in different locations, you might need to update the env.sh file, which sets environment variables including PATH and LD_LIBRARY_PATH. If using the iotech-xrt-dev package, you might also need to update the Makefile.defs file to deal with variant library names or header inclusion paths. You can then test an installation. For example, you could test an installation as follows:

  1. Load the env.sh file, using the following command:

    source /opt/iotech/xrt/bin/env.sh
    

  2. Copy the examples to a temporary directory, using the following command:

    cp -R /opt/iotech/xrt/examples .
    

  3. Navigate to the temporary directory, using the following command:

    cd examples
    

  4. If using the iotech-xrt-dev package, build the examples using the following command:

    make
    

  5. Navigate to the example you want to run, for example, for the Container example:

    cd container
    

  6. Run the XRT application, using the following command, where provides the location of the config folder and [<time_in_seconds>] allows you to define the time for which XRT is to run in seconds if required:

    xrt <config> [<time_in_seconds>]
    

    Note

    The [<time_in_seconds>] parameter is optional. If not set, XRT runs until stopped manually.

    For example, to use the container component configuration and run the test for five seconds, the commands are as follows:

    xrt config 5
    

    Note

    The provided configuration data expects the test to be run from the location in which the config directory is available.

Back to top