Hardware Acceleration for Linux endpoints with AMD GPUs

Starting from version 2.5, HDX RTME supports hardware acceleration for video compression on Linux thin clients or fat clients with AMD GPU. Specifically, for video encoding RTME uses VCE 2.0 or higher. Video decoding has limited support because of some technical limitations, and it is disabled in RTME by default.

OMX IL is used for offload video processing to GPU.

Hardware video encoding on Linux could be disabled by registry key DisableOnboardHardwareH264Encoding (DWORD value 1-disabled or 0-enabled by default) in HKEY_CURRENT_USERSoftwareCitrixHDXRTConnectorMediaEngine

Ubuntu 16.04 environment set-up

Install AMD driver stack from https://www.amd.com/en/support/kb/faq/amdgpu-installation

Install kernel (example command line, latest available version should be used):

sudo dpkg -i linux-image-4.4.11-289-amd+_4.4.11-289-amd+-10.00.Custom_amd64.deb linux-headers-4.4.11-289-amd+_4.4.11-289-amd+-10.00.Custom_amd64.deb

sudo reboot

Install userspace:

Create local repository as it is described in amdgpu_UserGuide.pdf or proceed manually with dpkg.


To verify available package versions:

apt-cache policy <package name>

To overwrite ‘man’ or header files:

-o Dpkg::Options::=”–force-overwrite” (apt-get)

–force-overwrite (dpkg)

In case of unmet dependencies, you can resolve them by installing strictly with dpkg -i, pulling needed packages alongside.

During these steps, please, prefer packages from AMD driver stack. For isntance you may install “llvm-5.0-dev=5.0-519”, while “llvm-5.0-dev” will set up the latest Ubuntu package.

libllvm5.0 llvm-5.0-dev llvm-5.0-runtime llvm-5.0

llvm-runtime llvm-dev llvm

libdrm-dev libdrm-amdgpu1 libdrm-radeon1 libdrm2

libdrm-dev libdrm-amdgpu1 libdrm-radeon1 libdrm2

libva-dev libva1 libva-drm1 libva-egl1 libva-glx1 libva-tpi1 libva-wayland1 libva-x11-1 vainfo apt-cache policy libva-dev libva1 libva-drm1 libva-egl1 libva-glx1 libva-tpi1 libva-wayland1 libva-x11-1 vainfo

libegl1-mesa-dev libegl1-mesa-drivers libegl1-mesa libgbm-dev libgbm1 libgl1-mesa-dev libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa libgles1-mesa-dev libgles1-mesa libgles2-mesa-dev libgles2-mesa libosmesa6-dev libosmesa6 libwayland-egl1-mesa libxatracker-dev libxatracker2 mesa-common-dev mesa-omx-drivers mesa-vdpau-drivers

gst-omx xserver-xorg-video-amdgpu

Install bellagio:

libomxil-bellagio0 (Generic core OMXIL implementation)

libomxil-bellagio-bin (to register available OMX components)

Register these components run omxregister-bellagio (from libomxil-bellagio-bin) with the noted above path.

  • Run omxregister-bellagio -l and you should get the following output:
  • *********************************
  • * List of registered components *
  • *********************************
  • Component OMX.mesa.video_decoder
  • supported formats:
  • OMX.mesa.video_decoder.mpeg2
  • OMX.mesa.video_decoder.avc
  • Component OMX.mesa.video_encoder
  • supported formats:
  • OMX.mesa.video_encoder.avc
  • Installed components and a path to the library are stored in an OMX registry file:
  • $ cat ~/.omxregister
  • /usr/lib/libomxil-bellagio0/libomx_mesa.so
  • ==> OMX.mesa.video_decoder ==> OMX.mesa.video_decoder.mpeg2:OMX.mesa.video_decoder.avc:
  • ==> OMX.mesa.video_encoder ==> OMX.mesa.video_encoder.avc:

Driver requirements:

These are described in AMD’s site https://www.amd.com/en/support/kb/faq/amdgpu-installation

RTME uses OMX API for video encoding and decoding.

This API is implemented by Bellagio OpenMAX IL (libomxil-bellagio0 and libomxil-bellagio-bin).

Hardware requirements: AMD GPU with VCE 2.0 or above. Specifically, Citrix is using Mullins and Carrizo.

Known limitations:

video encoding is supported on Mullins series only. Carrizo series were tested too, but problems were found with unstable video bitrate. As a result, a stream was encoded with poor quality.

video decoding is disabled by default, and could be enabled from registry on VDA. It was done because HW decoder introduces high latency up to 500ms.

It was found that described limitations became visible only on Linux platforms. The same GPU works great on Windows endpoints.


REST API 401 User Not Authorized

I need a solution

I have been able to connect to my SEPM API using Postman, however when I try to access anything else I get this error:

  "errorCode": "401",
  "appErrorCode": "",
  "errorMessage": "The user is not authorized to access this resource"

I am using a full admin account to access the API. 

I have looked at this documentation:

I cannot find anywhere to give a user permission to access specific APIs. Is there a setting in the SEP Management Console that I’m missing?



Collect information to generate Full report (Network Threat Protection)

I need a solution


I am new and I have started using the SEPM API 14.2 to collect information and generate reports. So far, I have been able to collect enough information to generate a Computer Status Report.

My next step is to generate a report using the information for the Network Threat Protection – Full Report. However, I cannot get the information I need.

Using the following API:


I am able to collect some basic information but not all I need (attack, severity, etc) and only at a very high level aggregation – I need the information for each Group Id or host.

I am wondering if it is possible to get the information using the SEPM API or if there is any other way to get it from an API.




SD Times news digest: Dynamic Web TWAIN version 15, a Python extension for Visual Studio …

Dynamsoft introduced version 15 of its Dynamic Web TWAIN document scanning SDK, adding a faster way to initiate job scans and functionalities for Windows and macOS, according to the company.

Dynamsoft explained the process for scanning and uploading data is faster now that the SDK accepts a JSON object that specifies all of the scan parameters. Developers can add output parameters in the JSON object to specify how they want the data to be processes.

The new version of the SDK also improves performance by allowing two operations to run simultaneously, whether it’s ConvertToBlob, ConvertToBase64, GenerateURLForUploadedData and a few HTTP upload methods, according to the Dynamsoft. The update also includes better image encoding and decoding for macOS and 64bit as the new default option on 64-bit machines.

Python extension for Visual Studio Code is now available

Microsoft introduced the June 2019 Python Extension for Visual Studio Code, which includes a new Plot Viewer, parallel tests with pytest and indentation of run selection in the terminal.

The new Plot Viewer allows users to manipulate any image plots and export plots to PDF, SVG or PNG formats. Also new to Visual Studio Code is the ability to execute run and debug tests in parallel.

Microsoft has fixed bugs requested by users and added small enhancements such as allowing a password for remote authentication with jupyter and support for sub processes debugging. The full list can be viewed here.

Hyperledger Transact joins the Hyperledger initiative

Hyperledger released Transact, a shared software library that handles the execution of smart contracts, adding it to the Hyperledger Initiative.

Smart contracts are a building block of distributed ledgers, in which transaction represent the intended change submitted by a user that is then interpreted by the smart contracts, Hyperledger explained.

Transact introduces transaction execution adapters that allow different mechanisms of execution, serial and parallel transaction scheduling, pluggable state backends and SDK’s for multiple languages. The full list of features can be viewed here.

eBay introduces new APIs for developers

eBay introduced new payments API capabilities designed to give developers access to eBay’s new managed payments program, which include finance, account, fulfillment and recommendation APIs.

Additional APIs include login with eBay, volume pricing in marketing, offers to buyers in the negotiation API and support in the Inventory API and Merchant Integration Platform feed solution. The detailed list of APIs can be found here.

“Our goal is to empower developers, enhance the ecosystem of eBay applications, and add value for our buyers and sellers,” eBay wrote.


Rest API to create multiple resources

I opened a ticket for this, but perhaps someone already tried this before and can cut down the waiting line…

I’m in phase where I’m exploring and documenting Rest API usage… I kind of like it even though for normal human usage nsradmin is still your best friend. Still, I can see where Rest API would be better fit, especially when integrating with other platforms without any specific parts of NW package to be available.

One thing where I found myself stuck is handling multiple resources (if you wish to create it via POST). Consider following body:


“protectionGroups”: [


“comment”: “Backup group via RestAPI one”,

“name”: “RestAPIb”,

“workItemType”: “Client”,

“workItems”: []



“comment”: “Backup group via RestAPI two”,

“name”: “RestAPIc”,

“workItemType”: “Client”,

“workItems”: []




That doesn’t work for me, but error I get seems to suggest some kind of syntax error (or this simply not being supported in the first place). I can easily create one resource or have two calls for each resource too, but would prefer if I could use single call for multiple resources when building requests for the same type of resources.


DLP 12.5 – Unable to start Aggregator

I need a solution

I am currently having an issue that my Endpoint server is not able to start up properly.

In fact, it is stuck at “starting”.

The only message in the console is:

Code  1012
Summary  “Unable to start Aggregator
Detail  Cannot bind to the shutdown datagram socket. Will retry.

In the Aggregator.log, I can only see this as well in terms of errors:

“Oct 9, 2018 8:19:49 PM com.vontu.logging.LocalLogWriter write
SEVERE: “Unable to start Aggregator. Cannot bind to the shutdown datagram socket. Will retry.”

Besides, there are only INFO level entries in this logfile.
I can restart as many times I want, no change.

Unfortunately, I am out of ideas.
Any input or help appreciated.



Can not create new widget – last scan date

I need a solution

Every time I try to create any new widget I get: 

failure message: {“data”:{“errorCode”:761,”message”:”Unable to create new widget.”,”data”:{}}}

All I want is a widget that shows last scan date.  Other info might be useful too, but I can’t create ANY widgets.


– cjm