Skip to content

Why has DisplayLink not released source code for the Linux DisplayLink Manager?

This question is asked a lot. To support Ubuntu, DisplayLink has developed an open-source kernel module and a library that applications like DisplayLink Manager can use to manage extra screens in Linux. The source code can be obtained from company's GitHub. However, the code of the supporting application, known as DisplayLink Manager, was only released as binary for Intel-based platforms.

To explain what DisplayLink Manager is, it's good to understand its history first. The application was, and is, a crucial part of DisplayLink's software stack that is used to manage all devices the company created so far. What's important, vast majority of the application's code is in fact reused on every operating system we support, meaning that it's also used in our drivers for Windows, macOS, Android, Chrome OS etc.

The responsibilities of the application include detecting compatible devices, opening communication channels to its interfaces, maintaining a mapping between sources of pixels (specific to the current environment) and sinks which are used to send data to devices.

In a way, if we use GStreamer analogy, majority what DLM does could be described using chain of plugins. Firstly, a source plugin that accepts input in a standard image format (for example, as raw pixel data), which on Linux can be received from evdi. As more input plugins can co-exist, they are then multiplexed and the resulting stream is connected to a transform plugin which does all operations required by our proprietary adaptive graphics technology called DL3 - this block in fact has more inputs than just the screen data. The transformed, compressed stream is then directed to an output sink plugin that writes to any standard network interface. This again could be tailored to meet the specific needs of a communication channel, e.g. USB, but other variants of network interfaces could also be used.

Having said that, we are doing what we can to address problems in the closed-source application as quickly as possible. Sadly, root causes of most issues people see with Ubuntu driver are outside the closed source client. Most of the time, they can also be reproduced with any multi-monitor setup (e.g. directly connected to a port of GPU), with another multi-GPU setup – e.g. fully open source UDL driver that supports DisplayLink USB 2.0 era devices and was developed by community based on the reference libdlo library DL released sources of few years ago or evdipp, a very simple example of how to write a complete client for evdi/libevdi.

Feedback and Knowledge Base