Developer Guide

  • 2022.1
  • 09/08/2022
  • Public

Install Host Dependencies Manually

Default Setup describes how to use
to install all host dependencies. You can customize your setup by manually installing only the components you need.
Required dependencies for Intel® TCC Tools on your host system:
  • ittapi: for applications using the measurement library and measurement library build
  • g++-multilib (verified on version 4:9.3.0-1ubuntu2) for ittapi as build dependencies.
  • cmake: for application build, verified on version 3.16.3.-1ubuntu1
  • json-c: version 0.13.1+dfsg-7ubuntu0.3 for the cache allocation library build.
  • python3-pip: for the data streams optimizer and cache allocation capabilities, verified on version 20.0.2-5ubuntu1.1
  • msgfmt: for data streams optimizer and cache configurator, verified on version
  • checkinstall: required for libbpf and open62541 installation for all supported platforms.
  • python modules: for samples: modules listed in
  • python modules: for data streams optimizer and cache configurator: modules listed in
  • Firmware and BIOS Utilities: for capsule creation for UEFI BIOS
  • Slim Bootloader tools: for capsule creation for Slim Bootloader
  • Test certificates: for data streams optimizer and cache configurator demo
  • python3-sphinx: required for building eXpress Data Path, XDP, supporting libraries
  • libelf-dev library: for XDP libraries support
  • libbpf library: for XDP libraries support
  • Open62541 library: for real-time communication demo support
To manually install each dependency to customize your setup:
  1. Create a temporary directory:
    TEMP_DIR=$(mktemp -d)
  2. Install ittapi:
    1. Clone the ittapi repository:
      cd ${TEMP_DIR} git clone -b v3.18.10
    2. Install build dependencies:
      sudo apt-get update sudo apt-get install cmake g++-multilib
    3. Build itt:
      cd ittapi python3
    4. Copy itt parts to system folders:
      sudo cp build_linux/64/bin/libittnotify.a /usr/lib sudo cp -r include /usr/include/ittnotify sudo cp src/ittnotify/*.h /usr/include/ittnotify/ sudo rm -r /usr/include/ittnotify/fortran/win32 sudo rm -r /usr/include/ittnotify/fortran/posix/x86 cd ../
  3. Install the checkinstall package:
    sudo apt-get install checkinstall
  4. Install json-c:
    sudo apt-get install libjson-c-dev
  5. Install dependencies for host-side tools:
    The dependencies are required for the data streams optimizer, cache allocation capabilities, and to build samples.
    1. Install the pip tool for Python* 3 release:
      sudo apt-get install python3-pip
      Skip this step if you have already installed pip for the Python* 3 release.
    2. Install the msgfmt as part of gettext utilities:
      sudo apt-get install gettext
    3. Go to the following directory:
      cd ${TCC_ROOT}/samples/plot_scripts
    4. Install the required Python* modules for samples:
      sudo -S pip3 install -r prerequisites.txt
    5. Go to the following directory:
      cd ${TCC_TOOLS_PATH}
    6. Install the required Python* modules for tools:
      sudo -S pip3 install -r prerequisites.txt
    7. Install Firmware and BIOS Utilities:
      rm -rf capsule git clone --depth 1 --branch v0.8.1 capsule/uefi sudo chmod -R a+rx capsule cd ${TCC_TOOLS_PATH}/capsule/uefi pip3 install -r requirements.txt
    8. Install Slim Bootloader tools
      cd ${TCC_TOOLS_PATH}/capsule rm -rf sbl git clone sbl cd sbl git checkout 8529406967b25db462d8481c7cd72fb025076747 chmod -R a+rx ./
    9. Provision certificates/public key:
      The Firmware and BIOS Utilities software requires certificates or Rivest–Shamir–Adleman (RSA) signing key pair during capsule file generation. RSA signing keys are required to sign and authenticate the Intel® TCC subregion, and a certificate is needed to sign the capsule. Intel recommends that you generate your own certificates/RSA key pair for capsule and subregion signing and work with your BIOS vendor to enroll them into the BIOS. For details about the signing and enrolling mechanism, see the white paper Intel® Time Coordinated Computing (Intel® TCC) Security for UEFI BIOS. For test purposes, you can download testing certificates for capsule signing from the EDK2 repository. You also need to generate a test RSA keys. Run the command:
      cd ${TCC_TOOLS_PATH} mkdir ./keys/uefi openssl req -new -x509 -newkey rsa:3072 -subj "/CN=Secure_b=Boot_test/" -keyout ./keys/uefi/Signing.key -out ./keys/uefi/Signing.crt -days 365 -nodes -sha384
      Slim Bootloader tools require several keys for the Slim Bootloader creation. See SBL Keys Generation for details on keys generation.
      Intel® TCC Tools looks for your keys in the default location of
      . .Copy your keys into that default location, or change the scripts to search for keys in a different location. See Capsule Create Script for an example.
    10. Install python3-sphinx and libelf-dev libraries:
      sudo apt-get install python3-sphinx libelf-dev
    11. Go to the following directory:
      cd ${TEMP_DIR}
    12. Clone the Yocto Project*-based BSP layer with patches, which you will need later.
      git clone cd iotg-yocto-ese-main git checkout 56aceb22632b9451c991529889f8c90def22153e
    13. Clone the libbpf project:
      cd ${TEMP_DIR} git clone
    14. Go to the libbpf directory:
      cd libbpf
    15. Check out the required version of libbpf:
      git checkout ab067ed3710550c6d1b127aac6437f96f8f99447
    16. Apply the patches from the Yocto Project*-based BSP layer:
      git apply ../iotg-yocto-ese-main/backports/dunfell/recipes-connectivity/libbpf/libbpf/0001-libbpf-add-txtime-field-in-xdp_desc-struct.patch git apply ../iotg-yocto-ese-main/backports/dunfell/recipes-connectivity/libbpf/libbpf/0002-makefile-don-t-preserve-ownership-when-installing-fr.patch git apply ../iotg-yocto-ese-main/backports/dunfell/recipes-connectivity/libbpf/libbpf/0003-makefile-remove-check-for-reallocarray.patch
    17. Go to the libbpf source directory:
      cd src
    18. Make the libbpf library:
    19. Install the libbpf library and copy required headers:
      sudo checkinstall -D --pkgname=libbpf -y sudo make install_uapi_headers cd .. sudo -S cp ./include/uapi/linux/*.h /usr/include/linux/
    20. Clone the Open62541 library:
      cd ${TEMP_DIR} git clone
    21. Go to the Open62541 directory:
      cd open62541/
    22. Check out the required version of Open62541:
      git checkout a77b20ff940115266200d31d30d3290d6f2d57bd
    23. Apply the XDP patches to Open62541:
      git apply ../iotg-yocto-ese-main/recipes-connectivity/open62541/open62541-iotg/0001-CMakeLists.txt-Mark-as-IOTG-fork.patch git apply ../iotg-yocto-ese-main/recipes-connectivity/open62541/open62541-iotg/0001-fix-PubSub-Enable-dynamic-compilation-of-pubsub-exam.patch git apply ../iotg-yocto-ese-main/recipes-connectivity/open62541/open62541-iotg/0002-feature-PubSub-Use-libbpf-for-AF_XDP-receive-update-.patch git apply ../iotg-yocto-ese-main/recipes-connectivity/open62541/open62541-iotg/0003-feature-PubSub-add-support-for-AF_XDP-transmission.patch git apply ../iotg-yocto-ese-main/recipes-connectivity/open62541/open62541-iotg/0004-fix-PubSub-XDP-dynamic-compilation.patch git apply ../iotg-yocto-ese-main/recipes-connectivity/open62541/open62541-iotg/0005-fix-PubSub-update-example-to-set-XDP-queue-flags.patch git apply ../iotg-yocto-ese-main/recipes-connectivity/open62541/open62541-iotg/0006-test-PubSub-Configuration-used-for-compile-test.patch git apply ../iotg-yocto-ese-main/recipes-connectivity/open62541/open62541-iotg/0007-feature-PubSub-Add-ETF-LaunchTime-support-for-XDP-tr.patch git apply ../iotg-yocto-ese-main/recipes-connectivity/open62541/open62541-iotg/0008-fix-PubSub-AF_XDP-RX-release-mechanism-AF_PACKET-com.patch git apply ../iotg-yocto-ese-main/recipes-connectivity/open62541/open62541-iotg/0009-fix-PubSub-Fix-ETF-XDP-plugin-buffer-overflow.patch git apply ../iotg-yocto-ese-main/recipes-connectivity/open62541/open62541-iotg/0010-fix-PubSub-xdp-socket-cleanup-routine.patch git apply ../iotg-yocto-ese-main/recipes-connectivity/open62541/open62541-iotg/0011-fix-PubSub-fix-null-checking-possible-memleak-klocwo.patch git apply ../iotg-yocto-ese-main/recipes-connectivity/open62541/open62541-iotg/0012-fix-PubSub-remove-hardcoded-etf-layer-receive-timeou.patch
    24. Create the build directory and go to the build directory:
      mkdir build && cd build
    25. Build open62541:
    26. Install the Open62541 library:
      sudo checkinstall -D --pkgname=open62541-iotg -y
  6. Set permissions for the tools directory:
    chmod 0776 -R ${TCC_TOOLS_PATH}

Product and Performance Information


Performance varies by use, configuration and other factors. Learn more at