Troubleshooting

Troubleshooting problems with the production setup

If you have problems running the Agile Live components, check this troubleshooting guide for some common underlying reasons and proposed steps to diagnose and solve them. If your problem isn’t mentioned here or you have a different fix to contribute please contact Agile Content support about including it here.

Ingest

Intel encoder problems

While the Ingest supports both Intel and NVidia GPU-based encoding of video streams depending on available hardware and drivers, for full functionality (e.g. the ability to save thumbnail images) the Intel encoder must be functional. Use this guide to check what’s wrong with the current setup.

Intel processor too old

If the Intel processor is too old the hardware will not support all required GPU features. It is required that you have at least a 6th Generation (Skylake) processor. You can check the model name with (one listing per core):

cat /proc/cpuinfo | grep "model name"

The marketing name of the microarchitecture can be found with:

cat /sys/devices/cpu/caps/pmu_name

You can use this name and the model number to find out more details about your processor capabilities by consulting e.g. https://en.wikipedia.org/wiki/List_of_Intel_CPU_microarchitectures

Intel GPU is not found

First, check that the Intel GPU is actually mapped to device handle /dev/dri/renderD128. A common problem when running systems with both Intel GPU and Nvidia GPU is that the Nvidia GPU will map to /dev/dri/renderD128 and the Intel GPU to /dev/dri/renderD129. The underlying libraries used by Agile Live is however hardcoded to use the Intel GPU via /dev/dri/renderD128. Check this by running:

sudo cat /sys/kernel/debug/dri/128/name

This should output a line starting with i915 if the Intel GPU is mapped to that device handle. In case the line starts with nvidia-drm, the Nvidia card is the primary GPU. Also check that the device renderD129 is present in that case:

sudo cat /sys/kernel/debug/dri/129/name

In case this returns a string starting with i915 the priority order of the GPUs are the wrong way around. In case there is no renderD129 device at all, the Intel GPU is likely disabled in BIOS/UEFI.

To swap the priority order of the devices and/or enable the Intel GPU, check your BIOS/UEFI settings and see if you can change your primary graphics adapter from “PCI Express” to “Onboard” (i.e. the Intel processor rather than a separate graphics card), or enable “Integrated Graphics” or similar (appearance of the setting varies depending on your motherboard manufacturer), and reboot.

Intel driver not active

In case the Intel GPU is mapped to device renderD128, check what display drivers are active on the system. An easy way to check is to install the pciutils package and check with the following command:

lspci -k | grep -EA3 'VGA|3D|Display'

You should see at least one VGA compatible controller listed, described as “Intel Corporation” followed by the model name of the integrated GPU. The listed kernel driver in use should be i915. If you have an NVidia card installed it may be selected as the primary and only active device.

You can also check that LibVA finds the Intel GPU by using the utility application vainfo. Install it using sudo apt install vainfo. When running the program, it should output something like this in case it successfully finds the Intel GPU:

$ vainfo
error: can't connect to X server!
libva info: VA-API version 1.13.0
libva info: User environment variable requested driver 'iHD'
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_13
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.13 (libva 2.12.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 21.4.1 (be92568)
vainfo: Supported profile and entrypoints
      VAProfileNone                   :	VAEntrypointVideoProc
      VAProfileNone                   :	VAEntrypointStats
      VAProfileMPEG2Simple            :	VAEntrypointVLD
....
(long list of entrypoints)

Note that the X server error message is nothing to be worried about, as this just means you have no screen connected to the machine.

In case LibVA found the driver, but could not communicate with the Intel GPU because the Nvidia GPU is mapped to renderD128 as described in the previous section, the output will look something like this:

$ vainfo
error: can't connect to X server!
libva info: VA-API version 1.14.0
libva info: User environment variable requested driver 'iHD'
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_14
DRM_IOCTL_I915_GEM_APERTURE failed: Invalid argument
Assuming 131072kB available aperture size.
May lead to reduced performance or incorrect rendering.
get chip id failed: -1 [22]
param: 4, val: 0
libva error: /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so init failed
libva info: va_openDriver() returns 18
vaInitialize failed with error code 18 (invalid parameter),exit

Here LibVA reported it finds the Intel iHD driver, but it cannot communicate with the GPU chip (as it is a Nvidia GPU mapped to renderD128, The integrated Intel GPU was disabled in BIOS/UEFI in this case). See the previous section on how to solve this.

In case vainfo does not report iHD as the User environment variable requested driver, or cannot find iHD_drv_video.so check that the following libva environment variables are set correctly (you should have them in /etc/environment):

LIBVA_DRIVERS_PATH=/usr/lib/x86_64-linux-gnu/dri
LIBVA_DRIVER_NAME=iHD

In case they are missing, double check your oneVPL installation in the next section.

oneVPL not installed or setup correctly for the current user

In case LibVA finds the driver and can communicate with the Intel GPU, check that oneVPL was correctly installed as per the instructions at https://docs.agilecontent.com/docs/acl/installation/#onevpl. You can see if you have version 2022.1.0 or later installed (latest should be a symlink to the used version) with:

ls -la /opt/intel/oneapi/vpl

In case the oneVPL library was installed by another user, the problem likely lies in the configuration for the current user. The user running the ingest binary must be in the groups video and render to be able to use the Intel encoder. Check what groups your user belongs to with:

groups

If video and render are not both in the listed groups, add them with:

sudo usermod -aG video,render ${USER}

Finally, a number of oneAPI environment variables must be set in the shell from which the Ingest application is started, otherwise it will not be able to find the runtime library (libvpl.so) when trying to use the encoder in the Ingest. This is typically done by adding the following line to your ~/.bashrc file:

source /opt/intel/oneapi/setvars.sh > /dev/null