DisplayLink Ubuntu driver after recent X upgrades does not work with Intel GPUs

Symptoms


On systems which use Intel graphics, upgrading the X Window Server to a version newer than 1.18.3 will make the system not compatible with DisplayLink Ubuntu software by default. This applies to systems using an integrated Intel GPU, or a combination of integrated Intel GPU and a discrete GPU.

On affected platforms, some or all of the following issues can be observed:
  • DisplayLink screens remain blank
  • DisplayLink screens freeze
  • DisplayLink screen or system screen drops to a low resolution (or system switches to low graphics mode)
  • System freezes completely

Workaround 1: Use older intel driver as a fallback


A workaround that has been proven to help on most Ubuntu 17.04 systems and some late 16.04 updates is to use the "intel" driver for the integrated GPU instead of "modesetting", which is now the default.

To do this, as a root user create a file 20-displaylink.conf under:

/usr/share/X11/xorg.conf.d/

with the following content:

Section "Device"
  Identifier "Intel Graphics"
  Driver "intel"
EndSection

A reboot is required for the setting to be effective.

Workaround 2: Temporarily disable PageFlip for modesetting


For users that prefer to keep using "modesetting" driver, disabling page flipping should also help. To do this, create the configuration file with the following content instead:

Section "Device"
  Driver "modesetting"
  Option "PageFlip" "false"
EndSection

Technical details


Root cause for these problems have been identified as a result of the recent changes in X.org window system, which do not work with evdi correctly out of the box.

Modesetting driver assumes page flips are not supported by devices using USB transport (e.g. udl - an opensource inbox driver for DisplayLink DL2 devices). However, evdi being a platform device, is not detected correctly by the logic in modesetting, and as a result page flipping is enabled for its screens.

Unfortunately, other parts of X are not yet ready to do page flip on PRIME slave outputs - c.f. the code in present:

These areas were changed just before releasing X from 1.18 and 1.19 branches - and the area is still being actively modified.
Page flipping is again allowed on PRIME slave outputs on trunk (not yet released) version of X.

Feedback and Knowledge Base